Distributed System: A group of nodes that cooperate by exchanging messages over communication links to achieve some task.

1.1 Communication

The first challenge is the need for nodes to communicate with each other in the network.

1.2 Coordination

Another challenge of building distributed systems is that some form of coordination is required to make individual nodes work in unison towards a shared objective.

Example: Two Generals

You have two nodes(generals) who have to make a plan to attack a city at the same time.

1.3 Scalability

The performance of an application represents how efficiently it can handle ***load (***anything that consumes the system’s resources).

In terms of this book, performance is measured in terms of throughput (number of requests processed) and response time (the time elapsed between sending a request and receiving a response).

If load reaches its capacity, performance either plateaus or worsens.

1.4 Resiliency

A distributed system is resilient when it can still function when failures happen. The more components there are, the higher number of failures will be.

Unchecked failures can negatively impact the system’s availability. Three 9’s are acceptable by users, above 4 is to be considered highly available

Availability % Downtime per day
90% (“one nine”) 2.40 hours
99% (“two nines”) 14.40 minutes
99.9% (“three nines”) 1.44 minutes
99.99% (“four nines”) 8.64 seconds
99.999% (“five nines”) 864 milliseconds