zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

浅析“分布式锁”的实现方式

分布式分布式 实现 方式 浅析
2023-09-14 09:07:20 时间

前言

我们在开发应用时,如果需要对一个共享变量进行多线程同步访问的时候,我们可以使用Java多线程的各个技能点来处理,保证完美运行无BUG。
但是这里的都只是单机应用,即在同一个JVM中;然后随着业务发展、微服务化,一个应用需要部署到多台服务器上然后做负载均衡,大概的架构图如下:

在上图可以看到,变量A在JVM1、JVM2、JVM3三个JVM内存中(这个变量A主要体现是在一个类中的一个成员变量,是一个有状态的对象),如果我们不加任何控制的话,变量A同进都会在JVM分配一块内存,三个请求发过来同时对这个变量进行操作,显然结果不是我们想要的。

如果我们业务中存在这样的场景的话,就需要找到一种方法来解决。

为了保证一个方法或属性在高并发的情况下同一时间只能被同一个线程执行,在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLockSynchronized)进行互斥控制。但是,随之业务发展的需要,原单机部署的系统演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同的机器上&#x