我应该将zookeeper节点传递给pykafka的kafkaclient吗?

z5btuh9x  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(440)

pykafka的kafkaclient示例显示了传递给客户端构造函数的kafka节点:

from pykafka import KafkaClient
client = KafkaClient(hosts="127.0.0.1:9092")

因此,如果我有多个kafka节点,我可以将它们全部作为主机的一部分传递。但是,由于zookeeper知道所有的kafka节点,因此似乎更好的方法是传递zookeeper集群的位置。
这种情况下最好的做法是什么?pykafka是否支持将zookeeper节点传递给客户端构造函数?

v2g6jxz6

v2g6jxz61#

澄清一下这里的讨论:自从这个pull请求之后,pykafka支持 zookeeper_hosts 作为一个夸尔格 KafkaClient . 这允许用户在示例化客户端时指定zookeeper或kafka节点- zookeeper_hosts 优先于 hosts 如有规定。这仅仅是为了方便起见,但是-在任何pykafka组件中,除了 BalancedConsumer . 使用时 KafkaClient 示例化, zookeeper_hosts 只是用来自动发现Kafka经纪人的主机名。

pjngdqdw

pjngdqdw2#

对Kafka来说,没有必要。您可以提供用于连接的kafka主机的逗号分隔列表(here:httphttp://pykafka.readthedocs.org/en/latest/api/client.html)或kazooclient connect string(其中包含zookeeper信息、zookeeper的主机和端口)。从\u get \u metadata()函数的源代码中,集群对象从zookeeper(如果提供了zookeeper主机IP)获取代理信息。在这里https://github.com/parsely/pykafka/blob/1b2d030b073f276c18fd6b1a64320de58d4d7904/pykafka/cluster.py).
对于其他客户端,例如pykafka.balancedconsumer.balancedconsumer,您可能需要提供zookeeper信息(http://pykafka.readthedocs.org/en/latest/api/balancedconsumer.html).
顺便说一句,请仔细阅读文档,现在并非所有java客户机或协议中定义的功能都在python客户机中实现。

相关问题