Вопрос с собеседования · Брокеры сообщений

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования