Apache kafka Kafka Producer API:bootstrap.servers属性值

Apache kafka Kafka Producer API:bootstrap.servers属性值,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我正在学习Kafka Producer API,在教程中,他们提到“bootstrap.servers”是指定当前正在运行的代理的强制属性(以逗号分隔的值)。我怀疑为什么制作人提供所有经纪人的名单为什么制作人不提供动物园管理员的地址和端口,动物园管理员会识别经纪人。以下是一些原因: 延迟增加:使用zookeepers与客户端进行读/写操作将导致额外的延迟,因为zookeepers将充当客户端和代理之间的中介 增加的资源需求:在卡夫卡,经纪人为主题数据的管理进行繁重的计算,如果动物园管理员充当调解

我正在学习Kafka Producer API,在教程中,他们提到“bootstrap.servers”是指定当前正在运行的代理的强制属性(以逗号分隔的值)。我怀疑为什么制作人提供所有经纪人的名单为什么制作人不提供动物园管理员的地址和端口,动物园管理员会识别经纪人。

以下是一些原因:

  • 延迟增加:使用zookeepers与客户端进行读/写操作将导致额外的延迟,因为zookeepers将充当客户端和代理之间的中介
  • 增加的资源需求:在卡夫卡,经纪人为主题数据的管理进行繁重的计算,如果动物园管理员充当调解人,他们将不得不处理大量的数据流入和流出,导致动物园管理员的资源(CPU/内存)需求增加

  • 从Kafka 0.9开始,客户端连接不再需要Zookeeper。该属性过去被称为
    Zookeeper.connect
    ,它确实起到了您所说的作用——找到代理

    代理列表由指定为控制器的Kafka服务器存储/返回,Zookeeper不会将列表返回给客户端


    最终的目标是

    生产者不需要定义所有的经纪人。只需提供子集,然后客户端将从其中一台服务器(活动控制器)获取整个群集拓扑。

    是否确定“列表未存储在Zookeeper”部分?当您使用CLI浏览ZooKeeper时,可以看到一个代理列表(Kafka~2.3)。更重要的是,ZooKeeper帮助选择控制器,因此它需要知道代理。/brokers/id存储在ZooKeeper中,是的。当管理员在controllerI上达到法定人数后,实际的领导人选举RPC调用将通过代理进行。我不确定这些原因中的任何一个。例如,你能证明Pulsar的分层架构比Kafka慢吗?