Kafka之ISR机制的理解

Kafka对于producer发来的消息怎么保证可靠性?

每个partition都给配上副本,做数据同步,保证数据不丢失。

副本数据同步策略

和zookeeper不同的是,Kafka选择的是全部完成同步,才发送ack。但是又有所区别。

所以,你们才会在各种博客看到这句话【kafka不是完全同步,也不是完全异步,是一种ISR机制

这句话对也不对,不对也对(谜语人......)

首先笔者认为:Kafka使用的就是完全同步方案。

完全同步的优点

同样为了容忍 n 台节点的故障,过半机制需要 2n+1 个副本,而全部同步方案只需要 n+1 个副本,

而 Kafka 的每个分区都有大量的数据,过半机制方案会造成大量数据的冗余。(这就是和zookeeper的不同)

完全同步会有什么问题?

假设就有这么一个follower延迟太高或者某种故障的情况出现,导致迟迟不能与leader进行同步。

怎么办?leader等还是不等?

等吧:producer有话要说:“Kafka也不行啊,处理个消息这么费劲,垃圾,你等NM呢等”

不等:那你Kafka对外说完全同步个鸡儿,你这是完全同步么?

基于此,Kafka的设计者和开发者想出了一个非常鸡贼的点子:ISR

什么是ISR?

先来看几个概念

1、AR(Assigned Repllicas)一个partition的所有副本(就是replica,不区分leader或follower)

2、ISR(In-Sync Replicas)能够和 leader 保持同步的 follower + leader本身 组成的集合。

3、OSR(Out-Sync Relipcas)不能和 leader 保持同步的 follower 集合

4、公式:AR = ISR + OSR

所以,看明白了吗?

Kafka对外依然可以声称是完全同步,但是承诺是对AR中的所有replica完全同步了吗?

并没有。Kafka只保证对ISR集合中的所有副本保证完全同步。

至于,ISR到底有多少个follower,那不知道,别问,问就是

  • 75
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值