Kafka гарантирует порядок? Разбираем 3 инцидента с Outbox
#Kafka #PostgreSQL #Debezium
✅
Один order_id на все события даёт размещение в партиции, но не причинную последовательность: ключ не определяет, в каком порядке события дошли до брокера.
📈
«Порядок» распадается на разные свойства, и за каждое отвечает своё звено — пока это не записано в требовании, упорядоченность остаётся надеждой.
🔑 Ключ даёт размещение, aggregate_version — позицию в истории, бизнес-правило — допустимость. Если сборка закоммитилась раньше оплаты, номер честно зафиксирует порядок, но история будет недопустимой.
⚠️ exactly-once не чинит перестановку событий от разных процессов и не объединяет PostgreSQL с Kafka в одну транзакцию: повтор и перестановка — разные проблемы с разными решениями.
Читаем:
Внутри — разбор трёх инцидентов по дампу партиции (включая случай, где у одного инцидента две независимых причины, и случай, где событие потеряно, а не переставлено), почему `last offset + 1` ломает прогресс чтения, и как переписать НФТ так, чтобы оно пережило смену базы и брокера.
https://habr.com/ru/companies/otus/articles/1077958/
@aStateOfNet
#Kafka #PostgreSQL #Debezium
✅
Один order_id на все события даёт размещение в партиции, но не причинную последовательность: ключ не определяет, в каком порядке события дошли до брокера.
📈
«Порядок» распадается на разные свойства, и за каждое отвечает своё звено — пока это не записано в требовании, упорядоченность остаётся надеждой.
🔑 Ключ даёт размещение, aggregate_version — позицию в истории, бизнес-правило — допустимость. Если сборка закоммитилась раньше оплаты, номер честно зафиксирует порядок, но история будет недопустимой.
⚠️ exactly-once не чинит перестановку событий от разных процессов и не объединяет PostgreSQL с Kafka в одну транзакцию: повтор и перестановка — разные проблемы с разными решениями.
Читаем:
Внутри — разбор трёх инцидентов по дампу партиции (включая случай, где у одного инцидента две независимых причины, и случай, где событие потеряно, а не переставлено), почему `last offset + 1` ломает прогресс чтения, и как переписать НФТ так, чтобы оно пережило смену базы и брокера.
https://habr.com/ru/companies/otus/articles/1077958/
@aStateOfNet