分布式锁的三种实现方式

1、基于数据库实现分布式锁 

悲观锁 利用select … where … for update 排他锁

乐观锁 乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不会产生锁等待而消耗资源(版本号字段)

 

2、基于缓存(Redis等)实现分布式锁

加锁和释放锁都必须是原子操作(释放锁lua脚本)

加锁时带超时时间和是否设置成功的返回判断。

 

3、基于Zookeeper实现分布式锁

临时、有序的目录。

zk的目录节点有永久、临时类型,有序、无序类型。分布式锁使用的是临时有序目录,创建目录发现顺序不是最小的,添加事件监听前一个节点的删除事件,每个处理完删除自己的节点。zk通过客户端发心跳检测是否断开,用临时节点可以避免死锁。

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值