在kafka连接中,领导者节点通常做什么



我想在分布式模式下设置一个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)

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

  • 我读过文档,在kafka-connect集群中没有领导者,但我认为这个CONNECT_REST_ADVERTISED_HOST_NAME设置了一个节点作为领导者;正如您在日志中看到的。我错了吗?如果我误解了,CONNECT_REST_ADVERTISED_HOST_NAME的确切作用是什么
  • 我认为CONNECT_REST_HOST_NAME只让一个节点获得所有请求。但当我请求node2、node3或node4时,它们工作得很好。。!所以我想知道这个变量的确切作用是什么
  • 最后,如果集群中有领导者,那么领导者节点通常会做什么

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

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

当在代理后面时,公布的端口通常只与其他端口不同

相关内容

  • 没有找到相关文章