# kafka raft

新版本kafka使用内部实现的raft协议来代替zookeeper,实现配置管理、leader选举等功能。

# 为什么要替换zookeeper

  1. 简化kafka的部署和配置,使用zookeeper时,管理人员还需要掌握zookeeper的搭建、配置、维护。
  2. 减少外部依赖
  3. 提升一致性,当前kafka的broker集群中的实例的部分状态存储在zookeeper中,导致kafka无法实时判断自己的状态是否是最新的。

# 架构变化

img.png

在旧的架构中,broker中的controller节点和zookeeper连接,然后把状态变化推送给其他broker节点。 而在新的架构中,broker中的几个controller节点组成raft集群代替了zookeeper,其他的broker节点从controller的raft集群的leader中拉取metadata的变化。