A distributed system is a network of interconnected, geographically separated autonomous computing elements which function as a single coherent system.
A distributed system consists of several computers, which can include servers, computational resources, or simple everyday usage devices such as mobile phones, PCs, IoT devices e.g. smart tv and surveillance cameras located at different places at variable distances which can communicate with each other.
Read more about what are networks to understand more about how nodes communicate. Networks and distributed systems are different because these computing elements are known as “nodes” and the mode of communication is usually wireless with the help of cloud infrastructure. The nodes have been programmed to receive and send data via the communication infrastructure, in cases they can also store data such as in distributed storage systems the nodes are storage units.
There are two types of distributed systems:
1. Homogeneous Distributed Systems:
A distributed system such that all nodes have identical hardware, the same type of architecture, and operating system.
2. Heterogeneous Distributed Systems:
A distributed system such that each node has its own operating system and machine architecture.
The communication part gets tricky because to have the nodes contribute to the functionality of a single system, there needs to be a coordination mechanism that allows individual nodes to synchronize their states. A state is the condition or status of a computational resource at a given time instance. Thus the distributed systems architecture creates a need to preserve and update states as well as communication between processes.
This poses many challenges while designing a distributed system architecture. The solution is to maintain a universal record that a node can refer to and deduce the actual global state so the node can adjust its state. This is achieved with the help of two types of clock-based implementations:
Physical clock: Uses UTC reference time clock which involves obtaining an accurate value for physical time and implementing the system such that it follows the physical time.
Logical clock: Depends upon logical consistency to maintain an understanding of the global state. This involves keeping track of sequential events where the node can determine which event occurred in which order.
More design complexities come into play when designing a real-time dependable distributed computing system architecture and like any other software, it has to have basic qualities such as scalability, reliability, security, and robustness.
Cloud infrastructure and distributed storage
This example of a distributed system involves synchronizing a global database across multiple storage servers located around the world. Each user’s data is directed to the nearest storage location, any change triggers an automatic mechanism that replicates the change in the database across other nodes.
Macrometa uses a globally distributed network with points of presence around the globe to allow faster, real-time, and low-latency processing for real-world use cases. Microsoft Azure and Google Cloud use distributed storage.
In sensor networks, nodes are multiple sensory devices that can be described as tiny computers, that collect data and use data fusion architectures to collect and process the information. Examples include satellite surveillance through imagery or radiation, automotive protection mechanisms, and flood warning systems.
Distributed systems consist of independent computation units maintaining a globally coherent system. It introduces unlimited horizontal scaling, and low latency and enhances fault tolerance in the system since there is no single point of failure.