KAFKA中的ISR是什么

发布时间:2021-11-22 10:01:58 作者:iii
来源:亿速云 阅读:1812

这篇文章主要介绍“KAFKA中的ISR是什么”,在日常操作中,相信很多人在KAFKA中的ISR是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”KAFKA中的ISR是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

【ISR是什么】

首先,ISR的全称叫做: In-Sync Replicas (同步副本集),我们可以理解为和leader保持同步的所有副本的集合。

一个分区的所有副本集合叫做AR( Assigned Repllicas )

与leader-replica未能保持同步的副本集叫做OSR( Out-Sync Relipcas )

因此我们就能得到这么一个表示:AR = ISR + OSR,翻译一下就是一个分区的副本集分为同步集合非同步集合两部分。

那么我们可以假设一个场景,一个分区的AR集合为【0,1,2,3,4,5】,其中leader-replica是0

其中【1,2,3】作为follower和leader的数据保持同步,而【4,5】未能和leader保持同步,

那么此时,ISR=【0,1,2,3】,OSR=【4,5】

如果此时副本4追上了leader-replica,也就是和leader保持到了同步

那么此时,ISR=【0,1,2,3,4】,OSR=【5】

从上面的场景我们就可以明白,ISR动态维护了一个和leader副本保持同步副本集合,ISR中的副本全部都和leader的数据保持同步。

【ISR的作用是什么】

我们思考一下,我们知道了与leader保持同步的副本集后,可以做到哪些事情?

1、当我们生产消息的时候,到底要写入多少副本才能算成功呢?

2、当leader挂了之后,我们应该选择哪个follower来成为新的leader呢?

那么对应的,通过ISR,我们知晓了哪些follower与leader保持着同步,

那么我们就可以在写入消息的时候,设置写入处于ISR中所有的副本才算成功,

那么我们在进行leader切换的时候,就可以从ISR中选择对应的follower成为新的leader。

这就是ISR的作用:是通过副本机制实现消息高可靠,服务高可用时,不可缺少的一环;这也是为什么讲到副本不得不提到ISR的原因。

【为什么要设计ISR机制】

在一些中间件中,都有副本的概念,在不同的场景下写入数据时,要求写入副本的个数也不尽相同。

例如zk中要求写入的节点个数大于一半才算成功,或者有些要求高可靠性的场景,规定写入所有副本才能算成功。

而kafka的ISR可以允许生产消息时,根据自己的业务场景自行配置想要达到的效果:

acks=0:fire and forget,也就是我发了就算完了,后续成不成功我都不管,这种设置下消息的高可靠性几乎没有保障,但是有极大的吞吐量。

acks=1:写入主节点就算成功,这种设置,可以保障一定的高可靠性,也具有不错的吞吐量。

acks=all:也就是写入ISR中所有的副本才算成功,这种设置下,就能提供较高的高可靠性,但是吞吐量就相对较低。

我们在考虑生产消息时,ISR机制可以友好的让使用者根据自己的业务需求去设置参数,去选择自己想要达到什么程度的可靠性,而不是只提供一种可靠性选择。

补充:我们的ISR是动态伸缩的,可能出现follower全部都挂了,ISR中只剩下leader,那么此时设置acks=all就等价于acks=1了

这样就会对高可靠性要求的场景产生危险,那么kafka提供了参数:min.insync.replicas

这个参数可以配置最少ISR中需要多少个副本,才能继续提供写服务。如果设置为2,一旦ISR中的个数小于2,那么就不再提供写服务,牺牲一定的可用性,来保障这种高可靠的场景需求。

最后,我们回答这个小节的问题:ISR机制的存在是kafka为了平衡可靠性和可用性,不指定提供高可靠或者高可用的服务,而是将决定权交给了使用者,让使用者通过参数来控制,到底要实现什么程度的高可靠与高可用。

到此,关于“KAFKA中的ISR是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. kafka的意思是什么
  2. Python中Kafka的作用是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kafka isr

上一篇:R语言方差齐次检验是怎样的

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》