kafka中的端到端一致性(exactly-one)

Posted bitbitbyte

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka中的端到端一致性(exactly-one)相关的知识,希望对你有一定的参考价值。

端到端一致性: exactly-once

传输过程要保证exactly-once, 需要内部能够实现状态保存, 当下游保存失败时, 能够更加保存的历史状态再次提交数据.
而下游接受数据, 需要具备去重能力. 去重有两种方式:幂等写入, 事务写入


内部: 支持checkpoint或者状态保存
下一级: 数据不会被重复写入
  • 幂等写入
    • 根据key去重, 比如k-v数据库: hbase, redis
  • 事务写入
    • 能够在失败后回滚提交

kafka

在0.11版本之后,Kafka Producer引入了幂等性机制(idempotent),配合acks = -1时的at least once语义,实现了producer到broker的exactly once语义。

producer需要能过保存当前发送数据的状态, 以及在出现失败时, 能够重复向broker提交数据.

而相对与producer的下一级broker(cluster端)需要具备幂等性(去重), 重复插入同一条数据, 只保留一条.
每个生产者线程生成的每条数据,添加以下的标识符: (producerid,partition,SequenceId),通过标识符对数据进行去重!











以上是关于kafka中的端到端一致性(exactly-one)的主要内容,如果未能解决你的问题,请参考以下文章

流系统Spark/Flink/Kafka/DataFlow端到端一致性实现对比

量角器给出错误的端到端测试

压箱底总结:流系统Spark/Flink/Kafka/DataFlow端到端一致性对比

CVPR 2021 | 基于Transformer的端到端视频实例分割方法

CVPR 2021 | 基于Transformer的端到端视频实例分割方法

使用 Flex、.NET 和 DBMS 寻找更好的端到端通信