为什么动物园管理员退出双重障碍时不能使用标志?

时间:2018-12-03 09:25:59

标签: algorithm apache-zookeeper apache-curator

在Zookeeper食谱和解决方案(here)中,内容为:

  

在退出时,您不能使用“就绪”这样的标志,因为您正在监视流程节点是否消失。通过使用临时节点,输入障碍后失败的过程不会阻止正确的过程完成。当流程准备好离开时,它们需要删除其流程节点并等待所有其他流程执行相同的操作。

我不明白为什么离开障碍时不能使用“ leave”之类的标记。

我认为我们可以这样做:

  1. 设置监视:存在(b +“ / leave”,true)
  2. 删除节点
  3. L = getChildren(b,false)
  4. 如果L == 0:没有子级(离开节点和就绪节点除外):create(b +“ / leave”)

因此,每个节点都会收到通知,因为我们首先删除该节点,然后再删除getChildren,这意味着我们将获得至少一个没有子节点的节点,然后将创建“ leave”节点,并且每个节点都会收到通知

0 个答案:

没有答案