Skip to content

Distributed Computing

abstractOwl edited this page May 30, 2017 · 9 revisions

A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.

— Leslie Lamport (https://research.microsoft.com/en-us/um/people/lamport/pubs/distributed-system.txt)

Concepts

TODO: Add description

Partition data over multiple nodes while minimizing the number of keys that need to be remapped when nodes join/leave.

Data structure that facilitates merging diverged versions. One example is collaborative editing, e.g. if user edits todo list on two temporarily offline devices, how can the changes be reconciled when the devices are synced with the server later?

Harvest and Yield

Harvest refers to the completeness of response while yield refers to the probability of completing a request.

The paper proposes ways to sacrifice harvest to increase availability (yield) -- return incomplete/approximate results or decompose system into non-fault tolerant subsystems and handle failure at a higher layer.

Because physical time can vary from system to system, how can we accurately order a series of events in a distributed system?

Paxos

TODO: Add information

TODO: Add information

Implementations

A peer-to-peer Distributed HashTable (DHT) algorithm/protocol using consistent hashing for distributing load and reducing key shifting upon node join/leave.

Chubby

TODO: Add information

Dynamo

TODO: Add information

Reading Lists

Clone this wiki locally