Distributed Systems - An overview

 

What are Distributed Systems?

Distributed Systems / Distributed Computing utilize multiples ‘nodes’ (other computers) at various locations, to work on a single common program. The processes in a Distributed System are able to communicate with each other. To the end user all of this appears as one single computer.

For example, this web page being rendered on this device, for the user to read is due to Distributed Systems. This web page is originally present on the cloud. Upon request, the contents are loaded in the browser.

Why do we need Distributed Systems?

To understand why the need for Distributed Systems rose, we need to first understand what Centralized Systems are. As the name suggests, Centralized Systems are where all the computation takes place on a single central ‘node’. Processes have to connect to this ‘node’ or the central server to access data. A Centralized System works fine till the number of users accessing the central node are limited to a certain extent. Once the number of users start to grow, Centralized Systems begin to show their limitations. The response time increases for each user, bottleneck situations begin to occur, etc.

Even if we try to avoid bottleneck situations in Centralized Systems, by increasing the computational power of our central node (vertical scaling), at some point we will need a second node (horizontal scaling).

Centralized Systems also possess another flaw. The central node controls everything, and hence also becomes a point of failure. If the central node goes down, the entire network is rendered useless. The only way to avoid this issue is to store data and perform computation on other nodes too. This ensures data is available to any process that might need it.

Distributed Systems ensure better scalability, as we can horizontally scale as much as we need to. They also ensure better availability as failure of one single point does not result in the data being inaccessible to everyone. The copy of the data is stored on multiple nodes. Distributed Systems are better suited higher workload.

What are the types of Distributed Systems?

Client-Server Architecture

In this architecture, the clients request for services or data, and the server(s) provide it. The most common example of this architecture is people accessing websites. They enter the URL of the website. This URL locates the website on the internet. The DNS server responds with the IP address of the web server where this site is present. The browser sends an HTTPS request to the server. The server then sends files required to render the website on the browser.

Source : https://en.wikipedia.org/wiki/Client–server_model

Peer-to-Peer Architecture

In P2P architecture, the nodes share resources with each other without needing a central admin node. Each node is a client as well as a server. File sharing and content distribution platforms are some real world examples where this architecture is employed.

Source : https://en.wikipedia.org/wiki/Peer-to-peer

Three-Tier Architecture

Three-Tier Architecture involves structuring software into the User Interface, Application Tier, and Data Tier. The User Interface collects data from the user, displays necessary information. The Application Tier is responsible for processing of the information collected by the User Interface. The Data Tier is responsible for the storage and management of the data that the Application Tier sends or asks for. Many banking platforms use this Three-Tier Architecture.

Source : https://vfunction.com/blog/3-tier-application/

Microservices Architecture

This architecture allows a large complex program to be broken down into multiple segments, where each segment has a specific task to perform, and the segments can communicate with each other. Each of these segments can be deployed and scaled independently. An example of this type of architecture would be Netflix. They utilize the AWS microservices architecture.

Source : https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices

Issues caused by Distributed Systems:

  • Consistency: Since the data availability is high, it is harder to keep it consistent across so many nodes. It may happen that data is updated at one particular node but not on others.
  • Partitioning: The data needs to be stored at multiple locations, so it has to be partitioned and then sent. Partitioning and later combining it correctly needs complex algorithms.
  • Security: Since data is so readily available at every node, security of the data becomes even more important.

Real world examples of Distributed Systems:

  • Banks utilize Distributed Systems to provide financial services like transactions and real time data monitoring.
  • Telecommunication industry relies on Distributed Systems, to store and process the vast amount of data.
  • Scientific projects that demand high processing power like simulation of space, or protein molecules, also employ Distributed Systems.

Acknowledgements

We would like to express our gratitude to Prof. (Dr.) Sonali Antad, at Vishwakarma Institute of Technology, for their insights and mentorship throughout the study of Distributed Systems.

This blog was written by Aanya Jain, Abhijeet Bharate, Apoorv Patil, and Arpit Verma, sophomores at Vishwakarma Institute of Technology, under the guidance of our mentor, Prof. (Dr.) Sonali Antad.

References

Comments

  1. Great overview of distributed systems

    ReplyDelete
  2. Excellent overview, clear and concise. I always find distributed system impressive due to its horizontal scalability.

    ReplyDelete
  3. Great research done on distributed systems, especially its types!

    ReplyDelete
  4. Excellent work great overview.

    ReplyDelete
  5. this is really insightful! very well-explained!

    ReplyDelete
  6. Great information on Distributed Systems !

    ReplyDelete
  7. Great blog! I found the explanation of distributed systems very insightful!

    ReplyDelete
  8. Great work👍 well written and explained thoroughly. Keep up the good work.

    ReplyDelete
  9. A good thorough explanation of distributed systems. Good work and keep it up.

    ReplyDelete
  10. Very informative, explanation is very good.

    ReplyDelete
  11. You guys done great research on Distributed Systems. It's very insightful!!

    ReplyDelete
  12. Very insightful and well-explained! The breakdown of distributed systems was really easy to grasp.

    ReplyDelete

Post a Comment