digital-garden/_inbox/Consistent hashing.md

1.9 KiB

aliases tags date zero-link parents linked
зрелость/🌱
2024-06-30
00 Алгоритмы
Шардирование в БД

Представим, что весь диапазон нашей хэш функции можно отобразить на окружности (0 до 32 или от -32 до 32). Хэшфункция указывает место на круге. Хэш-функция используется для определения места узлов на круге. Этаже хэш функция используется для определения значения ключей на круге. Выбирается ближайший по часовой стрелке узел.

Плюсы:

  • При добавлении/удалении шардов затрагивается только часть данных.

Минусы:

  • Данные могут быть распределены не равномерно, если между шардами будет различное расстояние на круге.

Virtual Nodes (Bucket)

Можно попытаться решить проблему неравноморного распределения. Для этого мы добавим виртуальные шарды: для одной ноды определяется несколько точек на круге.

Такой подход используется в Cassandra.

Плюсы:

  • Более равномерное распределение.
  • Можно использовать сервера разной конфигурации, размещая виртуальные бакеты так, чтобы обеспечить оптимальную нагрузку сервера.

Дополнительные материалы

  • Есть какая-то библиотека Guava/Sumbur