kafka副本机制
所属分类 kafka
浏览量 1300
topic每个partition都有N个副本(Replica)。
副本数一定小于broker个数,副本必须保存在不同的broker上 ,
对于每个partition而言,每个broker上最多只有一个副本,默认将副本均匀分布到所有的broker上。
默认副本数为3
1个leader 副本 + 2个为follower副本
follower 向leader pull 拉取数据
消费者从leader拉取数据
读和写 都是针对leader
producer发布数据两种方式 同步和异步
同步 follower拉取到数据后 leader才做 commit
异步 leader收到数据后,立即commit , 不需要等待follower
ISR模式
in-sync-Replica
leader维护一个基本与其保持同步的副本列表
ISR是动态变化的,follower同步数据大步落后于leader时,会将其从ISR中移除
replica.lag.time.max (毫秒)
replica.lag.max.messages
如何确定副本是滞后的
一般基于时间来判断
replica.lag.max.messages 不推荐使用
topic配置
min.insync.replicas:ISR中最少的follower个数。一般设置成大于1的,否则如果最后的一个broker挂了,则数据就丢失了。
producer配置
request.required.acks
0 1 -1
0 producer发送完数据后,不等待broker确认即发送下一条数据
1 producer发送完数据后,等到leader确认后,发送下一条数据
-1 producer等待ISR中的follower确认后发送下一条数据
宕机如何恢复
少部分副本宕机
当leader挂了,从follower选择一个作为leader。
全部副本宕机 两种恢复方式
1 等待ISR中的一个恢复后,选它作为leader。(等待时间较长,降低可用性)
2 选择第一个恢复的副本作为新的leader,无论是否在ISR中。(并未包含之前leader commit的数据,因此造成数据丢失)
上一篇
下一篇
elasticsearch5.0索引状态管理
线上故障处理
elasticsearch aerospike kafka副本数设置
网络杠精定律
ELKstack中文指南之elasticsearch架构原理
ELKstack中文指南之elasticsearch接口使用