docker - 当我们只有一个经纪人时,多个 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
我想了解与此相关的一些事情:
- 使用 5 位(例如:29092)端口与4 位(例如:9092)端口是否有特定的约定?
- 配置的代理数量与中提到的侦听器数量之间是否存在特定关系
KAFKA_ADVERTISED_LISTENERS
?在某些地方,例如 confluent 自己的示例,我只看到一个经纪人,但有多个KAFKA_ADVERTISED_LISTENERS
. 这意味着什么? - 另外,在上面提到的同一个 confluent 示例中,有一个 listener:
PLAINTEXT://broker:29092
inKAFKA_ADVERTISED_LISTENERS
,但是我们没有在端口 29092 上配置任何代理或 zookeeper,那它在做什么呢?
解决方案
使用 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 端口。
推荐阅读
- python - 使用“或”运算符
- javascript - 引导模式在 React JS 中不起作用
- angular6 - array.filter 不返回过滤结果
- javascript - 在 XSLT 中定义和调用 Javascript 函数
- apache - 如何在 Apache 中重写 URL 路径以避免无限循环
- javascript - 如何使用 Angular 或 javascript 重新加载页面
- python - Travis-ci installs packages from requirements.txt file automatically
- odoo - 在odoo 10中继承一个qweb模板(t-name)
- flutter - Flutter how to show Time Picker as widget
- ruby - 使用交互式 ruby (irb) 列出目录中的 Ruby 文件