← back

/posts/distributed-systems/

Distributed Systems

A distributed system is a collection of autonomous computing elements that appears to its users as a single coherent system.

Features of distributed systems:

Autonomous Compute Units

Distributed systems are often organized as an overlay network, where a node is a process with a list of other nodes it can directly send messages to. There are roughly two typed of overlay networks

Structured Overlay: Each node has a well-defined set of neighbors with whom it can communicate. The nodes are organized in a tree or logical ring.

Unstructured Overlay: Each node has a number of references to randomly selected other nodes.

An overlay network should, in principle, always be connected, meaning that between any two nodes there is always a communication path allowing those nodes to route messages from one to the other.

cf: Peer-To-Peer (P2P) networks.

Single Coherent System


Design Goals

Performance

Fault Tolerance

Consistency

Networks aren’t reliable, so you’ll need to support partition tolerance. You’ll need to make a software tradeoff between consistency and availability.

AP is a good choice if the business needs allow for eventual consistency or when the system needs to continue working despite external errors.


Topics

Networking

CDNs

Caching

Communication Protocols