A distributed system, also known as distributed computing, is a system with multiple components located on different machines that communicate and coordinate actions in order to appear as a single coherent system to the end-user.
There are two general ways that distributed systems function:
Each machine works toward a common goal and the end-user views results as one cohesive unit.
Each machine has its own end-user and the distributed system facilitates sharing resources or communication services.
There are several good technical reasons that have made distributed systems a very powerful option. Some examples:
Scalability: If your data volume, read load, or write load is too large for a single machine, you can spread the load across multiple machines.
Fault tolerance/high availability: If your application needs to keep running even if a machine crashes, you can use multiple machines to gain redundancy.
Latency: If you have users worldwide, you can have servers worldwide so that each user can be served by a nearest datacenter. This saves users from having to wait too long for packages to travel over the network.
Distributed System Architecture:
Distributed systems must have a network that connects all components (machines, hardware, or software) together so they can transfer messages to communicate with each other.
That network could be connected with an IP address or use cables or even on a circuit board.
The messages passed between machines contain forms of data that the systems want to share like databases, objects, and files.
The way the messages are communicated reliably whether it’s sent, received, acknowledged or how a node retries on failure is an important feature of a distributed system.
Distributed systems were created out of necessity as services and applications needed to scale and new machines needed to be added and managed. In the design of distributed systems, the major trade-off to consider is complexity vs performance.
Types of Distributed System Architectures
Three-tier: In this architecture, the clients no longer need to be intelligent and can rely on a middle tier to do the processing and decision making. Most of the first web applications fall under this category. The middle tier could be called an agent that receives requests from clients, that could be stateless, processes the data and then forwards it on to the servers.
Multi-tier: Enterprise web services first created n-tier or multi-tier systems architectures. This popularized the application servers that contain the business logic and interacts both with the data tiers and presentation tiers.
Peer-to-peer: There are no centralized or special machine that does the heavy lifting and intelligent work in this architecture. All the decision making and responsibilities are split up amongst the machines involved and each could take on client or server roles. Blockchain is a good example of this.
Telephone Network and Cellular Network
Computer Network Like Internet
Wireless Sensor Networks
World Wide Network and peer to peer network
Multiplayer online games and virtual reality Communities
Distributed Database and Distributed database management Systems
Network file system
Real-Time Process Control
Aircraft Control System
Industrial Control System
Scientific computing including cluster computing and grid computing
Distributed rendering in computer graphics.
Unlimited Horizontal Scaling - machines can be added whenever required.
Low Latency - having machines that are geographically located closer to users, it will reduce the time it takes to serve users.
Fault Tolerance - if one server or data centre goes down, others could still serve the users of the service.
Advantages of Distributed Systems:
Complexity is the biggest disadvantage of distributed systems. There are more machines, more messages, more data being passed between more parties which leads to issues with:
Data Integration & Consistency being able to synchronize the order of changes to data and states of the application in a distributed system is challenging, especially when there nodes are starting, stopping or failing.
Network and Communication Failure messages may not be delivered to the right nodes or in the incorrect order which lead to a breakdown in communication and functionality.
Management Overhead more intelligence, monitoring, logging, load balancing functions need to be added for visibility into the operation and failures of the distributed systems.
The Tech Platform