Ā
What?
A distributed system is a collection of programs that utilise resources across multiple compute nodes to achieve a shared, common goal.
Ā
A distributed system has the following properties:
- Several autonomous computational entities exist, each with their local memory
- The entities communicate via message passing
Ā
Some other properties may include:
- The system has to tolerate failures in individual computers
- The structure of the system is not known in advance (network topology, network latency, number of computers etc.)
- Each computer has a only a limited, incomplete view of the system. Each computer may know only one part of the system.
Ā
The components of distributed system pass messages between one another to achieve a common goal (maybe a business operation).
Ā
Challenges
Three significant challenges of DC are:
- Maintaining concurrency of components
- Overcoming lack of global clock
- Managing independent failure of components
Ā
Fallacies of distributed systems
These are basically the assumptions that new programmers make while first starting out distributed computing:
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Topology doesnāt change
- There is one administrator
- Transport cost is zero
- The network is homogenous
Ā
Here are some effects of the fallacies of distributed computing:
- Software applications handle very little amount of errors that might error on the network layer. As they āassumeā that it would always work. When the error occurs, it leaves the system in a unknown state, recovering from which might require a manual restart.
- Ignoring network latency can cause great deal of packet loss. Which in turn increases bandwidth and packet loss.
- Ignorance of bandwidth limits on part of traffic sender can result in bottlenecks
Ā
A program that runs on a distributed computer is called a distributed program.
Ā
A thing to note here is that a ādistributedā system need not exist on different physical machines. It can even be separate processes on the same machine.
Ā
Patterns
Here are some common architectural patterns:
- Saga interaction pattern
- Microservices
- Event Driven architecture
Ā
Ā
Glossary
List of all terms used in this document
Concurrency
TBD
Ā