1.9 KiB
1.9 KiB
aliases | tags | date | zero-link | parents | linked | |||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
Представим, что весь диапазон нашей хэш функции можно отобразить на окружности (0 до 32 или от -32 до 32). Хэшфункция указывает место на круге. Хэш-функция используется для определения места узлов на круге. Этаже хэш функция используется для определения значения ключей на круге. Выбирается ближайший по часовой стрелке узел.
Плюсы:
- При добавлении/удалении шардов затрагивается только часть данных.
Минусы:
- Данные могут быть распределены не равномерно, если между шардами будет различное расстояние на круге.
Virtual Nodes (Bucket)
Можно попытаться решить проблему неравноморного распределения. Для этого мы добавим виртуальные шарды: для одной ноды определяется несколько точек на круге.
Такой подход используется в Cassandra.
Плюсы:
- Более равномерное распределение.
- Можно использовать сервера разной конфигурации, размещая виртуальные бакеты так, чтобы обеспечить оптимальную нагрузку сервера.
Дополнительные материалы
- Есть какая-то библиотека Guava/Sumbur