Приложение сохраняет бизнес-данные и outbox-событие одной транзакцией; Debezium читает подтверждённые изменения через CDC и передаёт их в брокер.
Опишите паттерн Transactional Outbox в связке с Debezium (CDC, Change Data Capture). Какую проблему надежности распределенных систем решает этот стек?
Приложение сохраняет бизнес-данные и outbox-событие одной транзакцией; Debezium читает подтверждённые изменения через CDC и передаёт их в брокер.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Приложение сохраняет бизнес-данные и outbox-событие одной транзакцией; Debezium читает подтверждённые изменения через CDC и передаёт их в брокер.
Outbox Event Router преобразует запись таблицы в событие, выбирая тему, ключ агрегата и payload по конфигурации. Таким образом приложение не пытается отдельно подтвердить БД и Kafka в ненадёжной последовательности dual write.
Нужно сохранять уникальный ID события, совместимую схему и порядок по агрегату. Потребители всё равно должны выдерживать повторы; CDC не делает произвольное внешнее действие exactly-once. Контролируйте состояние connector, offsets, lag и удержание журнала БД. Очистку outbox согласуйте с гарантированным чтением событий.
Источник: debezium.io.