首页 > 解决方案 > 当我们只有一个经纪人时,多个 KAFKA_ADVERTISED_LISTENERS 意味着什么,而不是当我们有很多经纪人时?

问题描述

我正在学习 Kafka 并尝试将它与 docker 一起使用。我对 docker-compose 文件感到困惑,所以我想在这里问我的问题。

在大多数示例中,我看到这样的配置:

broker:
   image: confluentinc/cp-enterprise-kafka:5.3.1
   ...
   ports:
       - "29192:29092" 
       - "9192:9092"
   environment:
        ...
        KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092

我想了解与此相关的一些事情:

  1. 使用 5 位(例如:29092)端口与4 位(例如:9092)端口是否有特定的约定?
  2. 配置的代理数量与中提到的侦听器数量之间是否存在特定关系KAFKA_ADVERTISED_LISTENERS在某些地方,例如 confluent 自己的示例,我只看到一个经纪人,但有多个KAFKA_ADVERTISED_LISTENERS. 这意味着什么?
  3. 另外,在上面提到的同一个 confluent 示例中,有一个 listener: PLAINTEXT://broker:29092in KAFKA_ADVERTISED_LISTENERS,但是我们没有在端口 29092 上配置任何代理或 zookeeper,那它在做什么呢?

标签: dockerapache-kafka

解决方案


使用 5 位(例如:29092)端口与 4 位(例如:9092)端口是否有特定的约定?

为了避免在应用程序运行时出现端口冲突,您应该为应用程序配置端口超出服务器的临时端口范围。请参阅问题和答案以查找,如何查找或修改临时端口范围。所以约定是,在临时端口范围之外找到一个端口并用作应用程序端口。

配置的代理数量与 KAFKA_ADVERTISED_LISTENERS 中提到的侦听器数量之间是否存在特定关系?在某些地方,例如 confluent 自己的示例,我只看到一个代理,但有多个 KAFKA_ADVERTISED_LISTENERS。这意味着什么?

Kafka 可以部署在多个节点内的集群中。每个节点在文件中都有自己的 IP 和端口号config/server.properties。侦听器和广告侦听器的数量取决于 Kafka 部署中的节点数量。

此外,在上面提到的同一个融合示例中,在 KAFKA_ADVERTISED_LISTENERS 中有一个侦听器:PLAINTEXT://broker:29092,但是我们没有在端口 29092 配置任何代理或 Zookeeper,那么它在做什么呢?

Kafka 需要一个 Zookeeper 部署来管理其集群管理,无论 Kafka 只有一个节点还是多个节点。但它可以使用任何端口,并且没有硬性规定使用 29092 端口。


推荐阅读