分布式系统之分布式锁

现在很多系统都采用分布式部署,并且同一个应用为了实现高可用,在部署时采用集群方式。这时当前端代理服务器受到请求后 被分发到不同的服务器上面。像下面这种。

分布式系统之分布式锁

所以在这种情况下单个JVM的锁就排不上用场了。在这种场景下需要分布式锁。目前分布式锁有个各种实现方式,各有优劣在实际应用场景采用不同的实现方式。接下来先来介绍基于关系型数据库实现方式的分布式锁。

基于关系型数据库实现方式的锁有几个特点

1.锁是悲观锁同一个时间点只能有一个客户端对象能够获取到锁。

2.锁是阻塞锁,在没有获取到锁之前客户端代码是阻塞的。

实现思路
通过数据库行锁进行锁定。因为数据库行锁是排他锁。并且当锁没有释放其他连接对象想获取该行行锁这会阻塞线程。所以很容易实现能够阻塞线程的锁。

下面分享github源码地址

https://github.com/boyalearn/distributed-lock