Consistent Hashing hard
A cluster runs at 80% capacity. Node A fails. Why is a standard Ring with Neighbors-as-Replicas bad here?
- A The entire load of Node A (10% of total) shifts entirely to Node B (its successor), potentially causing a cascade of failures.
- B The data becomes permanently inaccessible because a standard ring walk does not support decentralized replica recovery.
- C The cluster latency increases slightly as the remaining nodes must perform expensive floating-point math to re-calculate the ring.
- D It is not technically 'bad' because consistent hashing is mathematically guaranteed to maintain a perfectly balanced load at all times.
Answer: A. The entire load of Node A (10% of total) shifts entirely to Node B (its successor), potentially causing a cascade of failures.
Without Virtual Nodes, a node failure imposes its entire load (1/N) onto its single immediate successor. If the cluster is already running near peak capacity (e.g., 80%), this +10% spike can tip the successor over, creating a 'Domino Effect' that can bring down the entire cluster. Modern systems use randomized token placement or shard tables to ensure that a dead node's load is fractured and spread across *all* remaining nodes.
One system design question a day, with spaced repetition so the ones you miss come back.
Get the appRelated questions
- In a 'Smart Client' architecture (e.g., modern Cassandra drivers), how does the client find the right node?
- When a new node (Node X) joins the ring, where does it acquire its initial data from?
- Google's Maglev hashing algorithm (used in their Network Load Balancers) differs from standard Consistent Hashing rings. How does it generate the lookup table?
- Virtual Nodes improve balance but increase metadata size (Memory). How does 'Multi-Probe Consistent Hashing' achieve good balance without VNodes?
- In the Chord DHT protocol (a P2P consistent hashing implementation), naive lookups are O(N). How does Chord optimize this to O(log N)?
- Which of these systems is a famous user of Consistent Hashing?