公司在用zk管理分布式集群,现在出现了一个问题,问题描述如下。
假设zk作为server端,存在三个节点,zk1(leader),zk2(follower),zk3(follower)。
然后公司的client端,也存在三个节点,C1,C2,C3。分别与ZK的节点相对应。
现存在如下问题,当断掉ZK1的网络时,C1的client无服务,这是正常现象。
此时ZK由于leader被down,重新选取leader,如果ZK2成为leader,那么c2,c3此时会向zk2读取节点数据。
但是zk2,zk3,此时正在进行同步,似乎是无法提供服务的状态,就会导致c2或者c3自杀。
现在请问各位大佬,有没有办法解决这种问题,比如zk在同步时可以感知zk对外提供服务的状态,当zk可以对外服务时再进行获取节点数据。
由于zk都是java代码,而我们用的是c++/c,所以只接触了部分的zk的相关API。还请各位大佬帮忙