我正在学习卡夫卡,并试图使用它与码头。我很困惑地看码头-撰写文件,所以我想问我的问题在这里。
在大多数示例中,我看到这样的配置:
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
我想了解几件与此相关的事情:
KAFKA_ADVERTISED_LISTENERS
?在一些地方,比如confluent自己的例子中提到的侦听器数量之间是否存在特定的关系,我只看到一个代理,但有多个KAFKA_ADVERTISED_LISTENERS
。那是什么意思?PLAINTEXT://broker:29092
in KAFKA_ADVERTISED_LISTENERS
,但是我们没有在端口29092配置任何代理或动物园管理员,那么这是在做什么呢?发布于 2021-05-27 18:06:06
KAFKA_ADVERTISED_LISTENERS
是特定代理的地址列表。当客户端第一次联系充当“引导服务器”的代理时,它将得到负责每个分区的代理的地址。客户端将需要不同的地址,这取决于它们来自哪个网络。知道所有代理的“广告侦听器”的“引导服务器”将根据客户端用来连接的侦听器中的哪一个选择返回适当的地址。
TL;博士
来源:https://rmoff.net/2018/08/02/kafka-listeners-explained/
我相信唯一的约定是9092作为中介港。当需要多个端口时,人们似乎使用它的一个变体。我见过9093,现在是29092。
没有任何关系。每个代理都有自己的KAFKA_ADVERTISED_LISTENERS
列表。它只指特定的经纪人,而不是其他经纪人。
当客户端连接到kafka时,它首先与充当“引导服务器”的代理进行对话。然后,该代理将使用元数据(包括客户端在讨论特定分区时应该到达的特定代理的地址)进行响应。这些地址将取决于客户端来自哪个网络。例如,码头主机中客户端的localhost:9092
与码头网络中客户端的broker:29092
。这就是为什么一个代理可以拥有多个KAFKA_ADVERTISED_LISTENERS
。
在合流示例中,该KAFKA_ADVERTISED_LISTENERS
行实际上正在配置代理以侦听29092。码头内部的所有客户端都在使用这个端口到达代理。
顺便说一下,29092不在上面的ports:
映射中,因为它只供内部客户端使用(不需要公开到主机端口)。在本例中,只需要将9092暴露在坞外。
发布于 2020-10-08 05:18:10
是否有使用5位(例如: 29092)端口与4位(例如: 9092)端口的特定约定?
为了避免在应用程序运行时获得端口冲突,应将应用程序的端口配置在服务器的临时端口范围之外。请参考这的问题和答案来查找,如何找到或修改临时端口范围。因此,约定是,在临时端口范围内查找一个端口,并将其用作应用程序端口。
配置代理的数量与KAFKA_ADVERTISED_LISTENERS中提到的侦听器数量之间是否存在特定的关系?在一些地方,比如confluent自己的例子,我只看到了一个代理,但是看到了多个KAFKA_ADVERTISED_LISTENERS。那是什么意思?
Kafka可以部署在多个节点内的集群中。每个节点在config/server.properties
文件中都有自己的IP和端口号。侦听器和广告侦听器的数量取决于您的Kafka部署中的节点数。
而且,在上面提到的相同的汇合示例中,KAFKA_ADVERTISED_LISTENERS中有一个侦听器:明文:// broker : 29092,但是我们没有在端口29092配置任何代理或动物园管理员,那么这是在做什么呢?
Kafka需要部署一个动物园管理员来管理其集群管理,而不管只存在一个Kafka节点还是多个节点。但是它可以使用任何端口,而且使用29092端口也没有硬性的规则。
https://stackoverflow.com/questions/64255917
复制相似问题