kafka

【kafka】kafka Controller概念、作用、原理以

2022-11-23  本文已影响0人  Bogon

Kafka控制器你真得了解吗?

1、全局纵览架构变迁的故事
2、深入了解控制器的原理

控制器组件(Controller),是 Apache Kafka 的核心组件。
它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。

集群中任意一台 Broker 都能充当控制器的角色,但是,在运行过程中,只能有一个 Broker 成为控制器,行使其管理和协调的职责。
换句话说,每个正常运转的 Kafka 集群,在任意时刻都有且只有一个控制器。

官网上有个名为 activeController 的 JMX 指标,可以帮助我们实时监控控制器的存活状态。
这个 JMX 指标非常关键,你在实际运维操作过程中,一定要实时查看这个指标的值。

Apache ZooKeeper 是一个提供高可靠性的分布式协调服务框架。它使用的数据模型类似于文件系统的树形结构,根目录也是以“/”开始。该结构上的每个节点被称为 znode,用来保存一些元数据协调信息。

如果以 znode 持久性来划分,znode 可分为持久性 znode 和临时 znode。
持久性 znode 不会因为 ZooKeeper 集群重启而消失,而临时 znode 则与创建该 znode 的 ZooKeeper 会话绑定,一旦会话结束,该节点会被自动删除。

ZooKeeper 赋予客户端监控 znode 变更的能力,即所谓的 Watch 通知功能。
一旦 znode 节点被创建、删除,子节点数量发生变化,抑或是 znode 所存的数据本身变更,ZooKeeper 会通过节点变更监听器 (ChangeHandler) 的方式显式通知客户端。
依托于这些功能,ZooKeeper 常被用来实现集群成员管理、分布式锁、领导者选举等功能。

Kafka 控制器大量使用 Watch 功能实现对集群的协调管理。

我们一起来看一张图片,它展示的是 Kafka 在 ZooKeeper 中创建的 znode 分布。
你不用了解每个 znode 的作用,但你可以大致体会下 Kafka 对 ZooKeeper 的依赖。

image.png

Controller控制器保存了什么数据?


image.png image.png image.png image.png image.png image.png image.png

当你觉得控制器组件出现问题时,比如主题无法删除了,或者重分区 hang 住了,你不用重启 Kafka Broker 或控制器。
有一个简单快速的方式是,去 ZooKeeper 中手动删除 /controller 节点。
具体命令是 rmr /controller。这样做的好处是,既可以引发控制器的重选举,又可以避免重启 Broker 导致的消息处理中断。

参考

你一定不能错过的Kafka控制器
http://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/Kafka%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF%E4%B8%8E%E5%AE%9E%E6%88%98/26%20%20%E4%BD%A0%E4%B8%80%E5%AE%9A%E4%B8%8D%E8%83%BD%E9%94%99%E8%BF%87%E7%9A%84Kafka%E6%8E%A7%E5%88%B6%E5%99%A8.md

kafka Controller概念、作用、原理以及新老架构对比
https://www.bilibili.com/video/BV13L411L7CJ

上一篇下一篇

猜你喜欢

热点阅读