
分布式锁
懒惰的毛毛虫
这个作者很懒,什么都没留下…
展开
-
分布式锁(一)__基于Zookeeper实现可重入分布式锁
1 重入的实现 对于锁的重入,我们来想这样一个场景。当一个递归方法被sychronized关键字修饰时,在调用方法时显然没有发生问题,执行线程获取了锁之后仍能连续多次地获得该锁,也就是说sychronized关键字支持锁的重入。对于ReentrantLock,虽然没有像sychronized那样隐式地支持重入,但在调用lock()方法时,已经获取到锁的线程,能够再次调用lock()方法获取锁而...原创 2018-09-15 17:23:54 · 4157 阅读 · 2 评论 -
分布式锁(二)__基于数据库实现
原理介绍: 要基于数据库实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现。 当需要锁住某个方法或资源时,就在该表中增加一条记录,想要释放锁的时候就删除这条记录 问题: 1.这把锁依赖数据库的可用性,数据库是一个单点,一旦数据库挂掉,会导致业务系统不可用 2.这把锁没有失效时间,一旦解锁操作失败,会导致锁记录一直在数据库中,其他线程无法再获得锁 3.这把...原创 2018-09-15 21:18:56 · 348 阅读 · 0 评论 -
分布式锁(三)__基于redis实现
本文参考借鉴了论坛大佬的一篇很详细的博文并在此基础上加以实现,在此谢谢此位博主!,博文连接: https://www.cnblogs.com/linjiqin/p/8003838.html 前言 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后...原创 2018-09-17 10:57:24 · 195 阅读 · 0 评论