zookeeper和Kafka的关系
01
Kafka选择使用Zookeeper来进行Broker的管理,表现在zookeeper上会有一个专门用来进行Broker服务器列表记录的点,节点路径为/brokers/ids
只要Broker服务器启动,都会到Zookeeper上进行注册,创建/brokers/ids/[0-N]的节点,然后写入IP,端口等信息,Broker创建的是临时节点,一旦Broker上线或者下线,对应Broker节点也就被删除了。因此可以通过zookeeper上Broker节点的变化来动态表征Broker服务器的可用性,Kafka的Topic也类似于这种方式。
02
负载均衡,生产者需要将消息合理的发送到分布式Broker上,这就面临如何进行生产者负载均衡问题。
对于生产者的负载均衡,Kafka支持传统的4层负载均衡,zookeeper同时也支持zookeeper方式来实现负载均衡。
使用zookeeper进行负载均衡,生产者通过监听zookeeper上Broker节点感知Broker,Topic的状态,变更,来实现动态负载均衡机制,这个机制Kafka已经结合zookeeper实现了。
03
记录消息分区与消费者的关系,都是通过创建修改zookeeper上相应的节点实现
04
记录消息消费进度Offset记录,都是通过创建修改zookeeper上相应的节点实现。