分布式锁的应用场景详解(3大应用场景)

分布式锁的应用场景详解(3大应用场景)-mikechen

什么是分布式锁

要理解分布式锁,核心点是在于要理解共享资源访问的问题。

比如:一个资源变量A,在单体应用中,如果有多个线程同时来竞争该资源A,可以通过Synchronized、或者ReentrantLcok上锁来解决资源共享的问题。

但是,在分布式系统后,由于分布式系统是分布在不同机器上,布式系统中竞争共享资源的最小粒度从线程升级成了进程,这将使原单机并发控制锁策略失效。

为了解决这个问题,就需要一种跨服务,跨JVM的锁机制,来控制共享资源的访问,这就是分布式锁。

 

分布式锁的应用场景

1.共享资源竞争

如果涉及到分布式环境(多机器)的资源竞争,多个进程同时操作共享资源,则需要分布式锁。

原因刚才已经讲过了,因为共享资源已经跨越到不同的服务器进程上了,java的锁已经锁不住了。

 

2.效率性

使用分布式锁可以避免不同节点重复相同的工作。

 

3.业务场景

在电商业务里,最常见的场景:扣减库存,以及在高并发的场景下,阻止流量打到后边等等。

 

分布式锁的实现

首先为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:

1.互斥性

任意时刻只能有一个客户端获取锁,不能同时有两个客户端获取到锁。

2.安全性

锁只能被持有该锁的客户端删除,不能由其它客户端删除。

3.死锁

获取锁的客户端因为某些原因,比如:down机等,而未能释放锁,其它客户端再也无法获取到该锁。

4.容错

当部分节点down机时,客户端仍然能够获取锁和释放锁。

常见的分布式锁的实现有:Redis分布式锁Zookeeper分布式锁等方式来实现分布式锁。

更加的详细的分布式锁实现,可以参考分布式锁的3种实现详解(数据库、缓存、Zookeeper)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法