Что такое consistent hashing? Зачем при шардировании?

Ответ

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) }
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.