Kafka中的AR,ISR,OSR

在查看topic详细信息的话可以看到有个Isr,一开始不明所以,于是深入去学习了,不看不知道一看吓一跳:

在这里插入图片描述

首先要引出一个问题,为什么要存在这些东西:

在数据同步的时候,如果发生leader死掉,并且重新选举的leader能力不强(数据同步速度慢,数据同步不全面),会造成一群follow跟着一个傻逼leader。造成脏数据。所以我们就要知道哪些副本能力是较强的,同步数据是最快最完整的,在leader发生问题后第一时间补上。
AR:Assigned Replicas 总的分配副本
OSR:Out-of-Sync Replicas 脱离同步副本。 数据同步严重滞后的副本组成OSR(网络原因造成的等等),如果副本数为1或者副本同步进度差不多,那么这个可以为空。
ISR:in-sync-replica set 同步副本设置。为了解决数据同步高延迟问题以及leader重新选举时不会影响数据同步。

在这里插入图片描述

这里举个例子,尖子班与垃圾班。相信大家上学中考高考都会被分类过。想象ISR就是AR所有副本中的小部分精英,这小部分精英的作用就是当leader死掉的时候立即重新选举,保证新leader数据同步的准确性。根据:同步速度(同步时间越短证明速度越快)/数据条数(数据条数越多证明丢数据越少)。Leader会持续跟踪ISR候选人中的数据同步状态,如果ISR中的某些副本严重滞后,或者失效,都会马上从ISR中剔除。如果OSR的某些副本同步速度有所提升,以越来越小的时间差逐渐跟上leader的副本数据,则也会有机会进入到ISR。
同理,如果副本数只有一个,那么都没得选,只能它当leader,或者当大家都一样优秀,那就不需要分班,统一到时候再随机选举就好。

ISR收缩:

启动 Kafka时候自动开启的两个定时任务,“isr-expiration"和”isr-change-propagation".。isr-expiration任务会周期性的检测每个分区是否需要缩减其ISR集合,相当于一个纪检委员,巡查尖子班时候发现有学生睡觉打牌看小说,就把它的座位移除尖子班,缩减ISR,宁缺毋滥。。
同样道理,如果follower数据同步赶上leader,那么该follower就能进入ISR尖子班,扩充。
上面关于ISR尖子班人员的所见,都会记录到isrChangeSet中,想象成是一个名单列表,谁能进,谁要出,都记录在案
isr-change-propagation的作用就是检查isrChangeSet,按照名单上的信息移除和迁入,一般是2500ms检查一次,但是为了防止频繁收缩扩充影响性能,不是每次都能做变动,必须满足:(1).上一次ISR集合发生变化距离现在已经超过5秒,(2).上一次写入zookeeper的时候距离现在已经超过60秒。这两个条件都满足,那么就开始换座位!这两个条件可以由我们来配置。

所以,Kafka使用这种ISR的方式有效的权衡了数据可靠性与性能之间的关系。
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值