赞
踩
节点类型
ZooKeeper数据模型中的数据单元,称为数据节点(znode
)。
ZooKeeper的数据模型是内存中的一个节点数,由斜杠(/
)进行分割的路径,就是一个节点,每个节点除了保存自己的数据内容,还保存一系列属性信息。
ZooKeeper共有四种类型的节点:持久(persistent
)节点、临时(ephemeral
)节点、持久有序(persistent-sequential
)节点和临时有序(ephemeral-sequential
)节点。
持久节点和临时节点
持久(persistent
)节点是指一旦这个节点创建成功,除非主动进行节点的移除操作(delete
),否则节点会一直保存在ZooKeeper上。
临时(ephemeral
)节点的生命周期是跟客户端的会话相关联的,一旦客户端会话失效,这个会话上的所有临时节点都会被自动移除。
有序节点
一个节点还可以设置为有序(sequential
)节点。有序节点被分配唯一一个单调递增的整数。当创建有序节点时,一个序号会被追加到路径之后。例如,客户端创建了一个有序的节点,其路径为/zoo/task
,那么ZooKeeper将分配一个序号,如1
,并将这个数字追加到路径之后,最后该节点为/zoo/task1
。
创建/删除节点
首先,需要启动服务器,并使用zkCli.sh
连接服务器,进入客户端命令行界面。使用以下命令(进入如图界面):
- zkServer.sh start
- zkCli.sh -server 127.0.0.1:2181
客户端命令行操作方法与shell
命令行界面类似。
先列出根(root
)的所有节点。使用以下命令(如下图所示):
ls /
可以看到,节点树中只有一个根节点/zookeeper
节点。
使用create
命令创建节点。例如,创建名称为/zoo1
的节点,再使用ls
命令查看是否创建成功。使用以下命令(如图所示):
- create /zoo1 ""
- ls /
以上命令创建的节点为持久节点,还可以使用不同参数,创建临时(-e
)节点和有序(-s
)节点。例如,创建临时有序节点/zoo2
并列出节点,使用以下命令(如图所示):
- create -s -e /zoo2 ""
- ls /
删除节点使用delete
命令。例如,删除/zoo1
节点并列出节点,使用以下命令(如图所示):
- delete /zoo1
- ls /
注意: 创建节点/zoo1
和/zoo2
时,指定了一个空字符串(""
),说明当前节点不保存数据。然而,该接口中的这个参数可以保存任何字符串到节点中,例如,可以替换""
为workers
。但是,如果创建节点时,不指定一个空字符串(""
),那么当前节点不会创建成功,且客户端不会有任何报错信息。例如,使用以下错误命令创建/zoo3
(如图所示):
create /zoo3
上图中表明/zoo3
节点创建失败。所以,创建节点时,如果节点没有数据,也要指定一个空字符串""
。
编程要求
本关任务是使用命令行,进行以下操作:
开启ZooKeeper服务器。
使用客户端(zkCli.sh
)连接客户端(IP:127.0.0.1
,端口号:2181
)。
创建/enode
临时节点(节点数据为空)。
创建/spnode
持久节点(节点数据为空)。
断开客户端(zkCli.sh
)与客服端连接。
- zkServer.sh start
- zkCli.sh -server 127.0.0.1:2181
- create -e /enode ""
- create /spnode ""
- quit
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。