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

Что произойдёт с гарантией порядка при увеличении числа партиций в существующем топике?

SeniorKafka в эксплуатацииKafka
Ещё спрашивают так:
  • Можно ли увеличить число партиций без последствий?
Коротко

Партиция для ключа — hash(key) % N. Сменили N — новые сообщения ключа идут в другую партицию, а старые ещё могут обрабатываться: порядок по ключу на переходе нарушается.

  • Уменьшить число партиций нельзя вовсе
  • Безопасно: создать новый топик с нужным числом партиций и переключиться
  • Или пауза: дождаться нулевого lag перед увеличением

А ещё Число партиций закладывают с запасом при создании

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

Подробно

Уже записанные сообщения остаются на местах, а новые с тем же ключом могут уйти в другую партицию, и относительный порядок между старыми и новыми записями одного ключа теряется. Для сценариев, где порядок по ключу критичен — например, последовательность изменений состояния заказа, — это может означать некорректную обработку. Отсюда практический вывод: число партиций задаёт запас масштабируемости и его планируют заранее, ведь уменьшить его вообще нельзя. Если увеличение необходимо, безопасные пути такие: создать новый топик с нужным числом партиций и мигрировать потребителей, либо выбрать момент, когда обработка старых сообщений заведомо завершена.

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

  • Почему меняется партиция ключа.
  • Последствия для порядка.
  • Безопасные способы.

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

  • Увеличивать число партиций на работающем топике, где важен порядок по ключу.
  • Рассчитывать, что число партиций можно будет уменьшить обратно.

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

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

Показать варианты и ответ
  • ✓Распределение ключей по партициям изменится, поэтому новые сообщения с тем же ключом могут попасть в другую партицию — порядок для этого ключа больше не гарантирован
  • ✗Ничего не изменится: ключи навсегда закреплены за партициями
  • ✗Все существующие сообщения будут автоматически перераспределены
  • ✗Топик станет недоступен для чтения до полной перебалансировки

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

  • Как выбрать число партиций при создании топика?
  • Как мигрировать на топик с новым числом партиций без потери порядка?

Разбор темы

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

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

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

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

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