代码之家  ›  专栏  ›  技术社区  ›  Nicholas Knight

我可以在Zookeeper中递归创建路径吗?

  •  4
  • Nicholas Knight  · 技术社区  · 14 年前

    我在拉 ZooKeeper 在项目中进行一些并发管理,我首先尝试的是一些对我来说非常明显的东西(使用zkpython绑定):

    zh = zookeeper.init('localhost:2181')
    zookeeper.create(zh, '/path/to/a/node', '', [ZOO_OPEN_ACL_UNSAFE])
    

    我得到了一个 NoNodeException 为了我的麻烦。

    mkdir -p ZooKeeper将为我创建缺少的父节点。

    4 回复  |  直到 14 年前
        1
  •  9
  •   Thomas Koch    14 年前

    您必须为路径的每个元素分别发出create()命令。Zookeeper只有内置的原子操作。递归地创建路径不再是原子操作。Zookeeper不知道,如果在创建了一半的路径元素后操作挂起,您希望它做什么。

        2
  •  2
  •   Community CDub    7 年前

    multi() API . 看到了吗 this answer .

    this answer .

    如果你只是想避免额外的电话,你可以使用 Netflix's curator 有一个 creatingParentsIfNeeded 方法,但请注意,它可能是缓慢的。看到了吗 this answer .

        3
  •  0
  •   matt b    11 年前

    Kazoo has an ensure_path(path) operation ,尽管它不被认为是原子的。使用这一点,您至少可以省去为递归创建编写自己的代码的需要。