Kafka гарантирует порядок записей внутри одной партиции, но приложение может нарушить порядок обработки параллельными задачами, повторами или отправкой связанных событий в разные партиции.
Почему связанные события могли прийти в неправильном порядке и как гарантировать их порядок обработки в Kafka?
Kafka гарантирует порядок записей внутри одной партиции, но приложение может нарушить порядок обработки параллельными задачами, повторами или отправкой связанных событий в разные партиции.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Kafka гарантирует порядок записей внутри одной партиции, но приложение может нарушить порядок обработки параллельными задачами, повторами или отправкой связанных событий в разные партиции.
Используйте общий ключ агрегата, последовательную обработку внутри его потока и номер версии события. При retry не позволяйте позднему событию молча обогнать неуспешное раннее, если бизнес-инвариант требует строгой последовательности.
Несколько producer-ов должны согласовать причинный порядок на уровне приложения; одна партиция фиксирует порядок поступления, а не угадывает его. Изменение числа партиций тоже требует внимания к распределению ключей. Offset подтверждают только после завершения непрерывно обработанной последовательности, не после произвольной самой поздней задачи.