在Kakfa中扮演的角色
Kafka將元數據信息保存在Zookeeper中,但是發(fā)送給Topic本身的數據是不會發(fā)到Zk上的,否則Zk就瘋了。kafka使用zookeeper來實現動態(tài)的集群擴展,不需要更改客戶端(producer和consumer)的配置。broker會在zookeeper注冊并保持相關的元數據(topic,partition信息等)更新。而客戶端會在zookeeper上注冊相關的watcher。一旦zookeeper發(fā)生變化,客戶端能及時感知并作出相應調整。這樣就保證了添加或去除broker時,各broker間仍能自動實現負載均衡。這里的客戶端指的是Kafka的消息生產端(Producer)和消息消費端(Consumer)Producer端使用zookeeper用來"發(fā)現"broker列表,以及和Topic下每個partition的leader建立socket連接并發(fā)送消息。也就是說每個Topic的partition是由Lead角色的Broker端使用zookeeper來注冊broker信息,以及監(jiān)測partition leader存活性.Consumer端使用zookeeper用來注冊consumer信息,其中包括consumer消費的partition列表等,同時也用來發(fā)現broker列表,并和partition leader建立socket連接,并獲取消息.zookeeper中信息
