分布式锁及其实现
对于Java中的锁大家肯定都很熟悉,在Java中synchronized关键字和ReentrantLock可重入锁在我们的代码中是经常见的,一般我们用其在多线程环境中控制对资源的并发访问,但是随着分布式的快速发展,本地的加锁往往不能满足我们的需要,在我们的分布式环境中上面加锁的方法就会失去作用。为了在分布式环境中也能实现本地锁的效果,人们提出了分布式锁的概念。 分布式锁 分布式锁场景 一般需要使用分布式锁的场景如下: 效率:使用分布式锁可以避免不同节点重复相同的工作,比如避免重复执行定时任务等; 正确性:使用分布式锁同样可以避免破坏数据正确性,如果两个节点在同一条数据上面操作,可能会出现并发问题。 分布式锁特点 一个完善的分布式锁需要满足以下特点: 互斥性:互斥是所得基本特性,分布式锁需要按需求保证线程或节点级别的互斥。; 可重入性:同一个节点或同一个线程获取锁,可以再次重入获取这个锁; 锁超时:支持锁超时释放,防止某个节点不可用后,持有的锁无法释放; 高效性:加锁和解锁的效率高,可以支持高并发; 高可用:需要有高可用机制预防锁服务不可用的情况,如增加降级; 阻塞性:支持阻塞获取锁和非...
