A distributed store must hand every key to some server. The obvious rule — server = hash(key) mod N — is a disaster to grow: change N and the modulo shifts under nearly every key, so almost the whole dataset has to move at once.
Consistent hashing (Karger et al., 1997) instead places servers and keys on one circle and gives each key to the first server clockwise. Add or remove a server and only the keys in the single arc beside it change hands — a thin slice, not a reshuffle.
A bare ring has a flaw: a few servers can land close together and one ends up owning a huge arc. The fix is virtual nodes — hash each server to many points around the ring. Each server shatters into scattered marks, its many small arcs average out, and the load histogram flattens. It is the scheme behind Dynamo, Cassandra, and memcached rings.
The simulation stopped unexpectedly — the lesson continues without it. You can move on; nothing you did was wrong.