Reaves.dev

v0.1.0

built using

Phoenix v1.7.12

Intro To Distributed Systems

Stephen M. Reaves

::

2023-01-13

Notes about Lesson 1 of CS-7210

These are my notes summarizing Lesson 1 of CS-7210.

Summary

Characteristics of a Distributed System

Distributed System := A collection of computing resources, connected via some network that behaves as a single system.

There is no (theoretical) limit to the number of computing resources, typically called nodes, but the number of nodes, and other complexities, should be invisible to the end user.

A distributed system should also be able to scale, meaning add nodes to or remove nodes from the system, as well as have some degree of fault tolerance.

Role of Models

We typically represent distributed sytems as a graph. We represent nodes as vertices and communication between nodes as edges. In more complex models, you can even represent things like state by labeling the nodes and changes in state then change the label (going from S1 to S1', for example).

Examples1S1s1_pS1`s1->s1_p

The main considerations for models are that they accurately represent the problem and allow the solution to be analyzed

CAP Theorem

The CAP Theorem is pretty essential to distributed sytems. It basically describes the idea that systems can be at most two of consistent, available, or partition tolerant.

Consistent := Every node in the system has accurate access to the most recent information.

Available := Every request gets a valid response.

Partition Tolerant := The system continues to operate regardless of communication failures.

There are also extensions to the CAP Theorem, such as the PACELC Theorem which states that you only need to choose between the original three characteristics when there is a partition, otherwise you additionally need to choose between latency and consistency.