Что произойдёт с гарантией порядка при увеличении числа партиций в существующем топике?
- Можно ли увеличить число партиций без последствий?
Партиция для ключа — hash(key) % N. Сменили N — новые сообщения ключа идут в другую партицию, а старые ещё могут обрабатываться: порядок по ключу на переходе нарушается.
- Уменьшить число партиций нельзя вовсе
- Безопасно: создать новый топик с нужным числом партиций и переключиться
- Или пауза: дождаться нулевого lag перед увеличением
А ещё Число партиций закладывают с запасом при создании
Подробно
Уже записанные сообщения остаются на местах, а новые с тем же ключом могут уйти в другую партицию, и относительный порядок между старыми и новыми записями одного ключа теряется. Для сценариев, где порядок по ключу критичен — например, последовательность изменений состояния заказа, — это может означать некорректную обработку. Отсюда практический вывод: число партиций задаёт запас масштабируемости и его планируют заранее, ведь уменьшить его вообще нельзя. Если увеличение необходимо, безопасные пути такие: создать новый топик с нужным числом партиций и мигрировать потребителей, либо выбрать момент, когда обработка старых сообщений заведомо завершена.
Что хотят услышать
- Почему меняется партиция ключа.
- Последствия для порядка.
- Безопасные способы.
Частые ошибки
- Увеличивать число партиций на работающем топике, где важен порядок по ключу.
- Рассчитывать, что число партиций можно будет уменьшить обратно.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Ничего не изменится: ключи навсегда закреплены за партициями, в которые попали впервые
- ✗Все существующие сообщения будут автоматически перераспределены
- ✓Ключ может попасть в другую партицию, и порядок для него больше не гарантирован
- ✗Топик станет недоступен для чтения до полной перебалансировки
Что спросят дальше
- Как выбрать число партиций при создании топика?
- Как мигрировать на топик с новым числом партиций без потери порядка?
Разбор темы
- Kafka в эксплуатации
Consumer lag и его причины, ребаланс и безопасный commit, poison-сообщения, ZooKeeper → KRaft, schema evolution, изменения partitions и ключевые метрики.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.