我们知道,在 kafka 0.7 中,我们可以为 producer 指定 zk.connect,以便 producer 可以找到 broker 的添加和删除。但是在 kafka 0.8 中,我们不能为生产者指定 zk.connect。kafka 0.8中的生产者可以找到吗?如果不是,系统的扩展性不比0.7版本差吗?
问问题
1688 次
2 回答
2
您仍然可以使用 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
最好的
预
PS:很抱歉将其重新发布到您的其他问题 - 但答案适合两者;-)
于 2013-02-08T22:40:01.523 回答
0
有点困惑您到底在寻找什么,在 0.8 中我们必须指定metadata.broker.list
属性中的经纪人列表
Properties props = new Properties();
props.put("metadata.broker.list", "broker1:9092,broker2:9092");
从他们说的卡夫卡消费者示例中
属性“metadata.broker.list”定义了生产者可以在哪里找到一个或多个代理来确定每个主题的领导者。这不需要是集群中的全套代理,但应至少包括两个,以防第一个代理不可用。无需担心找出哪个 Broker 是主题(和分区)的领导者,生产者知道如何连接到 Broker 并请求元数据,然后连接到正确的 Broker。
说添加是指将新节点添加到集群中吗?
于 2013-08-22T11:09:05.120 回答