291294878

2018-10-22   阅读量: 701

大数据

kafka的副本管理怎么解释?

扫码加入数据分析学习群

每个broker可以划分为多个partition,partiton可以多于broker数,每个partition有多个副本。为了更好的做负载均衡,Kafka尽量将所有的Partition均匀分配到整个集群上。Kafka分配副本的算法如下:

1)将所有Broker(假设共n个Broker)和待分配的Partition排序

2)将第i个Partition分配到第(i mod n)个Broker上

3)将第i个Partition的第j个Replica分配到第((i + j) mod n)个Broker上

在正常情况下,每个partition有一个leader和0到多个follower。leader处理对应分区上所有的读写请求。leader也是分布式的。follower的日志和leader的日志是相同的,follower被动的复制leader。如果leader挂了,其中一个follower会自动变成新的leader。kafka采用ISR(In-SyncReplicas同步副本)来管理各副本

1)kafka动态的维护了一组insync(ISR)的复本,表示已追上了leader,只有处于该状态的成员组才是能被选择为leader。这些ISR组会在发生变化时被持久化到zookeeper中。

2)如果follower挂掉或卡住或落得很远,便会进入到Out-of-SyncReplicas列表中,leader则会移除Out-of-SyncReplicas列表中的副本。至于落了多远才叫远由replica.lag.max.messages设置,而表示复本“卡住”由replica.lag.time.max.ms设置。(在$KAFKA_HOME/config/server.properties中配置)

0.0000 0 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子