基于ZOOKEEPER实现分布式锁

获得锁的规则: 当前列表中序号最小  && 当前列表中序号最小 == 我自己创建的节点 

基本思想:

数据同步:
客户端A更改了付款状态为已经付款状态,
客户端B去获取付款状态立刻返回已经付款状态。进实时

数据监听:
在客户端A监听付款状态节点,在客户端B更改付款状态节点的数据,
客户端A马上收到通知信息。
监听器监听一次就失效了。需要重新监听。
分布式锁实现:
1.创建一个永久父节点A
2.客户端启动后创建一个自己的临时节点带自增序号的放在A下
3.获取A节点下的节点列表.SIZE = 1 就是自己刚创建的直接使用(获得锁)
3.1 排序节点列表取最小的一个节点和自己比较如果最小的节点 == 自己创建的节点(获得锁)

4.执行自己的业务功能
5.释放锁(删除自己创建的节点)、临时锁断开后ZK也会删除
6.创建锁 执行2
7. 和3 一样的逻辑 监听父节点A下的节点类型变化为 节点修改类型的通知 有变动再去获取比较(粗糙实现)
8.监听当前比自己小的节点 ,比自己小 的节点有变化,下一个就是自己啦。(排队1-100 自己99号 监听98号)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值