美文网首页kafka专题
Kafka专题:5.kafka幂等发送与事务

Kafka专题:5.kafka幂等发送与事务

作者: 北交吴志炜 | 来源:发表于2019-02-08 15:55 被阅读0次

    kafka在0.11之后,开始支持幂等发送和事务,那么分别是如何实现的呢?

    幂等发送
    引入producerid +seqnum的设计
    对于每一个生产者,初始化是分配一个producerid,发送消息的时候会有一个单调递增的seqnum,消息包含producerid+ seqnum
    对于broker,会缓存一个最大的producerid+ seqnum,如果接收到消息的seq小于之前缓存的seq,直接返回幂等结果,不要写入日志文件。 这个幂等只能在相同生产者session和相同partition级别保证,不同的生产者或者不同的partition保证不了。

    事务
    引入事务协调者,事务日志,transactionid的设置
    对于消费,转换,写入这样的场景,将消费的offset 更新,和写入的commit放在一个事务中,只有全部成功,消费的offset才会进行更新。否则,重新消费。
    事务隔离级别,有read commited和read uncommited两种。
    对于read commited级别,consumer会过滤掉那些终止事务的消息(比如写入场景,有些写入成功,有些写入失败)。

    相关文章

      网友评论

        本文标题:Kafka专题:5.kafka幂等发送与事务

        本文链接:https://www.haomeiwen.com/subject/mgtosqtx.html