Week 1
Week 1
Week 1
Conclusion:
Distributed systems are becoming increasingly popular due to their high availability, scalability,
and fault tolerance. However, they also present some challenges that must be addressed. By
understanding the characteristics and challenges of distributed systems, developers can design
and implement effective distributed systems that meet the needs of their users.
i) Layered architecture
Layered architecture provides a modular approach to software. Separating each component is
more efficient. For example, the open systems interconnection (OSI) model uses a layered
architecture for better results. It does this by contacting layers in sequence, which allows it to
reach its goal. In some instances, the implementation of layered architecture is in cross-layer
coordination. Under cross-layer, the interactions can skip any adjacent layer until it fulfills the
request and provides better performance results.
Layered Architecture
Layered architecture is a type of software that separates components into units. A request goes
from the top down, and the response goes from the bottom up. The advantage of layered
architecture is that it keeps things orderly and modifies each layer independently without
affecting the rest of the system.
At its core, communication between objects happens through method invocations, often called
remote procedure calls (RPC). Popular RPC systems include Java RMI Web Services and REST
API Calls. The primary design consideration of these architectures is that they are less structured.
Here, component equals object, and connector equals RPC or RMI.
All communication between objects happens through a data storage system in a data-centered
system. It supports its stores’ components with a persistent storage space such as an SQL
database, and the system stores all the nodes in this data storage.
One significant advantage of event-based architecture is that the components are loosely
coupled. Eventually, it means that it’s easy to add, remove, and modify them. To better
understand this, think of publisher-subscriber systems, enterprise services buses, or akka.io. One
advantage of event-based architecture is allowing heterogeneous components to communicate
with the bus, regardless of their communication protocols.
2. System architecture
System-level architecture focuses on the entire system and the placement of components of a
distributed system across multiple machines. The client-server architecture and peer-to-peer
architecture are the two major system-level architectures that hold significance today. An
example would be an e-commerce system that contains a service layer, a database, and a web
front.
i) Client-server architecture
As the name suggests, client-server architecture consists of a client and a server. The server is
where all the work processes are, while the client is where the user interacts with the service and
other resources (remote server). The client can then request from the server, and the server will
respond accordingly. Typically, only one server handles the remote side; however, using
multiple servers ensures total safety.
The client-server architecture is the most common distributed system architecture which
decomposes the system into two major subsystems or logical processes −
Client − This is the first process that issues a request to the second process i.e. the server.
Server − This is the second process that receives the request, carries it out, and sends a
reply to the client.
In this architecture, the application is modeled as a set of services that are provided by servers
and a set of clients that use these services. The servers need not know about clients, but the
clients must know the identity of servers, and the mapping of processors to processes is not
necessarily 1:1
Client-server Architecture
Client-server architecture has one standard design feature: centralized security. Data such as
usernames and passwords are stored in a secure database for any server user to have access to
this information. This makes it more stable and secure than peer-to-peer. This stability comes
from client-server architecture, where the security database can allow resource usage in a more
meaningful way. The system is much more stable and secure, even though it isn’t as fast as a
server. The disadvantages of a distributed system are its single point of failure and not being as
scalable as a server.
Client-server Architecture can be classified into two models based on the functionality of the
client –
Thin-client model
In the thin-client model, all the application processing and data management is carried out by the
server. The client is simply responsible for running the presentation software.
Used when legacy systems are migrated to client-server architectures in which the legacy
system acts as a server in its own right with a graphical interface implemented on a client
A major disadvantage is that it places a heavy processing load on both the server and the
network.
Thick/Fat-client model
In the thick-client model, the server is only in charge of data management. The software on the
client implements the application logic and the interactions with the system user.
Most appropriate for new C/S systems where the capabilities of the client system are
known in advance
More complex than a thin client model especially for management. New versions of the
application have to be installed on all clients.
Advantages
Separation of responsibilities such as user interface presentation and business logic
processing.
Reusability of server components and potential for concurrency
Simplifies the design and the development of distributed applications
It makes it easy to migrate or integrate existing applications into a distributed
environment.
It also makes effective use of resources when a large number of clients are accessing a
high-performance server.
Disadvantages
Lack of heterogeneous infrastructure to deal with the requirement changes.
Security complications.
Limited server availability and reliability.
Limited testability and scalability.
Fat clients with presentation and business logic together.
Peer-to-Peer Architecture
If a new node wishes to provide services, it can do so in two ways. One way is to register with a
centralized lookup server, which will then direct the node to the service provider. The other way
is for the node to broadcast its service request to every other node in the network, and whichever
node responds will provide the requested service.
2. Secondary controller
The secondary controller is a process controller or a communications controller. It’s responsible
for regulating the flow of server processing requests and managing the system’s translation load.
It also governs communication between the system and VANs or trading partners.
3. User-interface client
The user interface client is an additional element in the system that provides users with important
system information. This is not a part of the clustered environment, and it does not operate on the
same machines as the controller. It provides functions that are necessary to monitor and control
the system.
4. System datastore
Each system has only one data store for all shared data. The data store is usually on the disk
vault, whether clustered or not. For non-clustered systems, this can be on one machine or
distributed across several devices, but all of these computers must have access to this data store.
5. Database
In a distributed system, a relational database stores all data. Once the data store locates the data,
it shares it with multiple users. Relational databases can be found in all data systems and allow
multiple users to use the same information simultaneously.
1. Networks
The 1970s saw the invention of Ethernet and LAN (local area networks), which enabled
computers to connect in the same area. Peer-to-peer networks developed, and e-mail and the
internet continue to be the biggest examples of distributed systems.
2. Telecommunication networks
Telephone and cellular networks are other examples of peer-to-peer networks. Telephone
networks started as an early example of distributed communication, and cellular networks are
also a form of distributed communication systems. With the implementation of Voice over
Internet (VoIP) communication systems, they grow more complex as distributed communication
networks.
3. Real-time systems
Real-time systems are not limited to specific industries. These systems can be used and seen
throughout the world in the airline, ride-sharing, logistics, financial trading, massively
multiplayer online games (MMOGs), and e-commerce industries. The focus in such systems is
on the correspondence and processing of information with the need to convey data promptly to a
huge number of users who have an expressed interest in such data.
4. Parallel processors
Parallel computing splits specific tasks among multiple processors. This, in turn, creates pieces
to put together and form an extensive computational task. Previously, parallel computing only
focused on running software on multiple threads or processors accessing the same data and
memory. As operating systems became more prevalent, they too fell into the category of parallel
processing.
Adding new nodes and locations makes it easier to control and scale performance. On the other
hand, multiple data models and database management systems are possible with heterogeneous
distributed databases. Gateways are used to translate data across nodes and are typically created
due to the merger of two or more applications or systems.
Takeaway
Distributed systems are the most significant benefactor behind modern computing systems due to
their capability of providing scalable and improved performance. Distributed systems are an
essential component of wireless networks, cloud computing, and the Internet. Since they can
draw on the resources of other devices and processes, distributed systems offer some features
that would be hard or even impossible to develop on a singular system and have become
immensely reliable by combining the power of multiple machines.