Dynamo: Amazon's Highly Available Key-Value Store
Dynamo: Amazon's Highly Available Key-Value Store
Other principles
Incremental scalability.
Symmetry
Decentralization
Heterogeneity
System architecture
Partitioning
High Availability for writes
Handling temporary failures
Recovering from permanent failures
Partition
Motivation
One of the key design requirements for
Dynamo is that it must scale incrementally.
This requires a mechanism to dynamically
partition the data over the set of nodes (i.e.,
storage hosts).
Partition (Cont’d)
Handling temporary failures Quorum and hinted handoff Provides high availability and
durability guarantee when some of
the replicas are not available.
Recovering from permanent Anti-entropy using Merkle trees Synchronizes divergent replicas in
failures the background.
Implementation
Java
Local persistence component allows for
different storage engines to be plugged in:
Berkeley Database (BDB) Transactional Data
Store: object of tens of kilobytes
MySQL: object of > tens of kilobytes
BDB Java Edition, etc.
Performance
Guarantee Service Level
Agreements (SLA)
the latencies exhibit a clear
diurnal pattern (incoming
request rate)
write operations always
results in disk access.
affected by several factors
such as variability in request
load, object sizes, and
locality patterns
Balance
out-of-balance
If the node’s request load deviates from the average load by
a value more than a certain threshold (15%)
Imbalance ratio decreases with increasing load
under high loads, a large number of popular keys are accessed
and the load is evenly distributed
Partitioning and placement of key
Each node assigned T
tokens
Tokens of all nodes are
ordered according to
their values in the hash
space
Every two consecutive
tokens define a range
Ranges vary in size
Partitioning and placement of key (cont’d)