分布式锁是控制分布式系统之间同步访问共享资源的一种方式。分布式环境下会出现资源竞争的地方都需要分布式锁的协调。
分布式锁的作用:在整个系统提供一个全局、唯一的锁,在分布式系统中每个系统在进行相关操作的时候需要获取到该锁,才能执行相应操作。
服务以多实例形式部署,形成集群。每一个实例都会有一个自己的JVM运行环境,因此即便是同一个用户,如果并发的发起了多个请求,由于**请求进入了多个JVM,就会出现多个锁对象(用户id对象),自然就有多个锁监视器**。此时就会出现每个JVM内部都有一个线程获取锁成功的情况,没有达到互斥的效果,并发安全问题就可能再次发生了:
可见,在集群环境下,JVM提供的传统锁机制就不再安全了。
那么该如何解决这个问题呢?
解决这个问题让每个实例去使用各自的JVM内部锁监视器,而是应该在多个实例外部寻找一个锁监视器,多个实例争抢同一把锁。像这样的锁,就称为分布式锁。
分布式锁可以根据以下几个方案实现:
– 基于数据库表
操作数据库需要较大的开销,性能差
– 基于缓存实现分布式锁(redis)
– 基于Zookeeper实现分布式锁
– 基于consul实现分布式锁
– 基于etcd实现分布式锁
如果你对java开发感兴趣想要成为一名程序员那么快进入云和数据官网吧我们有专门的客服老师回答您关心的问题。
云和数据ICT职业教育发挥公司产业化优势与技术积淀,整合国内外优秀师资,累计自主研发230余项教辅、教材,300余项实践教学案例与实训平台,采用六位一体项目制教学模式,年培养高端ICT技术人才超10000人,累计为企业输送高端泛ICT技术人才超9万人,学员60%来自于口碑推荐。云和数据人才培养技术方向涵盖大数据、JAVA软件工程、UI用户体验设计、前端开发、软件测试、智能制造、虚拟现实、云计算、人工智能九大方向,以九大精品课程为基础,八大就业基地为依托,一次就业率99.02%,61.9%就业薪资超1W,以大数据为首的精品专业平均薪资13.25K。