The hash ring solved the problem where adding a server moved everybody's data. It created a new one.
Three servers land wherever the hash puts them, and nothing forces those three positions to be spread out. One server can end up owning half the circle while the other two split the rest.
Failure makes it worse. When the busy server dies, its entire load lands on the single next server clockwise. You lose one node and immediately overload another.
The fix is to stop placing each server once. Hash it two hundred times, with two hundred different labels, so every server becomes two hundred tiny slices scattered around the ring and interleaved with everyone else's.
Six hundred random slices distribute far more evenly than three. The law of large numbers does the rest, and a death now spills across two hundred neighbours instead of one.
Fairness rarely comes from one good decision. It comes from making the same decision often enough that luck cancels out.
