-
zk常用命令行1
- ls 查看当前路径的节点
- ls -s 查看当前节点的状态信息(旧的版本为ls2 进行查询),目前使用的zookeeper为3.7版本
- stat 显示当前节点状态
- 相当于ls -s命令,但是ls -s还结合了ls显示当前节点的功能
- get 读取当前节点数据
- 当前节点为空
- znode的状态属性
-
Znode 的状态属性(来自菜鸟教程)
cZxid 创建节点时的事务ID ctime 创建节点时的时间 mZxid 最后修改节点时的事务ID mtime 最后修改节点时的时间 pZxid 表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,但是修改子节点的数据内容则不影响该ID(注意,只有子节点列表变更了才会变更pzxid,子节点内容变更不会影响pzxid) cversion 子节点版本号,子节点每次修改版本号加1 dataversion 数据版本号,数据每次修改该版本号加1 aclversion 权限版本号,权限每次修改该版本号加1 ephemeralOwner 创建该临时节点的会话的sessionID。(**如果该节点是持久节点,那么这个属性值为0)** dataLength 该节点的数据长度 numChildren 该节点拥有子节点的数量(只统计直接子节点的数量)
-
- ls 查看当前路径的节点
-
zk特性-session的基本原理
- 客户端与服务端之间的连接存在会话
- 每个会话都会刻意设置一个超时时间
- 心跳结束,session则过期
- session过期,则临时节点znode会被抛弃
- 心跳机制:客户端向服务端的ping包请求。(客户端发送ping指令,还活着,服务器端你先不要把我删除了。如果我不发送了,挂了,服务器端你再把我删除。)
-
zk常用操作指令2
- create命令
- 在客户端输入 create [-s] [-c] path dath acl
- 例如输入 create /hubbert hubbert-data
- 可以看到cversion 子节点的版本号还是0,以及dataVersion数据节点版本也还是0
- 由于目前是默认创建的(没有使用-s -e),所以创建的这个节点是非顺序的,没有顺序的,并且是持久化的
- 所以如果想要创建临时节点,直接create -e即可,如下图所示
- 可以看到此时cversion节点版本+1
- 再查看tmp临时节点
- 临时节点跟持久化节点的不同就看ephemeralOwner节点,很明显临时节点的ephmeralOwner节点的信息跟上面的不一样。
- 那么应该如何删除临时节点呢?只要断开客户端的链接即可。按住ctrl + c进行退出,然后再查询一下子节点
- 发现此时临时节点还是存在,因为此时还是具有一定的时效性。在断开链接之后,还是会存在心跳机制的,具有一定的时效,也就是只有在经过这个时效之后(10s或者20s),必须在心跳结束以后,服务器端接受不到心跳,此时才会把临时节点tmp给删掉。如下所示:tmp节点就没有了
- 创建顺序节点 create -s
- 可以看到此时子节点后面就会加上序号
- set命令:修改命令
-
- 从上图可以看出,hubbert节点的dataVersion从0 -> 1.并且值也修改为了new-data。
- 所以此时我们也可以根据dataVersion的版本来进行数据的更改 -v [版本号]
- 此时的版本号就会更新为2,所以此时如果再用1版本号进行更新,会提示版本号是非法的。
- 此处就是乐观锁的运用。乐观锁相关信息可以查看此链接:https://www.jianshu.com/p/d2ac26ca6525
- delete命令:删除命令
-
- 当然也可以选定节点的版本进行删除,如果版本号无效,也会提示对于的提示。
- create命令
ZooKeeper的基本特性-以及常用命令行 create set delete
最新推荐文章于 2024-04-15 13:46:38 发布