Kafka进阶
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4.5 ZooKeeper在Kafka中的作用

Kafka使用ZooKeeper来实现动态的集群扩展,不需要更改客户端(生产者和消费者)的配置。Broker会在ZooKeeper中注册并保持相关的元数据(Topic、Partition信息等)更新。客户端会在ZooKeeper上注册相关的Watcher。一旦ZooKeeper发生变化,客户端能及时感知并作出相应调整。这样就保证了在添加或去除Broker时,各Broker间仍能自动实现负载均衡。Broker端使用ZooKeeper来注册Broker信息,以及监测Partition Leader的存活性。

从生产者和消费者的角度来看,消费者端使用ZooKeeper来注册消费者消费的信息,其中包括消费者消费的Partition列表等,同时也用来发现Broker列表,并和Partition Leader建立socket连接,并获取消息;ZooKeeper和生产者之间没有建立关系,只和Broker、消费者建立关系以实现负载均衡,即同一个消费者组中的消费者可以实现负载均衡。