我只是试图使用Curator frame work或zookeeper启动一个带有java实现的zookeeper合奏(领导者-跟随者)。
最初我用二进制模式进行了检查,它在下面显示的示例配置中工作得很好。
动物园.cfg
tickTime=2000
dataDir=/var/lib/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
和myid文件,Zookeeper集合体如我所期望的那样创建(领导者-追随者创建)。
Connections: 4
Outstanding: 0
Zxid: 0x30000052a
Mode: leader
Node count: 158
Proposal sizes last/min/max: 146/36/1471
当我尝试使用org.apache.zookeeper.server.quorum.QuorumPeerConfig配置和类来实现同样的目标时,
org.apache.Zookeeper.服务器.Zookeeper服务器Main
ZooKeeperServerMain zkServer = new ZooKeeperServerMain();
final ServerConfig configuration = new ServerConfig();
configuration.readFrom(peerConfig);
new Thread(() -> {
try {
zkServer.runFromConfig(configuration);
Thread.sleep(2000);
} catch (Exception e) {
logger.error("ZooKeeper Failed", e);
}
}).start();
org.apache.管理员.测试.测试服务器
InstanceSpec spec = new InstanceSpec(zkDataDir, clientPort, electionPort, -1, true, serverId, tickTime, maxClientCnxns, customProperties);
zkServer = new TestingServer(spec, true);
这两个实现都是以独立模式启动zookeeper的,而且看起来这两个实现都不关心配置server.1=..... server.2=.... server.3=.....。
我在这里错过了什么?如何在领导者跟随者模式下使用java启动Zookeeper?
**注:**我是新手,与Zookeeper相关的东西和文件仍然困惑我。请指导我同样的..谢谢...:)
1条答案
按热度按时间gk7wooem1#
管理者TestingServer可以被视为常规的ZooKeeper服务器。因此,领导者-追随者可以用它来测试,例如使用管理者LeaderLatch。
主从单元测试示例
领导者-跟随者实现示例
注:我是这个项目的作者。