Distributed Systems
Tags: middlewarearchitecture, distributedsystems, centralizedsystems
Published: 2021-07-02 04:56:28

Have you ever thought of how Facebook stores and serves thousands of petabytes of user data, which includes photos, videos, likes, and so on? This question has a solution in <b>distributed systems</b>. Now you may be wondering what a distributed system is. Don’t worry 🙂 Through this blog post, I’ll cover the majority of the aspects of distributed systems briefly, including their characteristics, drawbacks, and advantages. First, let’s take a quick look at the evolution of distributed systems.

In the 1950s and 1960s, operating systems only supported <b>single process computing</b>. A single computer could only do one task at a time. If we need to complete multiple tasks simultaneously, we will need multiple computers running in parallel. Then came time-sharing, which was enabled by multitasking operating systems. In the late 1980s, with the availability of powerful desktop computers that can be interconnected through very fast networks, centralized multi-processor parallel architectures have been progressively replaced by distributed system architectures.

<b>So, What is a Distributed System</b> 🤔

A distributed system is composed of <b>nodes</b> (computers, mobile devices, etc.) that are linked together by <b>communication links</b> (cables, Wi-Fi, etc.). The system components have been distributed over these various computers/nodes. Each node has adequate computational power to collaborate on a task. The aggregate of the decisions of the individual nodes determines the final behaviour of the system. Users have equal access to data and can enable user privileges as necessary.

Distributed systems have more than one component on more than one host. A <b>host</b> is a computer that hosts some parts of a distributed system. Therefore, a distributed system can be defined as a "<b>collection of autonomous hosts that are connected over a computer network</b>".

Following are the common characteristics of a distributed system 👇

✓ Consensus protocols are used by machines to agree on the same values/ transactions/ commands etc.
✓ Every node maintains its own time/clock.
✓ Nodes fail independently without having a significant impact on the overall system.
✓ Multiple autonomous components.
✓ It is possible to use the components solely. ( Components are not shared by all users) ✓ Parallel processes have been executed in distributed systems. (Software runs in concurrent processes on different processors)
✓ Multiple points of failure.
✓ Multiple points of control.
✓ Resources may not be accessible.

Now that we’ve gained a general idea of what a distributed system is, let’s look at its advantages and drawbacks.

<b>Advantages of Distributed Systems</b>

▪ In a distributed system, there is no central point of failure. Even if a node fails or is removed from the system, the system can still function. The fault tolerance is quite high.
▪ Since each node has considerable processing power, the workload could be divided among multiple machines. This lowers the overloading of a single machine.
▪ It enables multiple users to access a shared database while minimizing resource constraints.
▪ Distributed systems can be scaled both horizontally and vertically.
▪ We can easily add or remove nodes from a distributed system without harming overall system performance.

<b>Disadvantages of Distributed Systems</b>

▪ Distributed systems do not share a common memory or a common clock.
▪ Absence of a common (global) clock: No concept of global time.
It’s difficult to reason about the temporal ordering of events.
▪ It’s difficult to design and debug algorithms in a distributed system.
▪ Information / data may be lost in the network system due to the absence of a central server.
▪ Troubleshooting and diagnostics are more difficult based on the distribution across multiple servers.

As a conclusion, the chart below will show you how a distributed system differs from a centralized system.

![Comparison between Distributed and Centralized Systems](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmu4xrw3k643ahngkxua.JPG)

I hope this blog post has given you some knowledge into distributed systems. Your feedback is mostly appreciated. Keep reading for more posts like this 💜

<b>References</b>

[1] P. Felber, The CORBA object group service: a service approach to object groups in CORBA.
[2] W. Emmerich, Engineering distributed objects. Chichester: John Wiley & Sons, 2000.
[3] C. Britton and P. Bye, IT Architectures and Middleware: Strategies for Building Large, Integrated Systems, Second Edition. Addison-Wesley Professional, 2004.