Ответ
Консистентное хеширование — это алгоритм распределения данных в распределённых системах, минимизирующий перераспределение ключей при изменении количества узлов.
Как работает:
- Узлы и ключи хешируются в одно и то же пространство (например, кольцо).
- Каждый ключ попадает на ближайший узел по часовой стрелке.
- При добавлении/удалении узла перераспределяются только ключи соседних узлов.
Пример на Go:
import "github.com/buraksezer/consistent"
cfg := consistent.Config{
PartitionCount: 7,
ReplicationFactor: 20,
Load: 1.25,
}
c := consistent.New(nil, cfg)
// Добавляем узлы
c.Add("node1")
c.Add("node2")
// Находим узел для ключа
owner, _ := c.LocateKey([]byte("my-key"))
Плюсы:
- Минимизация перераспределения данных.
- Балансировка нагрузки.
Используется в Redis Cluster, Cassandra, CDN.