mediumSystem Design

What is consistent hashing?

821 views
01

Understand the problem

Explain consistent hashing.

consistent-hashing
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Hash ring with virtual nodes
Run Playground
import hashlib, bisect

class HashRing:
    def __init__(self, nodes, vnodes=100):
        self.vnodes = vnodes
        self.ring = {}          # point_hash -> node
        self.points = []        # sorted hashes
        for n in nodes:
            self.add(n)
    def _h(self, key):
        return int(hashlib.md5(key.encode()).hexdigest(), 16)
    def add(self, node):
        for i in range(self.vnodes):
            h = self._h(node + "#" + str(i))
            self.ring[h] = node
            bisect.insort(self.points, h)
    def get(self, key):
        if not self.ring:
            return None
        h = self._h(key)
        i = bisect.bisect(self.points, h) % len(self.points)  # next clockwise
        return self.ring[self.points[i]]

ring = HashRing(["A", "B", "C", "D"])
for k in ["user:1", "user:2", "cart:9", "img:42"]:
    print(k, "->", ring.get(k))
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.