Distributed Systems and why are they so important?

·

3 min read

Do you ever wonder how modern-day websites and applications handle so many users? You watch a game, especially India Vs Pakistan, on Hotstar, where the count of users is more than 10 million. It sounds very intriguing and astonishing at the same time. How can this be achieved with so much perfection, without any lag, and with supreme quality? All thanks to Distributed Systems.

Let’s consider an example of a restaurant with an app where customers can order food. The restaurant has sufficient staff and resources to fulfil customers' needs. As time passes, the popularity of restaurant increases and the number of orders increases proportionally. Orders, even from far away within the city, come into the picture. Can you figure out the problems that the restaurant is going to face?

Firstly there is only a single branch of the restaurant? There are limits to how many orders can a single restaurant fulfil. What if staff decide to take a leave and there is a scarcity of manpower? What if the particular branch faces some legal issue which forces it to get close? Also if orders come from far away, how will you guarantee to deliver them on time?

Here comes the concept of Distributed Systems. Instead of opening only one branch of that restaurant, you can open multiple branches in the city. Even if you face some issues with a particular branch, there are other branches to fulfil customers' needs. You can delegate a particular order using specific algorithms used by the Load Balancer to balance the load between the branches. For example, let’s consider an algorithm. After receiving an order from a customer, your load balancer first checks the nearest branch. If the nearest branch has a lot of waiting time, the load balancer searches for the second nearest branch and thus gives you the most optimal choice. This is how you fulfil the ever-increasing demands. You no longer depend on a single system. Hence, there is no single point of failure.

So basically, a distributed system is a group of independent software components or devices that operate together to provide a unified system to the end user. Studying Distributed is essential to make systems that are fault-tolerant, scalable, and are lag free. A distributed system’s performance may be measured using two standard parameters:
1) Latency or reaction time, which defines the time it takes to receive a response to an initial request.
2) Throughput, which refers to the number of requests serviced in a particular amount of time.

Different kinds of Distributed Systems:

Client-Server Architecture: This category includes the majority of traditional architecture. There is a server to which all client queries are directed.

Three-Tier: In this design, a central server administers all requests and services and serves as a communication intermediary. The intermediate tier takes the request, pre-processes it, and sends it to the server for further processing.

Multi-Tier: This architecture is utilised when an application has to route requests to several network services. The application servers here interact with both the display and data levels.

Peer-to-Peer: This design does not require any centralised computers. Each entity acts as an autonomous server and fulfils its functions. Responsibilities are split across several servers, known as peers, who work together to achieve a similar goal.

Distributed systems have enabled us to achieve technological advancements which were beyond ones understanding a few years back. It is used everywhere to scale and make systems more resilient and reliable.

Hope you learned about Distributed Systems! Thank you!