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