Som*_*jit 7 apache-kafka docker
我正在学习 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
Run Code Online (Sandbox Code Playgroud)
我想了解一些与此相关的事情:
KAFKA_ADVERTISED_LISTENERS?在某些地方,例如 confluence 自己的示例,我只看到一个代理,但有多个KAFKA_ADVERTISED_LISTENERS。这意味着什么?PLAINTEXT://broker:29092in KAFKA_ADVERTISED_LISTENERS,但我们没有在端口 29092 处配置任何代理或 Zookeeper,那么它在做什么呢?KAFKA_ADVERTISED_LISTENERS是特定经纪人的地址列表。当客户端第一次联系充当“引导服务器”的代理时,它将返回负责每个分区的代理的地址。客户端将需要不同的地址,具体取决于它们来自哪个网络。“引导服务器”知道所有代理的“广告侦听器”,将根据客户端用于连接的其自己的侦听器来选择要返回的适当地址。
长话短说
来源:https ://rmoff.net/2018/08/02/kafka-listeners-explained/
- 使用 5 位数(例如:29092)端口与 4 位数(例如:9092)端口是否有特定的约定?
我相信唯一的约定是 9092 作为代理端口。当需要多个端口时,人们似乎会使用它的变体。我见过9093,现在29092。
- 配置的代理数量与 KAFKA_ADVERTISED_LISTENERS 中提到的侦听器数量之间是否存在特定关系?在某些地方,例如 confluence 自己的示例,我只看到一个代理,但看到多个 KAFKA_ADVERTISED_LISTENERS。这意味着什么?
没有关系。每个经纪人都有自己的KAFKA_ADVERTISED_LISTENERS名单。它仅指该特定经纪人,而不是其他经纪人。
当客户端连接到 kafka 时,它首先与充当“引导服务器”的代理进行通信。然后,该代理将使用元数据进行响应,其中包括客户端在谈论特定分区时应访问的特定代理的地址。这些地址将取决于客户端来自哪个网络。例如,localhost:9092对于 docker 主机中的客户端与broker:29092docker 网络中的客户端。这就是为什么一个经纪人可以拥有多个KAFKA_ADVERTISED_LISTENERS.
- 另外,在上面提到的同一个融合示例中,KAFKA_ADVERTISED_LISTENERS 中有一个侦听器:PLAINTEXT://broker:29092,但我们在端口 29092 上没有配置任何 Broker 或 Zookeeper,那么它在做什么呢?
在汇合示例中,该KAFKA_ADVERTISED_LISTENERS行实际上将代理配置为侦听 29092。docker 内部的所有客户端都使用此端口来访问代理。
顺便说一句,29092 不在ports:上面的映射中,因为它仅由内部客户端使用(不需要暴露给主机端口)。在这个例子中,只有 9092 需要暴露在 docker 之外。
| 归档时间: |
|
| 查看次数: |
7279 次 |
| 最近记录: |