DEV//UNIT
← АлгоритмыReal-world Development

Консистентное хеширование

Кольцо хешей: ключ у ближайшего сервера; новый узел забирает только свой сектор.

время O(log N) поиск серверапамять O(N + ключи)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function hash(x: string, space: number): number {
2 let h = 0
3 for (const ch of x) h = (h * 31 + ch.charCodeAt(0)) >>> 0
4 return h % space
5}
6
7function serverFor(key: string, ring: number[]): number {
8 const h = hash(key, 360)
9 // первый сервер по часовой стрелке от хеша ключа
10 const sorted = [...ring].sort((a, b) => a - b)
11 for (const s of sorted) if (s >= h) return s
12 return sorted[0]!
13}

Проблема

Кольцо хешей: ключ у ближайшего сервера; новый узел забирает только свой сектор.

Что вы видите

Серверы и ключи на одном круге; стрелка от ключа — к хозяину по часовой.

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

«hash % N» при изменении N переставляет почти всё; кольцо — только соседний сектор. Кэши, шардинг БД, service discovery.

Пошаговый разбор

  1. 01

    Кольцо

    Серверы по хешам на круг 0–360°.

  2. 02

    Ключ

    Ближайший по часовой сервер.

  3. 03

    Ресайз

    Переезжает только один сектор.

Complexity и ограничения

time
O(log N) поиск сервера
space
O(N + ключи)

См. complexity в шапке страницы.

Edge cases

  • Пустой вход

    Корректно завершается без лишних шагов.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Продукт

Классический приём в реальных системах.

Собеседования

Стандартный вопрос на понимание структуры.

Связанные алгоритмы

Shorts

«Добавили сервер — и почти ничего не переехало»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Добавили сервер — и почти ничего не переехало
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/consistent-hashing