Skip to main content

Як розподіляються слоти між вузлами?

У Redis Cluster усі ключі розподіляються по 16384 хеш-слотах, і ці слоти діляться між master-вузлами.

1. Хеш-слоти

  • Усього 16384 слоти (0-16383).

  • Кожен ключ потрапляє в слот за формулою:

    javascript
    CRC16(key) % 16384
  • Слот визначає, на якому master зберігається ключ.

2. Розподіл слотів між master-вузлами

  • Коли кластер створюється, слоти рівномірно розподіляються між усіма master-вузлами. Приклад для 3 master'ів:

    javascript
    master1 → слоти 0-5460 master2 → слоти 5461-10922 master3 → слоти 10923-16383
  • Якщо додається новий master, частина слотів переноситься з наявних master'ів на новий.

3. Репліки

  • Репліки не отримують слоти напряму.
  • Вони просто копіюють дані свого master.
  • Тому запит на читання до репліки працює лише з даними того master, якому вона підпорядкована.

4. Перерозподіл при масштабуванні

  • Redis Cluster підтримує resharding:
    • частина слотів переміщується з перевантаженого master на новий;
    • дані для цих слотів переносяться автоматично;
    • клієнти отримують сповіщення про нове розташування слотів через MOVED.

5. Підсумок

  • Слоти - це логічний поділ ключів.
  • Кожен master обслуговує певний діапазон слотів.
  • Репліки копіюють слоти свого master.
  • Додавання нових вузлів чи видалення старих супроводжується перерозподілом слотів для балансування навантаження.

Такий механізм забезпечує горизонтальне масштабування, рівномірне навантаження й відмовостійкість.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.