“Distributed system” or “Distributed computing” is a system made with multiple structures that communicate with each other for their actions so that all of them look like one single coherent system to the end user. A distributed system can have computers, servers, or virtual machines. They are interconnected in a network with individual local memory. For communication, they pass messages to each other.
How does a distributed system function?
A distributed system has both hardware and software elements. Everything in the system is interconnected — CPUs via the network and processes via the communication system. And, they function as,
All the elements involved in the system work towards a common goal and the end user can view the result as one cohesive unit.
Each element has its end user. The system communicates within was others and shares resources as well.
Characteristics of a distributed system
Any distributed system has three main characteristics: -
All the elements of the system run concurrently.
The global dock doesn’t exist.
A failure of one element doesn’t affect the others, i.e., they are independent of each other despite working together.
Benefits of a distributed system
One of the main benefits of the distributed system is
horizontal scalability
. The operations or the computing happens independently on each node which makes it easy to add more nodes or functionality.The system can have hundreds of nodes which makes it fault-tolerant. There are rarely any disruptions if a single element fails. This means that distributed systems are highly
reliable
.There are multiple elements in a distributed system among which the workload can be broken up. Thus, the system becomes very
efficient
.
Challenges of a distributed system
Some of the common challenges of a distributed system are complex architectural design, construction, and debugging process. But besides them, some others can be overwhelming while creating the system.
A distributed system must look for the operations — “Which one to run?”, “When to run?”, and “Where to run?”. The
scheduling
should be effective for a smooth run, but the schedulers have limitations. This results in the under-utilization of hardware and the runtimes might be unpredictable.Latency
and the size of a distributed system is directly proportional. The larger the distributed system, the more latency experience due to communication issues. In this case, a team can trade between availability, consistency, and latency.Gathering, processing, presenting, and monitoring — all fall under
observing
the operation. However, when the cluster is large, this can lead to a problem since keeping track of the hardware usage metrics might be difficult.
Types of distributed system
Typically, there are four types of distributed systems.
1. Client—Server
In the client-server distributed system, the client approaches the server for data and formats it to display for the end user. Then, the end user makes a change from the client side and commits back to the server where it stays permanent.
2. Three-tier
There are three tiers in this system where the client information resides in the middle one. This simplifies application deployment when compared to other methods. We can see this in most web applications these days.
3. N-tier
When an application or server needs to forward the requests to additional enterprise services on the network.
4. Peer-to-peer
The last kind of distributed system is peer-to-peer where no additional elements exist for services and resource management. All the elements are peers with equal responsibility.
Conclusion
There are numerous use cases for a distributed system. The most common example of the system would be electronic banking systems and sensor networks. In addition, the multiplayer online game also falls under the category of a distributed system.
pragyaasapkota / System-Design-Concepts
A repo with some system design concepts.
System Design
Systems design is the process of defining elements of a system like modules, architecture, components and their interfaces and data for a system based on the specified requirements.
This is a index for the concepts of system.
If you wish to open these in a new tab, Press CTRL+click
S.N. | Table of Content |
---|---|
1. | Caching |
2. | Network Protocols |
3. | Storage: The Underrated Topic |
4. | Latency and Throughput |
5. | System Availability |
6. | Leader Election |
7. | Proxies |
8. | Load Balancing |
9. | Endpoint Protection |
10. | HTTPS: Is it better than HTTP? |
11. | Polling and Streaming |
12. | Long Polling |
13. | Hashing |
14. | CAP Theorem |
15. | PACELC Theorem |
16. | Messaging and Pub-Sub |
17. | Database |
18. | Logging, Monitoring, and Alerting |
19. | Distributed System |
20. | Scaling |
21. | Event Driven Architecture (EDA) |
Thank you!!!
I hope this article was helpful to you.
Please don’t forget to follow me!!!
Any kind of feedback or comment is welcome!!!
Thank you for your time and support!!!!
Keep Reading!! Keep Learning!!!
Top comments (0)