Сначала определите, нужен ли глобальный порядок или достаточно порядка для одного заказа, пользователя либо другого ключа. Обычно выбирают упорядочивание по ключу и явные версии событий.
[имя] спросил: Как бы вы подошли к задаче обеспечения порядка обработки/доставки событий в распределённой системе?
Сначала определите, нужен ли глобальный порядок или достаточно порядка для одного заказа, пользователя либо другого ключа. Обычно выбирают упорядочивание по ключу и явные версии событий.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала определите, нужен ли глобальный порядок или достаточно порядка для одного заказа, пользователя либо другого ключа. Обычно выбирают упорядочивание по ключу и явные версии событий.
События одного агрегата направляют в одну partition или последовательную очередь и обрабатывают одним логическим владельцем. Sequence number помогает обнаружить пропуск и устаревшее событие; повторную доставку дедуплицируют. Retry и параллельная обработка могут нарушать порядок завершения даже при упорядоченной доставке, поэтому их нужно согласовать с требованиями. Глобальный порядок дороже и может стать узким местом. Временная метка сама по себе не обеспечивает порядок из-за рассинхронизации часов и одинаковых значений.