1.Zookeeper
Zookeeper对Kafka集群的管理操作主要是用了它的两个功能
- 节点(临时节点【zookeeper重启删除】持久节点)
- watch机制
老版本的劣势(完全使用Zookeeper进行管理):
Zookeeper进行完全进行kafka集群管理的劣势:
- 完全依赖于Zookeeper进行管理,每个Broker会在Zookeeper上为分区和副本注册大量的Watcher。当分区和副本发生变化的时候,会唤醒很多不必要的Watcher。会造成脑裂、羊群的效应。
- 会造成Zookeeper过载的隐患。
新版本的kafka使用了Controller只有Controller在zk上注册Watcher,其他的Broker极少需要在Zk上注册监听器,仅仅需要注册/controller监听器,去确定为一的activeControler即可。
2. Kafka Controller
首先即使是新版版的Kafka集群是比较依赖于Zookeeper的管理的,Kafka实现了Controller仅仅是对(kafka 控制器)Zookeeper的劣势进行了优化。
连接Zookeeper集群
./zkClient.sh server 127.0.0.1:2181
可以查看到当前Zookeeper下管控的节点。