当前位置:   article > 正文

为什么会有分布式锁?分布式锁实现方案_分布式定时任务加锁为什么

分布式定时任务加锁为什么

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。分布式环境下会出现资源竞争的地方都需要分布式锁的协调。

分布式锁的作用:在整个系统提供一个全局、唯一的锁,在分布式系统中每个系统在进行相关操作的时候需要获取到该锁,才能执行相应操作。

服务以多实例形式部署,形成集群。每一个实例都会有一个自己的JVM运行环境,因此即便是同一个用户,如果并发的发起了多个请求,由于**请求进入了多个JVM,就会出现多个锁对象(用户id对象),自然就有多个锁监视器**。此时就会出现每个JVM内部都有一个线程获取锁成功的情况,没有达到互斥的效果,并发安全问题就可能再次发生了:

可见,在集群环境下,JVM提供的传统锁机制就不再安全了。

那么该如何解决这个问题呢?

解决这个问题让每个实例去使用各自的JVM内部锁监视器,而是应该在多个实例外部寻找一个锁监视器,多个实例争抢同一把锁。像这样的锁,就称为分布式锁。

分布式锁可以根据以下几个方案实现:

- 基于数据库表

操作数据库需要较大的开销,性能差

- 基于缓存实现分布式锁(redis)

- 基于Zookeeper实现分布式锁

- 基于consul实现分布式锁

- 基于etcd实现分布式锁

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/745280
推荐阅读
相关标签
  

闽ICP备14008679号