当前位置: 首页 > news >正文

Zookeeper 在 Kafka 中扮演了什么角色?

在 Apache Kafka 的早期架构中,ZooKeeper 扮演了分布式协调服务角色,负责管理和协调整个 Kafka 集群。 尽管新版本的 Kafka 正在逐步移除对 ZooKeeper 的依赖,但在许多现有和较早的系统中,了解 ZooKeeper 的作用仍然非常重要。

ZooKeeper 在 Kafka 中的核心角色包括:

  • 集群成员管理(Broker 注册): Kafka 集群中的每个 Broker(节点)在启动时都会向 ZooKeeper 注册自己的信息,例如 IP 地址和端口。 这种注册通常是临时的,意味着如果一个 Broker 宕机或与 ZooKeeper 的连接断开,它注册的节点就会被自动删除。 这使得集群中的其他组件能够动态地感知到 Broker 的加入或离开。

  • 控制器选举(Controller Election): 集群中会有一个 Broker 被选举为“控制器”,负责管理分区的状态、副本的分配以及处理 Broker 的故障转移。 ZooKeeper 负责这一选举过程,确保在任何时候集群中只有一个活跃的控制器,避免了“脑裂”问题。

  • 元数据存储: ZooKeeper 是 Kafka 集群元数据的权威存储中心。 这包括:

    • Topic 配置信息: 关于每个 Topic 的分区数量、副本因子、配置覆盖等信息都存储在 ZooKeeper 中。
    • 分区和副本状态: ZooKeeper 记录了每个分区的 Leader 副本是哪个 Broker,以及哪些 Broker 是 Follower 副本(ISR,In-Sync Replicas)。
    • 消费者组信息: ZooKeeper 存储了每个消费者组消费的 Topic,以及每个分区被哪个消费者消费的对应关系。
  • 负载均衡: 生产者和消费者客户端通过监听 ZooKeeper 中的节点变化,来动态地发现 Broker 列表和 Topic 的分区信息。 当有新的 Broker 加入或有 Broker 宕机时,客户端能够及时获取最新的集群状态,从而实现生产和消费的负载均衡。

  • 消费进度记录(Offset 存储): 在旧版本的 Kafka 中,消费者会将其消费每个分区的进度(Offset)定期提交到 ZooKeeper 中进行存储。 这确保了消费者在重启或重新分配分区后,可以从上次消费的位置继续处理消息。不过,新版本的 Kafka 已经将 Offset 的存储移到了 Kafka 内部的一个名为 __consumer_offsets 的 Topic 中。

  • 访问控制列表(ACLs): Kafka 的安全访问控制列表信息也存储在 ZooKeeper 中,用于管理客户端的读写权限。

未来趋势:移除 ZooKeeper

从 Kafka 2.8.0 版本开始,社区通过 KIP-500 提案引入了基于 Raft 协议的内置共识机制(称为 KRaft),目标是完全移除对 ZooKeeper 的依赖。 在这种新模式下,Kafka 集群自己管理元数据,从而简化了部署和运维,并提高了可扩展性和性能。

http://www.dtcms.com/a/336785.html

相关文章:

  • 密码管理中随机数安全修复方案
  • ELF 动态链接安全:揭秘 RUNPATH 与 RPATH 的库劫持风险
  • AI重塑商业格局:从多模态生成到智能应用的2025行业变革与机遇
  • 【完整源码+数据集+部署教程】无人机目标检测系统源码和数据集:改进yolo11-efficientViT
  • 云原生:重塑软件世界的技术浪潮与编程语言选择
  • redis-集成prometheus监控(k8s)
  • GORM入门:事务管理全解析(二)
  • 机器学习的多种算法
  • 网络间的通用语言TCP/IP-网络中的通用规则2
  • 视觉语言导航(14)——VLN ON ROBOTIC 4.4
  • 力扣32:最长有效括号
  • 飞算JavaAI家庭记账系统:从收支记录到财务分析的全流程管理方案
  • 可编辑150页PPT | 某制造集团产业数字化转型规划方案
  • RH134 管理网络安全知识点
  • 多台服务器批量发布arcgisserver服务并缓存切片
  • JVM 内存管理与垃圾回收机制
  • SQL语法大全指南
  • Unity引擎播放HLS自适应码率流媒体视频
  • 实战测试:多模态AI在文档解析、图表分析中的准确率对比
  • 特征工程学习笔记
  • HTML应用指南:利用POST请求获取上海黄金交易所金价数据
  • PYTHON让繁琐的工作自动化-猜数字游戏
  • 万字长文深度解析HTTPS协议
  • 新手向:Java方向讲解
  • 问答社区运营优化:cpolar 提升 Answer 平台远程访问速度方案
  • 【前端面试题】JavaScript 核心知识点解析(第三十一题到第六十一题)
  • 智能汽车领域研发,复用云原生开发范式?
  • 迅速掌握Git通用指令
  • linux 常用代码
  • [优选算法专题二滑动窗口——将x减到0的最小操作数]