Distributed Computing

Distributed Computing

We have all heard of distributed computing and assumed how it may be working, let us break it down and understand its fundamentals, Why do we need it?

A collection of an independent system that appears to be working as a single coherent system. In a distributed system the hardware and software of network components communicate and coordinate only by passing messages.

It is a computing platform built with many computers that :

  • Communicate/Coordinate through message sharing,

  • Operates Concurrently

  • Have different Clocks

  • Are linked by a network

  • Are physically distributed

Characteristics of Distributed systems

  • Concurrent execution :

    • Concurrent execution is a characteristic of distributed systems that refers to the ability of multiple processes to execute simultaneously. In a distributed system, multiple processes can run independently and in parallel, allowing for greater efficiency and performance.
  • No global clock :

    • no single global notion of the correct time, without a global clock, each node maintains its local clock, which may drift away from the actual time due to hardware or software inaccuracies. To ensure that the nodes in the system coordinate correctly, they need to exchange messages and agree on a common time.
  • No global state :

    • without a global state, coordination between processes is achieved through message exchange, where each process communicates its local state to other processes and updates its state based on information received from other processes.
  • Units may fail independently :

    • Network partition may happen, so some machines may fail, but the system will keep working.

Now we have a basic idea of how these systems are different from our traditional systems.

Distributed Systems vs Parallel system

  • In parallel systems, multiple processors share the same memory, which allows for direct and fast communication between processors. This makes parallel systems well-suited for tasks that require a large amount of computation, such as scientific simulations, or for processing large amounts of data in parallel, such as in data analysis and machine learning.

  • In contrast, distributed systems consist of multiple processors that do not share memory. Instead, they communicate with each other by exchanging messages over a network. This allows for greater scalability and the ability to spread work across multiple nodes, making it well-suited for tasks that require the coordination of many processes, such as in cloud computing, online services, and other large-scale systems.

While parallel systems and distributed systems share some similarities, there are also important differences in terms of the challenges they face and the algorithms and techniques used to address those challenges. For example, parallel systems often face challenges related to loading balancing and efficient communication, while distributed systems must address issues related to consistency, fault tolerance, and coordination.

Why do we need distributed systems?

  • Hardware needs to be close to the users for faster access: With the growth of the Internet and the increasing demand for online services, it is becoming increasingly important to ensure that hardware is physically close to the users who need to access it. This helps to reduce latency, increase reliability, and improve the overall user experience.

  • People are distributed but need to work together: In today's globalized world, teams of people are often spread out across different locations, making it difficult to work together in a coordinated and efficient manner. Distributed systems allow people to collaborate and work together, regardless of where they are located, by providing a platform for communication, coordination, and information sharing.

  • Information is distributed but needs to be shared: The growing volume of data generated by individuals and organizations makes it increasingly difficult to store and manage that data in a centralized manner. Distributed systems provide a platform for sharing and distributing data across multiple nodes, making it easier to store and manage large amounts of data.

  • Hardware can be shared, increasing the computation power by executing processes in parallel, and more efficient resource utilization: By sharing hardware resources, distributed systems can make more efficient use of existing resources, reduce costs, and increase the overall computational power of the system. By executing processes in parallel, it is possible to achieve higher levels of performance and scalability, making it easier to handle large amounts of data and complex computations.

Overall, distributed systems provide a platform for solving complex problems by bringing together people, data, and hardware resources in a coordinated and efficient manner. They are an essential component of modern computing and are used in a wide range of applications and industries.

Now, I think you got a basic idea of distributed computing. If you want to know further about any term mentioned, please let me know in the comments.

Next, we will be talking about distributed databases, and how they work. Do follow if you like this type of content.

Also do go through with other articles at: architecting-systems.hashnode.dev

Thanks for reading : )

Did you find this article valuable?

Support Architecting-Systems by becoming a sponsor. Any amount is appreciated!