ровно однажды семантика в коннекторе исходного кода Кафки - PullRequest
1 голос
/ 17 января 2020

После прочтения об идемпотентной операции Kafka и транзакциях, которые я хотел выяснить, используют ли исходные соединители Kafka какие-либо из них для обеспечения семантики с точностью до одного раза.

После небольшого чтения я обнаружил, что исходный соединитель использует своего рода «смещение» собственного, что позволяет ему сохранять последнюю выполненную операцию, и затем я увидел, что исходный соединитель Debezium для MongoDB может достичь семантики хотя бы один раз.

Итак, мой вопрос: почему коннектор источника MongoDB не может гарантировать семантику с однократным предоставлением? если соединитель может зафиксировать свое смещение вместе с каждым сообщением с помощью транзакции, он может убедиться, что и сообщение, и смещение точно находятся внутри Kafka и, таким образом, гарантируют семантику ровно один раз.

1 Ответ

2 голосов
/ 17 января 2020

Кафка - это журнал только в приложении. Если соединитель источника умирает между созданием события и фиксацией смещения как части обычных операций потребителя, то существует вероятность, что потребителю потребуется сбросить обратно к последнему незафиксированному смещению

...