-
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)
TODO: Add description
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?
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?
TODO: Add information
TODO: Add information
A peer-to-peer Distributed HashTable (DHT) algorithm/protocol using consistent hashing for distributing load and reducing key shifting upon node join/leave.
TODO: Add information
TODO: Add information