如何使用 Curator TestingServer 启动 zookeeper 集成

问题描述

我只是想通过使用 Curator frame workzookeeper 的 Java 实现来启动 Zookeeper 集成(Leader - Follower)。

最初我使用二进制模式进行了检查,并且在下面显示的示例配置中运行良好。

zoo.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.server.ZooKeeperServerMain

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.curator.test.TestingServer

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=.....

我在这里遗漏了什么?如何在leader follower模式下使用java启动zookeeper?

注意:我是动物园管理员相关的东西和文档的新手,仍然让我感到困惑。请指导我同样...谢谢... :)

解决方法

Curator TestingServer 可以被视为常规的 ZooKeeper 服务器。因此,可以使用它来测试领导者-跟随者,例如使用 Curator LeaderLatch。

Leader-follower unit test example

Leader-follower implementation example

注意:我是这个项目的作者。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...