Привет
Вопрос для тех кто сталкивался или имеет представление о том, как в распределенной системе добиться сохранения порядка сообщений(в некотором приближении)
Сообщения имеют инкрементальный sequence
Есть N инстансов, которые обрабатывают сообщения и складывают их в топик условного брокера(в топике должен быть сохранен порядок исходя из sequnce сообщения)
Очевидно что обработчики должны синхронизироваться
Но при этом синхронизация и отправка должны быть атомарны + появляется куча сайд эффектов в зависимости от места сбоя
Какой консенсус в решении задачи находили?
Решение с Debezium не подходит? Типа:
1) В какой-то момент времени сообщение попадает в БД, ему там назначается sequence значение из БД.
2) Мы вычитываем WAL с помощью Debezium и кладем сообщения в кафку. В итоге, у нас сообщения в кафке уже имеют правильный порядок, и мы дальше можем работать только с порядком по offset.
3) Дальше уже всё стандартно, пишем процессоры сообщений, сохраняя нужный порядок