以下内容摘自:Kafka权威指南 第五章 5.2小节

脑裂问题

什么是脑裂?

kafka中只有一个控制器controller 负责分区的leader选举,同步broker的新增或删除消息,但有时由于网络问题,可能同时有两个broker认为自己是controller,这时候其他的broker就会发生脑裂,不知道该听从谁的。

如何解决?controller epoch

每当新的controller产生的时候就会在zk中生成一个全新的、数值更大的controller epoch的标识,并同步给其他的broker进行保存,这样当第二个controller发送指令时,其他的broker就会自动忽略。

 

选举问题

每个消息有自己的topic 每个topic有多个分区 多个分区位于不同的broker 每个分区有一个主分区和多个从分区。

每个分区都有一个主分区(leader)和多个从分区(fowller)  当一个broker宕机时,存在与该broker的主分区也会停止服务,因此要重新选举新的leader分区。

如何选举

控制器会从zk中读取ISR列表 选取下一个有效的分区副本成为新的leader

 Kafka会在Zookeeper上针对每个Topic维护一个称为ISR(in-sync replica,已同步的副本)的集合,该集合中是一些分区的副本。如果这个集合有增减,kafka会更新zookeeper上的记录。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐