当前位置:  开发笔记 > 运维 > 正文

为什么kafka生成器在初始化时采用代理端点而不是zk

如何解决《为什么kafka生成器在初始化时采用代理端点而不是zk》经验,为你挑选了2个好方法。

如果我有多个经纪人,我的生产者应该使用哪个经纪人?我是否需要手动切换代理以平衡负载?另外,为什么消费者只需要一个zookeeper端点而不是代理端点?

教程中的快速示例:

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

user2720864.. 29

我的制片人应该使用哪个经纪人
我是否需要手动切换代理以平衡负载?

Kafka在集群上运行,意味着节点集,因此在生成任何内容时,您需要告诉他LIST您为应用程序配置的代理,下面是从他们的文档中获取的一个小注释.

"metadata.broker.list"定义了Producer可以找到一个或多个Broker以确定每个主题的Leader的位置.这不需要是集群中的完整Broker集,但如果第一个Broker不可用,则应至少包含两个.无需担心找出哪个Broker是主题(和分区)的领导者,Producer知道如何连接到Broker并请求元数据然后连接到正确的Broker.

希望这清楚你的一些困惑

另外,为什么消费者只需要一个zookeeper端点而不是代理端点

这在技术上是不正确的,因为有两种类型的API,高级和低级消费者.

高级消费者基本上负责领导检测,线程问题等大部分事情,但是没有提供对消息的多少控制,这正是使用其他替代方案简单或低级别消费者的目的,您将在其中看到您需要提供经纪人,分区相关的详细信息.

因此,只有当您使用高级API时,Consumer才需要zookeeper端点,如果使用Simple,您需要提供其他信息



1> user2720864..:

我的制片人应该使用哪个经纪人
我是否需要手动切换代理以平衡负载?

Kafka在集群上运行,意味着节点集,因此在生成任何内容时,您需要告诉他LIST您为应用程序配置的代理,下面是从他们的文档中获取的一个小注释.

"metadata.broker.list"定义了Producer可以找到一个或多个Broker以确定每个主题的Leader的位置.这不需要是集群中的完整Broker集,但如果第一个Broker不可用,则应至少包含两个.无需担心找出哪个Broker是主题(和分区)的领导者,Producer知道如何连接到Broker并请求元数据然后连接到正确的Broker.

希望这清楚你的一些困惑

另外,为什么消费者只需要一个zookeeper端点而不是代理端点

这在技术上是不正确的,因为有两种类型的API,高级和低级消费者.

高级消费者基本上负责领导检测,线程问题等大部分事情,但是没有提供对消息的多少控制,这正是使用其他替代方案简单或低级别消费者的目的,您将在其中看到您需要提供经纪人,分区相关的详细信息.

因此,只有当您使用高级API时,Consumer才需要zookeeper端点,如果使用Simple,您需要提供其他信息


好答案.关于您可能希望更新的第二个问题的一些说明:高级消费者API直接使用ZK主要是因为*它将自己的数据写入ZK*-it [存储客户端(消费者,可能)的每个分区的最后一个偏移量已读过](https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example),我相信其他一些事情.在与静态代理列表连接后,一个简单的消费者[应该通过元数据API发现其他经纪人,领导者等](https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example).

2> dpkp..:

Kafka将单个代理设置为每个主题的每个分区的领导者.领导者负责处理对该分区的读写操作.您无法决定从非领导经纪人处读取或写入.

那么,向kafka-console-producer提供经纪人或经纪人列表意味着什么呢?那么,您在命令行上提供的经纪人或经纪人只是您的生产者的第一个联系点.如果您列出的代理不是您需要的主题/分区的领导者,那么您的生产者将获得当前的领导者信息(在kafka-speak中称为"主题元数据"),并在发送写入之前根据需要重新连接到其他代理.实际上,如果您的主题有多个分区,它甚至可以并行连接到多个代理(如果分区负责人是不同的代理).

第二个q:为什么消费者需要一个zookeeper列表来连接而不是经纪人列表?答案是,kafka消费者可以在"群组"中操作,而zookeeper则用于协调这些群组(群组如何工作是一个更大的问题,超出了本Q的范围).Zookeeper还存储主题的代理列表,因此消费者可以直接从zookeeper中提取代理列表,这使得额外的--broker-list有点多余.


但为什么生产者也不能从动物园管理员那里拉出经纪人名单?
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有