一线大厂面试真题-什么是ISR,为什么需要引入ISR

问题解答

首先,发送到Kafka Broker上的消息,最终是以Partition的物理形态来存储到磁盘上

(如图)而Kafka为了保证Parititon的可靠性,提供了Partition的副本机制,然后在这些Partition副本集里面。

存在Leader Partition和Flollower Partition

生产者发送过来的消息,会先存到Leader Partition里面,然后再把消息复制到Follower Partition,这样设计的好处就是一旦Leader Partition所在的节点挂了,可以重新从剩余的Partition副本里面选举出新的Leader。

然后消费者可以继续从新的Leader Partition里面获取未消费的数据。

Partition多副本设计的案里面,有两个很关键的需求。

    1、副本数据的同步

    2、新 Leader 的选举

两个需求都需要涉及到网络通信,Kafka为了避免网络通信延迟带来的性能问题,以及尽可能的保证新选举出来的Leader Partition里面的数据是最新的,所以设计了ISR这样一个方案。

ISR全称是in-sync replica,它是一个集合列表,里面保存的是和Leader Parition点数据最接近的Follower Partition

如果某个Follower Partition里面的数据落后Leader太多,就会被剔除ISR列表。简单来说,ISR列表里面的节点,同步的数据一定是最新的,所以后续的Leader选举,只需要从ISR列表里面筛选就行了。

所以,引入ISR这个方案的原因有两个

  1.   尽可能的证数据同步的效率,因为同步效率不高的节点都会被踢出ISR列表。
  2.   避免数据的丢失,因为ISR里面的节点数据是和Leader副本最接近的。

面试总

这个问题非常有研究价值。

一般说,副本数据同步,无非就是同步阻塞、或者异步非阻塞。

是这两种方案,要么带来性能问题,要么带来数据丢失问题,都不是特别合适。

ISR非常完美解决了这个问题,在实际过程中,我们也可以借鉴类似的设计思路。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值