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

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

Consistent hashing and random trees Jump Consistent Hash: A Fast, Minimal Memory, Consistent Hash Algorithm

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?

Readings in conflict-free replicated data types

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.

Harvest, Yield, and Scalable Tolerant Systems

Lamport Clocks

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

Time, Clocks, and Ordering in a Distributed System

Byzantine Generals Problem

TODO: Add description

Dr. Dobbs | The Byzantine Generals Problem

Implementations

Chord

A peer-to-peer Distributed HashTable (DHT) algorithm/protocol using consistent hashing to reduce shifting upon node join/leave.

Chord: A scalable peer-to-peer lookup service for internet applications

Chubby

The Chubby lock service for loosely-coupled distributed systems

Dynamo

Dynamo: Amazon's Highly Available Key-value Store

Paxos

TODO: Add information

Reading Lists

Clone this wiki locally