《Zookeeper中间件》Zookeeper命令详解
前言
使用Zookeeper之前,先了解一下Zookeeper是啥?有什么作用?
原理
Zookeeper本身是一种存储数据的树结构,结构和文件系统非常相似,区别是Zookeeper的节点都可以存值。
通过Zookeeper命令演示一下这个结构:
create /hubt -- 创建节点
ls / -- 查询/节点下面的节点情况
stat /tao -- 查看节点的属性
cZxid:这是导致创建znode更改的事务ID。
ctime:表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode创建时间。
mZxid:这是最后修改znode更改的事务ID。
mtime:表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode最近修改时间。
pZxid:这是用于添加或删除子节点的znode更改的事务ID。
dataVersion:表示对该znode的数据所做的更改次数。
cversion:这表示对此znode的子节点进行的更改次数。
aclVersion:表示对此znode的ACL进行更改的次数。
ephemeralOwner:如果znode是临时类型节点,则这是znode所有者的 session ID。 如果znode不是临时节点,则该字段设置为零。
dataLength:这是znode数据字段的长度。
numChildren:这表示znode的子节点的数量。
create /hubt/data 888 -- 创建节点并且存值
get /hubt/data -- 获取节点上的值。
set /hubt/data 999 -- 修改节点的值
delete /hubt/data -- 删除某个节点,节点下面不能有节点
deleteall /hubt -- 删除节点/hubt 和节点下面的全部节点
创建顺序节点
create -s /com_ -- 创建顺序节点
create -e /tmp --创建临时节点,退出连接节点就会消失,但是在没有消失之前其他连接也是可以看到这个节点的
create -es /tmps -- 创建临时顺序节点
create -c /container -- 创建容器节点
容器节点里面的的最后一个几点删除之后,会自动消失。
create -t 3000 /tt -- 创建过期节点,3000毫秒不操作就删除。
该命令默认是关闭的,需要设置启动参数才能打开。
zkServer.sh 启动文件中加上下图的红色标注的话:
"-Dzookeeper.extendedTypesEnabled=true"
create -t 5000 -s /yy -- 创建顺序过期节点
总结
zookeeper 的命令操作不多,比较简单。节点类型有:
持久节点,所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。
临时节点,和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。
持久顺序节点,这类节点的基本特性和持久节点是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。
临时顺序节点,类似临时节点和顺序节点
容器节点:容器节点下面的节点被删除完,容器节点自动删除。
容器顺序节点:容器节点增加了顺序功能。