我刚刚开始探索Zookeeper,我对Znode的概念感到困惑,我对此有疑虑:
答案 0 :(得分:0)
问:客户端在什么基础上创建znode来保存数据,即是否存在 模式在znode中保存数据,同时创建哪个存在znode 应该是父母吗?
这取决于客户的需求。一个有用的用例是检查组成员身份:让我们假设您有一组服务器需要在其中划分一组固定的任务。例如,有10个任务,因此如果3个服务器处于活动状态,则首先将获得4个任务,而其他两个将获得3个任务。创建一个znode /live-servers
,并指示您的服务器在此znode中创建子ephemeral znode。通过这样做,他们将表明他们还活着(这样他们就可以完成他们的部分任务)。因此,ZooKeeper将具有znodes /live-servers/server-1
,/live-servers/server-2
,/live-servers/server-3
等。每个znode都可以存储一些有用的数据,例如创建子znode的服务器的IP地址。您的应用程序现在可以遍历这些znode列表,查找实时服务器的IP地址并向其发送任务。
如果znode的概念让你感到困惑,可以将它与传统的文件系统进行比较,但有一个重要的区别:每个文件(znode)都是一个目录。所有znode的父znode都是root znode,/
,就像传统的文件系统一样。
问:每个Zookeeper节点(服务器)上都存在所有znode。如何映射znode和Zookeeper服务器节点?
引自ZooKeeper fundamentals, deployment, and applications:
znode层次结构存储在ZooKeeper的每个内存中 服务器