首页   快速返回

kafka副本机制     所属分类 kafka
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接口使用