我们知道,在kafka0.7中,我们可以为producer指定zk.connect,这样producer就可以找到broker的添加和删除。但是在kafka0.8中,我们不能为producer指定zk.connect。Kafka0.8的制作人能找到吗?如果不是,系统的可扩展性是否比0.7版本差?
eni9jsuy1#
您仍然可以使用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最好的之前p、 s:很抱歉把这个问题转述给你的另一个问题-但答案两者都适用;-)
jucafojl2#
有点搞不清楚您到底在找什么,在0.8中,我们必须指定 metadata.broker.list 财产
metadata.broker.list
Properties props = new Properties(); props.put("metadata.broker.list", "broker1:9092,broker2:9092");
从Kafka消费者的例子,他们说属性“metadata.broker.list”定义了生产者可以在何处找到一个或多个代理来确定每个主题的引导者。这不需要是集群中的完整代理集,但应该至少包括两个代理,以防第一个代理不可用。不必担心找出哪个代理是主题(和分区)的领导者,生产者知道如何连接到代理并请求元数据,然后连接到正确的代理。添加是指向集群添加新节点吗?
2条答案
按热度按时间eni9jsuy1#
您仍然可以使用zookeeper客户端检索代理列表:
因此,您不必在客户端“硬编码”代理列表,而且就系统架构而言,您是灵活的。但无论如何,这会再次增加zookeeper依赖性,这实际上在某些环境中对生产者是不利的。
如果您想获得所谓“群集元数据api”解决方案的详细视图,请查看以下链接:https://issues.apache.org/jira/browse/kafka-369
最好的
之前
p、 s:很抱歉把这个问题转述给你的另一个问题-但答案两者都适用;-)
jucafojl2#
有点搞不清楚您到底在找什么,在0.8中,我们必须指定
metadata.broker.list
财产从Kafka消费者的例子,他们说
属性“metadata.broker.list”定义了生产者可以在何处找到一个或多个代理来确定每个主题的引导者。这不需要是集群中的完整代理集,但应该至少包括两个代理,以防第一个代理不可用。不必担心找出哪个代理是主题(和分区)的领导者,生产者知道如何连接到代理并请求元数据,然后连接到正确的代理。
添加是指向集群添加新节点吗?