2

我发现在 Kafka 0.72 中,我们可以指定 zk.connect 或 broker.list。但是在 Kafka 0.8 中,我们只能指定 broker.list ,不能指定 zk.connect 而不指定 broker.list。我认为,在这种情况下,我们无法通过 zookeeper 来平衡生产者。如果有人使用Kafka 0.8,或者对此有所了解?非常感谢!

4

2 回答 2

3

您仍然可以使用 ZooKeeper 客户端来检索代理列表:

ZkClient zkClient = new ZkClient("localhost:2108", 4000, 6000, new BytesPushThroughSerializer());
List<String> brokerList = zkClient.getChildren("/brokers/ips");

据此,您不必在客户端“硬编码”代理列表,并且就系统架构而言,您是灵活的。但无论如何,这会再次添加 ZooKeeper 依赖项,这实际上对多个环境中的生产者来说是一个劣势。

如果您想详细了解所谓的“集群元数据 API”解决方案,请查看此链接:https ://issues.apache.org/jira/browse/KAFKA-369

最好的

于 2013-02-08T22:36:49.353 回答
0

在 Kafka 0.8 中,生产者通过新的集群元数据 API 进行负载平衡,并且为此目的使用 Zookeeper 已被删除。

于 2013-01-07T08:25:28.323 回答