Получить доступ

Что такое проблема hot key (горячего ключа) в key-value хранилище и как её смягчают?

MiddleKey-value хранилища
Ещё спрашивают так:
  • Что делать с горячим ключом в DynamoDB или Redis?
Коротко

Горячий ключ — один ключ получает непропорциональную долю запросов, и его шард перегружен, пока остальные простаивают. Хеширование делит ключи, но не нагрузку на ключ.

  • Чтение: локальный кэш, реплики ключа под суффиксами, CDN
  • Запись: шардированные счётчики (key#0..N), агрегирование пачками
  • Обнаружение: метрики по шардам, топ ключей (count-min)

А ещё Добавление шардов не помогает

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

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

Consistent hashing и виртуальные узлы

Подробно

Key-value БД масштабируются шардированием по ключу: ответственность за ключ несёт конкретный узел/партиция. Если на один ключ (популярный товар, лента знаменитости) приходится огромная доля запросов, его шард становится узким местом, тогда как остальные простаивают — данные распределены, а нагрузка нет. Смягчают: репликами на чтение (раскидать чтения), кэшем перед хранилищем, разбиением горячего значения на под-ключи (key1..keyN) с агрегацией, либо локальным кэшем на клиентах. В DynamoDB это «hot partition», и adaptive capacity помогает лишь частично.

Что хотят услышать

  • Почему один ключ упирается в один шард.
  • Разные приёмы для чтения и записи.
  • Как обнаружить горячие ключи.

Частые ошибки

  • Считать, что шардирование само по себе решает перекос нагрузки.
  • Путать равномерное распределение данных с равномерным распределением трафика.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Один ключ/партиция получает непропорционально много трафика и перегружает свой шард; смягчают шардированием значения, репликами на чтение или кэшем перед хранилищем
  • ✗Ключ становится слишком длинным и не помещается в память
  • ✗Два клиента случайно выбрали одинаковый ключ
  • ✗Ключ истёк по TTL раньше времени

Что спросят дальше

  • Как разбиение ключа помогает против hot key?
  • Что такое hot partition в DynamoDB?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем