在kafka中,每个topic都可以配置多个分区以及多个副本。
每个分区都有 一个leader以及0个或者多个follower,在创建topic的时,kafka会将不同分区的leader均匀的分配在每个broker上。
比如主题test有partition1,partition2,partition3共3个分区,其中partition1有3个副本,一个leader,两个follower。
我们正常使用kafka是感觉不到leader,follower的存在的。但其实,所有的读写操作都是由leader处理,而所有的follower都复制leader的日志数据文件,如果leader出现故障时,follower就会被选举为leader。
所以,可以这样说:
kafka中的leader负责处理读写操作,而follower只负责副本数据的同步如果leader出现故障,其他follower会被重新选举为leader,follower像一个consumer一样,拉取leader对应分区的数据,并保存到日志数据文件中。