在kafka connect中,一个leader节点通常做什么?

In kafka connect, what does a leader node usually do?

我想在分布式模式下设置一个kafka-connect集群。 让我假设这里有 4 个节点:

node1
node2
node3
node4

而且我想将 node1 设置为 ADVERTISED_HOST,我猜这是设置为领导者。也将 node1 设置为 REST_HOST。 所以,当我 运行 docker 容器时,我为每个节点设置环境变量,如下所示

    -e CONNECT_REST_HOST_NAME="node1" \
    -e CONNECT_REST_PORT="8083" \
    -e CONNECT_REST_ADVERTISED_HOST_NAME="node1" \
    -e CONNECT_REST_ADVERTISED_PORT="8083" \

然后,我可以从日志中看到像 leaderUrl='http://node1:8083/' 这样的短语:

[2021-04-28 18:24:09,320] INFO Joined group and got assignment: Assignment{error=0, leader='connect-1-303380fb-90ff-4c00-a302-a57ee8b4a0e4', leaderUrl='http://node1:8083/', offset=93, connectorIds=[], taskIds=[test5-0, test5-2]} (org.apache.kafka.connect.runtime.distributed.DistributedHerder)

在这种情况下,我的观点是,

所有节点都是平等的,但它们需要一种协议来相互分发任务和报告状态,或者至少向 /status 端点上的请求客户端报告状态。当任务分配发生时,领导只是暂时的——你不希望一台服务器说“处理任务 1,2”而另一台服务器说“2,3,4”

作为一个集群,节点需要知道如何在网络上相互引用,这就是广告属性的目的。其他两个属性设置 logs/responses 中的名称以及实际绑定的服务器端口。

通告的端口通常仅在代理后才与其余端口不同