首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用动物园管理员实现高可用性服务(2个节点)

如何利用动物园管理员实现高可用性服务(2个节点)
EN

Stack Overflow用户
提问于 2017-02-23 11:00:15
回答 1查看 171关注 0票数 0

我需要提供一个H/A机制。

我知道动物园管理员可以被选为领袖选举。

我在为这个流程寻找合适的模式:

我需要实现一个调用流的服务。当它启动流时,流是一个循环流,它必须验证它是领导者。(根据它的ip地址)。

我理解,我可以将一个值放入一个动物园管理员中,它定义了输入实例,并在1循环结束时或在一段时间内将其释放。

这是正确的模式吗?

而且,如果我使用如下这样的东西,似乎会出现种族状况问题:

代码语言:javascript
复制
...
...
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;

例如:

两个服务读取null,第二个以上重写第一个签名,它们都运行任务。

你能帮忙吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-23 14:25:58

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42413825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档