我发现在Kafka 0.72中,我们可以指定zk。Connect或broker.list。但是在Kafka 0.8中,我们只能指定broker。列表,我们不能指定zk。连接时不指定broker.list。我认为,在这种情况下,我们不能平衡生产者和动物园管理员。如果有人使用Kafka 0.8,或者对它有一些了解?很多谢谢!
你仍然可以使用ZooKeeper客户端来检索代理列表:
ZkClient zkClient = new ZkClient("localhost:2108", 4000, 6000, new BytesPushThroughSerializer());
List<String> brokerList = zkClient.getChildren("/brokers/ips");
据此,您不必在客户端"硬编码"代理列表,并且就系统架构而言,您是灵活的。但无论如何,这将再次添加ZooKeeper依赖,这实际上是在一些环境中对producer不利的。
如果您想获得所谓的"集群元数据API"解决方案的详细视图,请查看此链接:https://issues.apache.org/jira/browse/KAFKA-369
最好以前在Kafka 0.8中,生产者通过新的集群元数据API进行负载均衡,并且不再使用Zookeeper。