一个集群中有多少个kafka控制器?控制器的用途是什么?

bq3bfh9z  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(402)

kafka集群中的kafka控制器负责管理分区引线和复制。
如果一个kafka集群中有100个代理,那么控制器是否只有一个kafka代理?那么,在100家券商中,控制员是领头羊吗?
你怎么知道哪个经纪人是控制人?
Kafka控制器的管理对Kafka系统管理至关重要吗?

uqcuzwp8

uqcuzwp81#

控制器是kafka代理之一,它还负责选举分区负责人(除了通常的代理功能之外)。
控制员只是一个经纪人吗?
一次只有一个控制器。
在内部,每个代理都尝试在zookeeper(/controller)中创建一个临时节点。第一个成功,成为控制者。其他的只是得到一个适当的异常(“节点已经存在”),并监视控制器节点。当控制器死亡时,删除临时节点,并通知监视代理。再次,其中第一个成功注册临时节点的节点成为新的控制器,其他节点将再次获得“节点已存在”异常并继续等待。
你怎么知道Kafka的管制员是谁?
当一个新的控制器被选中时,zookeeper会得到一个“控制器历元”编号。代理知道当前的控制器epoch,如果他们从具有旧号码的控制器接收到消息,他们知道忽略它。
控制员是领导吗?
不是真的。。每个分区都有自己的引线。当一个代理死亡时,控制器检查所有需要一个新的领导者的分区,确定新领导者应该是谁(只是该分区的同步副本列表中的一个随机副本,也称为isr),并向包含这些分区的新领导者或现有追随者的所有代理发送请求。
新的领导者现在知道他们需要开始为客户的生产者和消费者请求提供服务,而追随者现在知道他们需要从新的领导者那里开始复制。

vlurs2pr

vlurs2pr2#

在kafka集群中,单个代理充当活动控制器,负责分区和副本的状态管理。所以在您的例子中,如果您有一个包含100个代理的集群,其中一个代理将充当控制器。
关于集群控制器职责的更多细节可以在这里找到。
为了找到哪个代理是集群的控制器,您首先需要通过zk cli连接到zookeeper:

./bin/zkCli.sh -server localhost:2181

然后 get 控制器

[zk: localhost:2181(CONNECTED) 0] get /controller

输出应如下所示:

{"version":1,"brokerid":100,"timestamp":"1506423376977"}
cZxid = 0x191
ctime = Tue Sep 26 12:56:16 CEST 2017
mZxid = 0x191
mtime = Tue Sep 26 12:56:16 CEST 2017
pZxid = 0x191
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x15ebdd241840002
dataLength = 56
numChildren = 0

zookeeper是Kafka集群状态的存储。它用于在最开始或当前控制器崩溃时选择控制器。控制器还负责在主题的分区领导代理失败/崩溃时通知其他副本成为分区领导。

相关问题