我在学习kafka的时候,学习到副本这一章节,知道了在kafka中,副本分为leader副本和follower副本。然后假如leader副本挂掉了,kafka会快速在follower副本中选取一个副本作为leader副本。
那么我的问题就是:
1、为啥我看网上说follower副本还分为ISR副本和普通副本?这个说法对吗?
2、假如follower副本真的分为分为ISR副本和普通副本,那这里的"普通副本"是指"OSR副本"吗?网上的说法太多,我都不确定“普通副本=OSR副本”这个观点是否正确了,因为我看资料说AR=ISR+OSR
3、对于选举的情况,网上说,kafka会从ISR副本里面选取一个作为leader,如果ISR副本都挂掉了,那就是去普通副本去拿吗?(即OSR副本?)
4、假如所有的副本都挂掉了,拿kafka会怎样做?网上的说法有几种,1:指定新leader为 -1;2、等待ISR中的第一个副本活过来选举为leader;3、等待所有副本中的第一个副本活过来选举为leader。说法都好多呀,但我不知道具体哪个是对的。。
关于ISR副本和普通副本:
ISR副本(In-Sync Replica):指与Leader副本保持同步的Follower副本。ISR副本是当前可用且保持与Leader副本同步的副本集合。
非ISR副本(Out-of-Sync Replica,OSR副本):指与Leader副本不同步或者不可用的Follower副本。非ISR副本可能由于网络延迟或副本故障而与Leader副本不同步。
"普通副本"通常指的是非ISR副本(OSR副本)。因此,普通副本不属于ISR副本集合,可能与Leader副本存在一定的数据差异。
当ISR副本中的所有副本都不可用时,Kafka将从非ISR副本(OSR副本)中选取一个作为新的Leader副本。这种情况下,非ISR副本将成为新的Leader副本,并开始处理数据请求。
如果所有副本(包括ISR副本和OSR副本)都不可用,Kafka将无法提供服务。在这种情况下,你可以根据需求选择适当的处理方式。一种可能的方法是等待所有副本恢复,并从第一个副本中选取一个作为新的Leader副本。另一种方法是根据业务需求手动指定新的Leader副本。
需要注意的是,Kafka的具体行为和策略可能在不同的版本中有所不同。因此,最好参考官方文档或特定版本的文档以获取准确的信息。
那我就一序号依次回答你的问题好了