分布式锁的三种实现方法

分布式锁

redis

如何用Redis实现分布式锁GeorgiaStar的博客-CSDN博客redis做分布式锁

主要看一下流程就是:

1、setnx 的时候为了防止主机宕机带来的影响,所以我们要选择加超时时间

2、执行逻辑任务

3、释放共享资源,先获取键值对的值,是不是自己的值,如果是就释放,为了原子性,所以我们用lua脚本来写

zookeeper

算法的流程看下链接

Zookeeper分布式锁_C_time的博客-CSDN博客

主要是利用临时节点,主要用在并发量上的问题

优点: (1) ZooKeeper分布式锁基于分布式一致性算法实现,能有效的解决分布式问题,不受时钟变迁影响,不可重入问题,使用起来也较为简单; (2)当锁持有方发生异常的时候,它和Zookeeper之 间的session无法维护。Zookeeper会 在Session租约到期后,自动删除该Client持有的锁,以避免锁长时间无法释放而导致死锁。 缺点: ZooKeeper实现的分布式锁,性能并不太高。为啥呢? 因为每次在创建锁和释放锁的过程中,都要动态创建、销毁瞬时节点来实现锁功能。大家知道,ZK中创建和删除节点只能通过Leader服务器来执行,然后Leader服 务器还需要将数据同步不到所有的Follower机器上,这样频繁的网络通信,性能的短板是非常突出的。总之,在高性能,高并发的场景下,不建议使用ZooKeeper的分布式锁。而由于ZooKeeper的高可用特性,所以在并发量不是太高的场景,推荐使用ZooKeeper的分布式锁。

MySQL

有一个版本号来控制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值