前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式进阶__如何用zookeeper 实现分布式锁

分布式进阶__如何用zookeeper 实现分布式锁

原创
作者头像
矿泉水
发布2018-05-11 11:49:30
8671
发布2018-05-11 11:49:30
举报
文章被收录于专栏:风中追风

一、分布式锁介绍

        分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。

二、分布式锁设计原理图

1、基于排它锁:

让所有的客户端(A B C)都在指定的Locks节点下 创建一个同名的节点lock,利用ZK 节点名称的唯一性来做限制, 谁创建成功了谁就获取到了锁,否则就是没有获取到。

这种设计比较简单

2、基于共享锁:

1、在当前节点下创建临时有序节点C,若创建成功则会返回节点C的名称。

2、获取当前节点下的所有临时节点。利用zk 节点的 顺序一致性,获取到了最小的节点就算获取到了锁。

3、找到临时节点中的最小节点的名称,和第一步创建节点返回的 C节点名称进行比较,如果匹配成功,表示当前节点就是最小节点,就意味着获取到了锁。

否则就要获取到比刚刚创建的节点顺序小的节点。

4、然后获取到比当前节点顺序小的所有节点的一个集合。如果不为空,就获取这个集合节点中的最后一个节点B。然后让B去监听它的上一个A,A的会话超时或者A节点被删除(释放)了,B就获取到了锁,同理,当B被删除或者会话超时时,C就获取到了锁。

5、执行完业务逻辑操作后 执行 删除节点的方法 锁就被释放了,然后下个节点就能获取到锁了。

也可以看看这两篇文章理一理:

zookeeper实现分布式锁原理

三种实现分布式锁的方式

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档