第1关:创建/删除节点
任务描述
本关任务:熟悉并掌握四种类型节点的特点,并掌握节点的创建和删除。
相关知识
为了完成本关任务,你需要掌握:1.ZooKeeper服务器开启,2.客服端(zkCli.sh)连接服务器,3.命令行基本操作。
节点类型
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