При увеличении числа партиций формула hash(key) % N может направить новые сообщения того же ключа в другую партицию. Старые записи остаются на прежнем месте, поэтому сквозной порядок по ключу нарушается.
Что произойдёт в Kafka, если изменить количество партиций «на лету» в топике, где сообщения распределялись по хэшу ключа?
При увеличении числа партиций формула hash(key) % N может направить новые сообщения того же ключа в другую партицию. Старые записи остаются на прежнем месте, поэтому сквозной порядок по ключу нарушается.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт в Kafka, если изменить количество партиций «на лету» в топике, где сообщения распределялись по хэшу ключа?
Ответ
При увеличении числа партиций формула hash(key) % N может направить новые сообщения того же ключа в другую партицию. Старые записи остаются на прежнем месте, поэтому сквозной порядок по ключу нарушается.
Например, остаток от деления одного хеша на 4 и на 6 может различаться: это уже два независимых потока обработки. Потребитель новой партиции способен обработать более позднее событие раньше старого. Перед изменением продумайте остановку и осушение потока, новый топик или стабильное прикладное распределение. Если порядок критичен, добавьте версии сущности и правила обработки устаревших событий. Увеличение партиций не исправляет автоматически уже заложенные предположения потребителей.