🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
đŸ’ŧ Servicesâ„šī¸ Aboutâœ‰ī¸ ContactView Pricing Plansfrom $10

Consistent Hashing

Data SystemsDistributed DatađŸŸĸ Free Lesson

Advertisement

Data Systems

Consistent Hashing

When adding or removing nodes from a distributed system, naive hashing forces massive key redistribution. Consistent hashing minimizes key movement, making scaling operations efficient.

  • Hash Ring — A circular key space mapped to nodes
  • Virtual Nodes — Multiple positions per physical node for balance
  • Minimal Disruption — Only K/N keys move when a node is added

Consistent hashing is the foundation of distributed caches, databases, and CDNs.

The Problem with Simple Hashing

With standard modulo hashing, adding a new node invalidates nearly every key's mapping.

Hash Ring

Consistent hashing maps both keys and servers onto a circular ring using a hash function.

S1hash: 0S2hash: 60S3hash: 120S4hash: 200S5hash: 280K1K2K3Clockwise assignment: K1→S2, K2→S3, K3→S5

How Keys Are Assigned

Each key hashes to a position on the ring. Travel clockwise from that position until you hit a server — that server owns the key.

Impact of Node Changes

Virtual Nodes

Physical servers are mapped to multiple positions on the ring to improve load distribution.

Load Distribution Analysis

Range-Based Consistent Hashing

Some systems use range-based approaches for ordered data.

Real-World Applications

SystemUse CaseVirtual Nodes
Amazon DynamoDBPartition assignment~1000 per partition
Apache CassandraData distribution256 per node
MemcachedClient-side shardingConfigurable
Akamai CDNRequest routingmillions of positions
RiakDistributed KV store64 per node

Implementation Considerations

Replication

Consistent hashing naturally supports replication by assigning keys to V consecutive servers clockwise on the ring.

Practice Exercises

  1. Calculation: Draw a hash ring with 4 servers at positions 10, 50, 120, 200 (ring size 256). Where do keys at positions 5, 55, 150, 210 map to?

  2. Design: Design a consistent hashing scheme for a cache cluster with 5 servers having weights 3, 2, 2, 1, 1. How many virtual nodes should each server have?

  3. Analysis: Compare the key redistribution when removing a node with 100 vs 1000 virtual nodes. What are the trade-offs?

  4. Implementation: Implement a simple consistent hash ring in Python with virtual nodes. Test that adding/removing nodes moves approximately 1/N of keys.


What to Learn Next

-> Data Partitioning Horizontal partitioning, range vs hash partitioning, and rebalancing.

-> Data Replication Leader-follower, multi-leader, and conflict resolution.

-> CAP Theorem Consistency models, availability, and partition tolerance.

-> Databases SQL vs NoSQL, indexing, replication, and sharding.

-> Load Balancing Distribution algorithms and L4 vs L7 load balancing.

-> Distributed Consensus Raft, Paxos, and leader election algorithms.

Need Expert System Design Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement