【问题标题】:exactly once semantics in Kafka source connectorKafka源连接器中的恰好一次语义
【发布时间】:2020-05-04 06:05:09
【问题描述】:

在阅读了 Kafka 幂等操作和事务后,我想看看 Kafka 源连接器是否使用它们中的任何一个来确保一次性语义。

经过一点阅读,我发现源连接器使用了某种“偏移量”,它自己存储了它所做的最后一次操作,然后我看到Debezium source connector for MongoDB只能实现在至少一次语义。

所以我的问题是为什么 MongoDB 源连接器不能保证完全一次语义?如果连接器可以将其偏移量与带有事务的每条消息一起提交,则它可以确保消息和偏移量都在 Kafka 内部,从而保证精确一次的语义。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    源连接器见KIP-618,318 使连接器的生产者具有幂等性

    Kafka 是一个仅附加日志。如果作为正常消费者操作的一部分,源连接器在产生事件和提交偏移之间死亡,那么消费者可能需要重置回最后一个未提交的偏移

    【讨论】:

    • 我知道如果动作不是“原子的”,你可能会在推送事件和提交偏移之间崩溃。但是this article 提到了 Kafka 中的事务,这些事务可以让您发送一批全部通过或全部失败的消息,如果在提交事件和提交偏移之间发生崩溃,这可以让您解决问题。(如果我错了,请纠正我)
    • Kafka Connect 没有实现事务生产者。 cwiki.apache.org/confluence/display/KAFKA/…
    • 我明白了,这真是太有用了。 KIP 似乎已经很老了,我应该等着看它是如何发展的,还是这个 KIP 注定要失败?(我是开源概念的新手,所以我不确定它会发生什么)
    • @nhruo 如果您愿意,可以在链接的 Kafka-dev 邮件列表上跟进
    猜你喜欢
    • 2020-10-04
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2017-01-14
    • 1970-01-01
    • 2019-02-27
    • 2010-09-29
    相关资源
    最近更新 更多