-
Notifications
You must be signed in to change notification settings - Fork 0
Distributed Computing
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)
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 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
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
TODO: Add description
Dr. Dobbs | The Byzantine Generals Problem
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
The Chubby lock service for loosely-coupled distributed systems
Dynamo: Amazon's Highly Available Key-value Store
TODO: Add information