Kafka 核心技术与实战:Kafka 控制器
一、Kafka 控制器
控制器组件(Controller),是 Apache Kafka 的核心组件。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。集群中任意一台 Broker 都能充当控制器的角色,但是,在运行过程中,只能有一个 Broker 成为控制器,行使其管理和协调的职责。换句话说,每个正常运转的 Kafka 集群,在任意时刻都有且只有一个控制器。
Kafka 控制器重度依赖 ZooKeeper,且大量使用 Watch 功能实现对集群的协调管理。

实际上,Broker 在启动时,会尝试去 ZooKeeper 中创建 /controller 节点,第一个成功创建 /controller 节点的 Broker 会被指定为控制器。
控制器故障转移(Failover)
故障转移指的是,当运行中的控制器突然宕机或意外终止时,Kafka 能够快速地感知到,并立即启用备用控制器来代替之前失败的控制器。这个过程就被称为 Failover,该过程是自动完成的,无需你手动干预。

控制器内部设计原理
在 Kafka 0.11 版本之前,控制器是多线程的设计,会在内部创建很多个线程,而这些线程还会访问共享的控制器缓存数据,为了保护数据安全性,控制器不得不在代码中大量使用 ReentrantLock 同步机制。
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content