从zookeeper获取所有子节点键和值

时间:2014-10-24 19:59:59

标签: erlang apache-zookeeper znodes

我正在尝试将zookeeper实现为我在erlang中创建的应用程序的共享状态引擎。州的结构如下:

/appRoot
        /parent1:{json}
                      /child1:{json}
                      /child2:{json}
        /parent2:{json}
                      /child1:{json}
                      /child2:{json}

我希望能够有一个方法在提供/ appRoot及其数据时返回所有父节点。在元组[{parent1,{json}},{parent2:{json}}]列表中说。或者,如果为/ appRoot / parent1提供了包含数据的子节点列表。到目前为止,我所看到的只是一种获取密钥(getChildren)然后使用密钥递归检索数据的方法。看起来我应该只打一个电话来做这件事。

我目前正在使用ezk erlang客户端库。如果有人知道更好的解决方案,那也将受到赞赏。

TIA

1 个答案:

答案 0 :(得分:3)

AFAIK没有办法在zookeeper有线协议中以原子方式列出节点子节点及其数据。似乎,只有这样做的方法如下:

  1. 列出所有节点子节点并监视子节点更改。
  2. 为每个子节点读取数据并监控数据更改。
  3. 在开始遍历后,更新每个子项更改的相应值。
  4. 这可以通过ezk轻松完成,但我没有提供任何示例代码,因为它在很大程度上取决于应用逻辑所要求的原子性保证。

相关问题