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),通过标识符对数据进行去重!



猜你喜欢

转载自www.cnblogs.com/bitbitbyte/p/13192460.html