3.6.2 找出分区的主副本


3.6.2 找出分区的主副本

客户端为了获得分区的主副本,可以向任意一个节点发送主题元数据请求(Top"i.cMetadataRequest),因为每个节点都保存了集群所有的主题元数据,而且数据都是一致的。主题元数据包含了多个分区的元数据,而消费者只指定消费特定的分区,所以需要找出对应的分区元数据。

第一次获取分区的主副本节点的候选集合是客户端给定的种子节点(a_seedBrokers)。主副本挂掉后,新的候选集合为凡repli.caBrokerS,它来自于第一次调用fi.ndleader()返回分区元数据的所有副本。假设初始时a_seedBrokers=[0,1,2],分区Pl的元数据是{leader汀,repli.cas:[3,4,S]},说明主副本是节点3,副本集是l’l_repli.caBroker5=[3,4,5]。相关代码如下:
在这里插入图片描述
注意:分区的副本集也包含了主副本节点。如果主副本发生短暂的故障并立即恢复,客户端重新获取分区的主副本,就有可能再次选到之前的主副本。

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页