Kafka的zookeeper、kraft、controller

Kafka 中 ZooKeeper 和 Kraft 模式的区别:

在早期的 Kafka 版本中,Kafka 集群依赖于 ZooKeeper 来进行元数据管理、协调和集群管理。 而在 Kafka 3.x 版本之后,引入了 Kraft 模式,可以替代 ZooKeeper,实现无 ZooKeeper 的部署。

1. ZooKeeper 模式:

  • 依赖 ZooKeeper: Kafka Broker 需要连接到 ZooKeeper 集群,获取集群的元数据信息。
  • 元数据存储: Kafka 集群的元数据 (例如 Topic 信息、分区信息、Broker 信息等) 存储在 ZooKeeper 中。
  • Controller 选举: Kafka Controller 的选举由 ZooKeeper 完成。
  • 复杂性: 增加了部署和管理的复杂性,需要维护额外的 ZooKeeper 集群。
  • 性能瓶颈: ZooKeeper 的性能可能成为 Kafka 集群的瓶颈,尤其是在大规模集群中。
  • 外部依赖: 对外部系统 ZooKeeper 有依赖,增加了维护的成本。

2. Kraft 模式:

  • 无 ZooKeeper 依赖: Kafka 集群不再需要连接到 ZooKeeper,而是使用 Kafka 内部的 Kraft 机制进行元数据管理。
  • 元数据存储: Kafka 集群的元数据存储在 Controller 节点的内部存储中,而不是 ZooKeeper。
  • Controller 选举: Kafka Controller 的选举由 Kafka 集群内部的 Kraft 机制完成。
  • 简化部署: 简化了部署和管理,不需要维护额外的 ZooKeeper 集群。
  • 性能提升: 提高了性能,减少了对外部系统的依赖。
  • 内部管理: 元数据管理和集群协调更加紧密地集成在 Kafka 内部。

总结:

特性 ZooKeeper 模式 Kraft 模式
依赖 依赖 ZooKeeper 集群 不依赖 ZooKeeper,使用内部 Kraft 机制
元数据存储 存储在 ZooKeeper 中 存储在 Controller 节点内部
Controller 选举 由 ZooKeeper 完成 由 Kraft 机制完成
部署和管理 复杂,需要维护 ZooKeeper 集群 简化,无需维护 ZooKeeper 集群
性能 性能可能受 ZooKeeper 限制 性能更高,减少外部依赖
维护成本 维护成本较高,需要维护 ZooKeeper 集群 维护成本较低,无需维护 ZooKeeper 集群

什么是 Controller?

在 Kafka 集群中,Controller 是一个特殊的 Broker,负责管理集群的元数据和执行一些关键的管理任务。Controller 是 Kafka 集群的核心组件之一,它负责协调和控制整个集群的运行。

Controller 的作用:

  1. 分区管理:
    • 维护 Topic 分区的副本信息。
    • 决定每个分区的 Leader 和 Follower。
    • 当 Leader Broker 发生故障时,进行 Leader 的重新选举。
  2. 副本管理:
    • 维护 Topic 分区的副本列表。
    • 监控副本的状态,确保副本的同步。
    • 当副本发生故障时,进行副本的重新分配。
  3. Broker 管理:
    • 监控 Broker 的状态,例如 Broker 是否在线、是否正常工作。
    • 当 Broker 加入或离开集群时,更新集群的元数据。
  4. Topic 管理:
    • 创建、删除和修改 Topic。
    • 管理 Topic 的分区和副本。
  5. 元数据管理:
    • 维护整个集群的元数据信息。
    • 将元数据信息同步到所有 Broker。
  6. 集群协调:
    • 协调 Kafka 集群的各项操作,例如分区重分配、Broker 扩容等。

Controller 的位置:

  • ZooKeeper 模式: 在 ZooKeeper 模式下,Controller 是由 ZooKeeper 选举产生的。Kafka 集群中的所有 Broker 都会竞争成为 Controller,最终只有一个 Broker 会被选举为 Controller。
  • Kraft 模式: 在 Kraft 模式下,Controller 是由 Kafka 集群内部的 Kraft 机制选举产生的。 Controller 是集群中具有特殊角色的 Broker,负责管理集群的元数据和执行管理任务。

总结:

  • ZooKeeper 模式: Kafka 依赖 ZooKeeper 进行元数据管理和协调,需要维护额外的 ZooKeeper 集群。
  • Kraft 模式: Kafka 不依赖 ZooKeeper,使用内部的 Kraft 机制进行元数据管理,简化了部署和管理,提高了性能。
  • Controller: 是 Kafka 集群的核心组件,负责管理集群的元数据、分区、副本和 Broker。
  • Controller 的位置: 在 ZooKeeper 模式下,Controller 由 ZooKeeper 选举产生;在 Kraft 模式下,Controller 由 Kafka 集群内部的 Kraft 机制选举产生。

Kafka的zookeeper、kraft、controller
https://blog.t-ao.cn/2025/03/19/Kafka的zookeeper、kraft、controller/
作者
TAO
发布于
2025年3月19日
许可协议