System Design Interview - Chapter 5 - Design Consistent Hashing
Consistent Hashing is a cornerstone technology for distributed systems. Many of software developers don’t realize it, but Consistent Hashing is needed in many places: load balancers, caches, CDNs, id generators, databases, chats / social networks, and many other systems.
This topic consists of:
- Problem with rehashing and why we need hashing to be CONSISTENT
- Hash space and hash ring
- BASIC approach (introduced by Karger et al. at MIT)
- Advanced approach with VIRTUAL NODES
These items are disclosed in a very interesting Chapter 5 of the book: