首页  

为何kafka要去掉zookeeper依赖     所属分类 kafka 浏览量 869
运维复杂度 同时运维 zk 和 kafka

Controller故障处理
Kafaka依赖一个单一Controller节点跟Zookeeper进行交互,
如果这个Controller发生故障,需要从broker中选择新的Controller
新的Controller选举成功后,重新从Zookeeper拉取元数据进行初始化,
并且需要通知其他broker更新ActiveControllerId
老的Controller需要关闭监听、事件处理线程和定时任务
分区数很多时,这个过程非常耗时,而且这个过程中Kafka集群不能工作

分区瓶颈
当分区数增加时,Zookeeper保存的元数据变多,Zookeeper集群压力变大,
达到一定级别后,监听延迟增加,给Kafaka的工作带来了影响


KIP-500用Quorum Controller代替之前的Controller
Quorum中每个Controller节点都会保存所有元数据
通过KRaft协议保证数据一致性
如果 Quorum Controller节点出故障了,新的Controller迁移会非常快

官方介绍,升级之后,Kafka可以轻松支持百万级别的分区

KRaft 通过Raft协议同步数据  Kafka Raft Metadata mode 

目前去除Zookeeper的Kafka代码KIP-500 已经在2.8版本发布


Kafka集群中会有一个broker被选举为Controller 负责跟Zookeeper进行交互 负责管理整个Kafka集群中所有分区和副本的状态 其他broker监听Controller节点的数据变化 Controller的选举依赖Zookeeper 选举成功后,Zookeeper 创建 /controller 临时节点 Controller具体职责 监听分区变化 当某个分区leader出现故障时,Controller为该分区选举新的leader 当检测到分区的ISR集合发生变化时,Controller会通知所有broker更新元数据 当某个topic增加分区时,Controller会负责重新分配分区 监听topic相关的变化 监听broker相关的变化 集群元数据管理
kafka在zookeeper中的元数据 zookeeper在kafka中的应用

上一篇     下一篇
flink术语

flink datastream batch mode wordcount实例

flink内存管理机制

flink 运行模式 批处理与流处理模式

BigDecimal 使用注意点

小巧的Java编译器 Janino