本篇讲zookeeper的节点知识


永久顺序节点:create -s /abc/bbb/ccc ccc-data,下面创建的都是永久的节点。
ccc-data:这个值得类型是byte。写得时候是字符串,但是存储得时候转成byte来存储
节点得名称是不能重复的
在这里插入图片描述
在这里插入图片描述
临时节点:create -e /node/temp temp-data:当我主动退出会话的话,会把当前的node节点下的temp节点给主动删除掉。
注意:临时节点只能创建到永久节点的下面,临时节点不能创建临时节点,临时的节点不能有孩子,临时的节点也不能创建永久节点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
会话关闭的时候:在登录进来的时候,临时的节点就没了。

临时节点只能建到最后一层。

临时节点的用途:比如我这里用了分布式的锁,我刚好删除分布式锁的时候,突然之间出现了问题(突然之间断电的话),这里就没有成功,然后这把锁就没有删掉,也就是这个人一直没有把这把锁释放开,然后等锁的一直没有拿到,然后这里就形成了死锁了。如果是临时节点的话就好办了,当你断开会话的时候,就把锁给释放开了。所以说临时节点能够避免高性能的死锁的问题,这就是临时节点的好处。

分布式锁:相当于有很多个节点,去同时获取同一把锁,其中一个拿到的话,用完要释放锁,其他的节点才能够用。
在这里插入图片描述
在这里插入图片描述
临时的顺序节点:create -e -s /node/temp1 temp1-data,后面 的数字是一共为9个数字的这样的列表。

临时的顺序节点:也是通过顺序来解决一些的常规的问题,比如可以找到临时节点中最小的序号的节点,让它来获取锁,操作完再释放,释放完让它的次节点来获取锁来进行操作,这样就可以保证在分布式的执行的过程中锁的执行是有顺序的,因为只有最小的节点才能拿到锁。
在这里插入图片描述
close:关闭客户端,quit:退出客户端
在这里插入图片描述
当退出再登录客户端查看之后所有的顺序的临时节点全部释放掉了
在这里插入图片描述
删除一个永久节点:delete /abc/bbb/ccc0000000004 [version]

如果不指定版本的话,会按照节点的名称去删,

delete path [version]:在删除的时候可以指定版本的删除。仍然不支持递归删除。

它其实这里使用了乐观锁,version版本:每当操作一次这个节点,它的版本号会增加1

比如现在有两个并发操作,并发的去删除这个节点,有一个节点删除成功的话,它就会实现乐观锁,就是把它自身的版本号加1,第二个再来删的时候就发现版本号不对了。

所以说第二个就删除不成功。这里使用乐观锁来保持这个节点的一致性。
在这里插入图片描述


欢迎各位小伙伴来评价,想要工程代码的加群:797853299

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐