美文网首页kafka
【kafka】kafka Controller概念、作用、原理以

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

作者: Bogon | 来源:发表于2022-11-23 00:01 被阅读0次

    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

    相关文章

      网友评论

        本文标题:【kafka】kafka Controller概念、作用、原理以

        本文链接:https://www.haomeiwen.com/subject/tpvaxdtx.html