Consistent hashing распределяет ключи по узлам так, что при добавлении/удалении узла перераспределяется минимум ключей. Обычный hash(key) % N при изменении N инвалидирует почти все. Ключи и узлы на кольце; ключ принадлежит следующему узлу по часовой стрелке. В Go используют для выбора шарда/реплики при динамическом наборе узлов (например, кеш, очереди). Реализации: github.com/golang/groupcache, кастом по кольцу.
type Ring struct { nodes []uint32 }
func (r *Ring) Get(key string) string { h := hash(key); ... return nodeFor(h) }