Что такое консистентное хеширование

«Что такое консистентное хеширование» — вопрос из категории Архитектура, который задают на 26% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Консистентное хеширование — это алгоритм распределения данных в распределённых системах, минимизирующий перераспределение ключей при изменении количества узлов.

Как работает:

  1. Узлы и ключи хешируются в одно и то же пространство (например, кольцо).
  2. Каждый ключ попадает на ближайший узел по часовой стрелке.
  3. При добавлении/удалении узла перераспределяются только ключи соседних узлов.

Пример на 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.