赞
踩
在Kafka中,每个topic都可以配置多个分区以及多个副本。每个分区都有一个leader以及0个或者多个follower,在创建topic时,Kafka会将每个分区的leader均匀地分配在每个broker上。我们正常使用kafka是感觉不到leader、follower的存在的。但其实,所有的读写操作都是由leader处理,而所有的follower都复制leader的日志数据文件,如果leader出现故障时,follower就会被选举为leader**。**所以,可以这样说:
l Kafka中的leader负责处理读写操作,而follower只负责副本数据的同步
l 如果leader出现故障,其他follower会被重新选举为leader
l follower像一个consumer一样,拉取leader对应分区的数据,并保存到日志数据文件中
在实际环境中,leader有可能会出现一些故障,所以Kafka一定会选举出新的leader。在讲解leader选举之前,我们先要明确几个概念。Kafka中,把follower可以按照不同状态分为三类——AR、ISR、OSR。
Kafka启动时,会在所有的broker中选择一个controller
leader和follower是针对partition,而controller是针对broker的
创建topic、或者添加分区、修改副本数量之类的管理任务都是由controller完成的
Kafka分区leader的选举,也是由controller决定的
为什么不能通过ZK的方式来选举partition的leader?
Kafka集群如果业务很多的情况下,会有很多的partition
假设某个broker宕机,就会出现很多的partiton都需要重新选举leader
如果使用zookeeper选举leader,会给zookeeper带来巨大的压力。所以,kafka中leader的选举不能使用ZK来实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。