Apache zookeeper 如何使用zookeeper实现高可用性服务(2个节点)

Apache zookeeper 如何使用zookeeper实现高可用性服务(2个节点),apache-zookeeper,Apache Zookeeper,我需要提供一个H/a机制 据我所知,这家公司可以被选为领导人选举 我正在为这个流程寻找正确的模式: 我需要实现一个调用流的服务。 当它启动流[流是循环流]时,它必须验证它是先导。比如说它的ip地址 我知道我可以在zookeeper中输入一个值来定义输入 实例,并在1个循环结束时或一段时间内处理它 这是正确的模式吗 此外,如果我使用以下内容,似乎会出现竞争条件问题: ... ... List<String> names = zk.getChildren( path, false );

我需要提供一个H/a机制

据我所知,这家公司可以被选为领导人选举

我正在为这个流程寻找正确的模式:

我需要实现一个调用流的服务。 当它启动流[流是循环流]时,它必须验证它是先导。比如说它的ip地址

我知道我可以在zookeeper中输入一个值来定义输入 实例,并在1个循环结束时或一段时间内处理它

这是正确的模式吗

此外,如果我使用以下内容,似乎会出现竞争条件问题:

...
...
List<String> names = zk.getChildren( path, false );
String id = null;
// See whether we have already run for election in this process
for ( String name : names ) {
{
   if ( name.startsWith( myIP ) ) {
      id = name;
      break;
   }
}
if ( id == null ) {
id = zk.create( path + "/" + myIP, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
}
boolean isLeader = id != null;
例如:

2服务读取空 而第二个会覆盖第一个签名,并且两个签名都会运行该任务

你能帮忙吗


谢谢

正确使用ZooKeeper可能很困难,需要对它的API和语义进行一些研究。有一些不错的高级库,比如Curator,已经实现了一些常见的算法,比如。ZooKeeper文档也有一个