码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-06-25 19:15:36      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:redis   range   发送   数据库   poi   base   cer   一致性   tab   

端到端一致性: 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)

标签:redis   range   发送   数据库   poi   base   cer   一致性   tab   

原文地址:https://www.cnblogs.com/bitbitbyte/p/13192460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!