第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-2 session的基本原理与create命令的使用

客户端与服务端之间存在的连接,那么这样的一个连接我们就称之为会话,也就是session。其实就相当于是我们在做JSP或者说是Service的时候,那么服务端是Servlet,客户端使用的是浏览器。浏览器和Servlet之间会存在一个session,就是会话,跟这里道理是一模一样的。在Servlet里面,如果你设置了半个小时,那半个小时一直不去操作的话,那么在第31分钟的时候,你这个session就会被清除了。客户端会向服务端发送一个指令,就是说我现在还存活,你不要把我删了。一旦我没有向服务端发送这样的一个请求的话,服务端就会把我的会话(session)给删除掉,删掉之后session就过期了。

znode是zk的智能数据模型,如果说我们创建了一个临时节点的话,它是跟着session的,如果当前会话session过期了、失效了,那么所有跟着这个session所创建的临时节点都会被抛弃,也就是说会被zk自己去删除。

心跳机制是客户端向服务端的Ping包请求。我发送Ping指令给你,也就是说我现在还活着,你不要把我删了,如果说我挂了的话你再我把删掉。

create [-s] [-e] path data acl acl它是可以针对这个指令创建一个权限的,也就是说对子节点或者节点相关的一些权限,你拥有权限才能去访问。[-s] [-e]不写就是进行一个默认创建。

dataLength是10位,cversion=0,当前子节点的版本号还没有更新,dataVersion=0,当前数据的版本号是0,还没有更新。默认创建的节点是非顺序的,并且它是持久化的。

create [-e] path data 可以创建一个临时节点。在imooc下面创建了一个子节点tmp之后,子节点tmp的版本号cversion由0变为1,也就是说我们做了一次更新,它的版本号就会累加1。如果要判断zk的节点是临时节点还是持久节点的话,我们通过stat命令获取属性ephemeralOwner,如果ephemeralOwner的值是0x0,它就是持久节点,如果ephemeralOwner的值是0x100060405510006,它就是临时节点。

如何把临时节点给自动删除呢?它是有心跳机制的,如果客户端挂了的话,心跳它是接收不到任何指令,接收不到任何指令session没有,一旦没有的话,zk会自动把你刚才创建的所有的临时节点都默认删除。按Ctrl-c断开客户端连接,断开连接之后心跳是收不到。我们重新连接,

扫描二维码关注公众号,回复: 3893193 查看本文章

猜你喜欢

转载自www.cnblogs.com/ZHONGZHENHUA/p/9894296.html
今日推荐