How do components communicate seamlessly or entities communicate with each other repeatedly over a network?
There are many components tightly integrated into modern computing, which creates complex, intricate systems. Take computer networks, for example—they're like a group of devices that team up and work together. A computer network consists of interconnected devices that are capable of collaboration; however, network servers can be complex.
This is why distributed systems architecture addresses and tackles the challenges amongst components across a network by employing mechanisms and architectural principles that ensure effective communication between these components.
Let’s go through a brief definition of distributed systems before we dive into the distributed systems architecture.
What is a Distributed System?
Distributed systems are defined as collections of multiple computers working on various tasks across a network to function as a unified whole. A distributed system state is divided across multiple computers, which is the opposite of a centralized state, whose state is stored on a single computer. For example, if you store a document in cloud-based storage that allows users to store files across multiple devices, when something happens to your laptop, you can always have access to the file anytime and anywhere. When a system is designed to isolate faults, recover from system failures, or process data simultaneously through multiple processors, it increases performance and is reliable.
Examples of distributed systems include;
DNS (Domain name system)
Google
Meta
Email Servers (SMTP)
Importance of Distributed Systems
Scalability: Distributed systems can handle multiple and large workloads.
Reduced Latency: By spreading the network load across multiple nodes or servers, distributing systems ensure no server or node is overwhelmed with traffic.
Security: Security safeguards can prevent illegal access and data breaches.
Robust Nature: Distributed systems can tolerate external failures or disruptions.
Resource Sharing: Computing resources, whether hardware, software, or data - can be shared or made available to multiple users or applications.
Concurrency: Several machines have the capacity to process the same function at the same time.
Decentralization: Distributed systems doesn’t depend on one point of control, therefore, fault tolerance is improved.
Disadvantages of Distributed Systems
Network Failure: Network failure can occur due to certain conditions.
Security Risk: Because data is distributed across multiple nodes (computing devices involved in a system) that communicate with each other and are open to sharing resources, this can make the system more vulnerable to cyber-attacks.
Cost: It’s expensive to setup and maintain distributed systems which may include; hardware, software and network infrastructure.
Complex Nature: Distributed systems are complex to setup, manage and maintain.
What is Distributed Architecture?
Distributed systems architecture is a representation of a system or the design and structure of a system, which includes components that can communicate and collaborate, distributing tasks/workload, and resources. If one computing device fails, the others can take over, ensuring continuous service. Distributed systems architecture is bound by components and connectors.
What are components and connectors?
Components can be the node(s) or units that perform specific tasks or functionalities within the distributed system. Connectors are the communication modules that handle coordination and collaboration between components.
Distributed systems architecture can be classified into;
Software Architecture: Software architecture can be defined as the placement of software components on physical machines or the organization of software components and their interaction of other structures in a system.
Systems Architecture: Systems architecture is centered on the entire system and arrangement of components in a distributed system across multiple machines.
Software Architecture:
Layered Architecture: Components are organized in a layered form. This architecture takes a modular approach, where layers of components are separated from each other. The layers at the bottom provide service to the top. The request flows from top to bottom, while the response flows from bottom to top.
Object-based Architecture: This is based on a loosely coupled arrangement of objects. The object corresponds to the defined components and is connected through RPC (Remote Procedure Call) or RMI (Remote Method Invocation), which allows distributed systems to communicate and call functionalities across different machines.
Event-based Architecture: Event-based architecture is based on events. When the event occurs, the system is notified. The components are loosely coupled, so it’s easy to add, remove, and modify components in the system.
Data-centered Architecture: Data-centered architecture is based on a data center, which is the idea that processes communicate through a common repository. e.g. database system
Hybrid Architecture: This architecture is based on an edge server system deployed on the internet where servers are placed “at the edge" of the network. The edge server serves content; it’s the origin server where all content is derived.
Systems Architecture
The system architecture could be centralized, decentralized, or hybrid. A centralized system is simply the traditional client-server structure; a decentralized system is peer-to-peer, and a hybrid is a combination of centralized and decentralized, which is client-server and peer-to-peer.
Client-Server: This architecture consists of a client and a server. The client can be a phone, and the server can be a data center. If the client wants to display a web page, it makes a request, which is sent over a network targeted at a server. The request contains the path of the URL the client wants to display, and the server responds with the content of the web page. The client-server relationship typically involves a single server; however, it involves adopting multiple servers. E.g. web browser, email, etc.
Peer-to-Peer: P2P architecture is designed so that peers share resources or services mutually without a central server. Each node in the network acts as a client and server. E.g. Skype, Google Docs, etc.
Hybrid: Combines client-server and peer-peer models to optimize performance which may include processing speed. E.g. combination of on premise database to store sensitive data and cloud based storage to store less sensitive data.
Summary
In a distributed system, multiple computing devices communicate over a network (e.g., the internet) to achieve a task together. Why is a system distributed? A few reasons why distributed system is designed include - performance, reliability, scalability, and handling of vast volumes of data.
These systems also face challenges which may include; network issues, processes running the code may crash, security risk etc.
Overall, we interact with distributed systems daily, a typical example is searching for information on Google. It appears like you’re getting the information from one source but Google goes through multiple servers or devices that store result related to your request, and displays the result to you. This may be in form of different blogs or websites. The process is seamless that you assume you’re interacting with a single entity.
Frequently Asked Questions
Is Anycast Routing suitable for small networks?
Anycast Routing can benefit small networks by improving service availability and performance. However, the decision to implement it should be based on the specific needs of the network and its applications.
How can I leverage online networking for career transitions?
For career transitions, leverage online networking by connecting with professionals in your target industry, joining relevant groups, and participating in discussions. Seek informational interviews, share your intentions, and showcase transferable skills on your profile to attract opportunities in the desired field.
Should I be concerned about online privacy while networking?
Yes, maintaining online privacy is essential. Customize privacy settings on your profiles, avoid sharing sensitive information publicly, and be cautious with the data you share. Regularly review platform policies to stay informed about privacy features and updates.
How do WebSockets handle network interruptions or reconnects?
WebSockets can handle network interruptions by implementing automatic reconnection mechanisms. Developers often use strategies like exponential backoff, which gradually increases the time between reconnection attempts. Heartbeats can also be employed to detect and handle silent disconnections.
Jessica Agorye is a developer based in Lagos, Nigeria. A witty creative with a love for life, she is dedicated to sharing insights and inspiring others through her writing. With over 5 years of writing experience, she believes that content is king.
View all posts by Jessica Agorye