Consistent Hashing

T: O(log n) lookup
Feedback

Consistent Hashing

Consistent hash ring initialized (empty)
Hash Ringsize: 360
add-server(S1)
add-server(S2)
add-server(S3)
add-key(K1)
add-key(K2)
add-key(K3)
add-key(K4)
add-key(K5)
remove-server(S2)
add-key(K6)
SpeedNormal (500ms)
Parameters

{ ringSize: number, operations: [{type, id: string}] }

Variables
ringSize360
servers0
keys0
currentOpadd-server(S1)
1class ConsistentHash(ringSize):
2 ring = sorted list of (hash, server) pairs
3
4 function addServer(server):
5 hash = hashFn(server) % ringSize
6 insert (hash, server) into ring
7 reassign affected keys
8
9 function lookup(key):
10 hash = hashFn(key) % ringSize
11 find first server with hash >= key's hash
12 (wrap around if necessary)
13 return server
14
15 function removeServer(server):
16 remove server from ring
17 reassign keys to next clockwise server
Output
Consistent hash ring initialized (empty)