-
分区副本机制:每个kafka中分区都可以构建多个副本,相同分区的副本存储在不同的节点上
-
为了保证安全和写的性能:划分了副本角色
-
leader副本:对外提供读写数据
-
follower副本:与Leader同步数据,如果leader故障,选举一个新的leader
-
选举实现:Kafka主节点Controller实现
-
-
AR:All - Replicas
-
所有副本:指的是一个分区在所有节点上的副本
Partition: 0 Replicas: 1,0
-
-
ISR:In - Sync - Replicas
-
可用副本:所有正在与Leader同步的Follower副本
Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0
-
列表中:按照优先级排列【Controller根据副本同步状态以及Broker健康状态】,越靠前越会成为leader
-
如果leader故障,是从ISR列表中选择新的leader
-
如果生产者写入数据:ack=all,写入所有ISR列表中的副本,就返回ack
-
-
OSR:Out - Sync - Replicas
-
不可用副本:与Leader副本的同步差距很大,成为一个OSR列表的不可用副本
-
原因:网路故障等外部环境因素,某个副本与Leader副本很久没有同步
-
判断是否是一个OSR副本?
-
0.9之前:时间和数据差异
replica.lag.time.max.ms = 10000 可用副本的同步超时时间 replica.lag.max.messages = 4000 可用副本的同步记录差,该参数在0.9以后被删除
-
0.9以后:只按照时间来判断
replica.lag.time.max.ms = 10000 可用副本的同步超时时间
-
-
写入、Leader选举:都只从ISR列表中选取
-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)