Выбор ответа Middle Масштабирование обновлено

Почему не hash % N

Вопрос

Ключи распределены по 4 узлам кеша формулой hash(key) % 4. Добавили пятый узел. Что произойдёт?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Переедет около 80% ключей. Ключ остаётся на месте, только если hash % 4 == hash % 5, а это верно примерно для 1/5 ключей.

Варианты ответа

  1. Переедет примерно 1/5 ключей
  2. Ни один ключ не переедет
  3. Переедут лишь ключи последнего узла
  4. Переедет около 80% ключейправильный ответ

Разбор

Ключ остаётся на месте, только если hash % 4 == hash % 5, а это верно примерно для 1/5 ключей. Остальные около 80% меняют узел, и кеш почти полностью промахивается, нагрузка уходит в БД. Именно эту проблему решает консистентное хеширование: при добавлении узла переезжает около 1/N ключей.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.