Apache kafka 在kafka connect中,领导者节点通常做什么?

Apache kafka 在kafka connect中,领导者节点通常做什么?,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我想将kafka connect群集设置为分布式模式。 假设这里有4个节点,如下所示: node1 node2 node3 node4 [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=9

我想将kafka connect群集设置为分布式模式。 假设这里有4个节点,如下所示:

node1
node2
node3
node4
[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)
我想将
节点1
设置为
播发的\u主机
,我想这将像一个领导者一样设置。还将
node1
设置为
REST\u主机
。 所以,当我运行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='1'这样的短语http://node1:8083/“
从日志中如下所示:

node1
node2
node3
node4
[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)
在这种情况下,我的观点是

  • 我读过文档,卡夫卡连接集群中没有领导者,但我认为这
    connect\u REST\u advised\u HOST\u NAME
    将节点设置为领导者;正如你在日志中看到的。我错了吗?如果我误解了,那么
    CONNECT\u REST\u advised\u HOST\u NAME
    的确切角色是什么
  • 我认为,
    CONNECT\u REST\u HOST\u NAME
    只让一个节点获得所有请求。但当我要求点头2、点头3或点头4时,他们表现得很好。。!所以我想知道这个变量的确切作用是什么
  • 最后,如果集群中有leader,leader节点通常做什么

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

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


广告端口通常仅在代理后与rest端口不同

谢谢您的回复!我了解了概念,但仍然对用法感到困惑。那么,我是不是用错了这些属性?我是否必须将播发的主机名设置为每个节点自己的名称,而不是每个节点的特定名称(就像我现在所做的那样)?播发的名称应该默认为自己的操作系统主机名。但是,当它位于容器中时,它是您在
docker ps
的第一列中看到的某个十六进制ID,并且容器不能以此名称相互通信。如果使用Docker Compose,则播发的名称可以是服务名称,也可以使用自己的主机名显式启动容器。在任何其他orchestrator中,这在很大程度上取决于您的网桥,但公布物理主机IP和转发连接服务器端口将允许所有入站外部通信解析群集