Меня зовут Андрей Серебрянский, и я увлечен Apache Kafka и гарантией доставки exactly once. В последние пять лет я создавал платформы потоковой обработки данных в финтехе, а сейчас работаю над YDB Topics, частью СУБД Яндекса, заменяющей Apache Kafka в качестве брокера сообщений. Мы расширили поддержку API Apache Kafka, добавив транзакции. Однако наличие транзакций не гарантирует exactly once. Для избежания дублирования сообщений при сбоях важно понимать, как транзакции работают в брокерах сообщений и в частности в Apache Kafka. Эта статья будет полезна как новичкам, так и тем, кто хочет углубить свои знания в этой области. Мы рассмотрим различные сценарии, такие как перемещение сообщений между топиками, загрузка данных и выгрузка сообщений из топиков, а также проблемы, с которыми сталкиваются разработчики при реализации этих сценариев. Важно помнить, что обеспечение гарантий exactly once — это архитектурная задача, требующая тщательной проработки и понимания особенностей систем.