Znode 创建标准和正确使用

Znode creation criterion and proper usage

刚刚开始探索 Zookeeper ,对 Znode 的概念很困惑,我的疑惑:

Q: On what basis client creates znode to save data , i.e. is there any pattern to save data in znode, while creating which present znode should be the parent?

这取决于客户的需求。一个有用的用例是检查组成员资格:假设您有一组服务器需要在它们之间划分一组固定的任务。例如,有 10 个任务,如果 3 个服务器处于活动状态,第一个将获得 4 个任务,其他两个将获得 3 个任务。创建一个 znode /live-servers,并指示您的服务器在此 znode 中创建子 ephemeral znode。通过这样做,他们将表明他们还活着(这样他们就可以执行他们的任务部分)。因此,ZooKeeper 将有 znode /live-servers/server-1/live-servers/server-2/live-servers/server-3 等。这些 znode 中的每一个都可以存储一些有用的数据,例如创建子 znode 的服务器的 IP 地址。您的应用程序现在可以遍历这些 znode 的列表,找到实时服务器的 IP 地址并向它们发送任务。

如果 znode 的概念一直让您感到困惑,将其与传统文件系统进行比较,有一个重要的区别:每个文件 (znode) 同时位于一个目录中。所有 znode 的父 znode 是根 znode,/,就像在传统文件系统中一样。

Q: Do all the znode are present on every Zookeeper Nodes(server). How znode and Zookeeper server nodes are mapped?

引用自ZooKeeper fundamentals, deployment, and applications

The znode hierarchy is stored in memory within each of the ZooKeeper servers.