浅析“分布式锁”的实现方式
2023-09-14 09:07:20 时间
前言
我们在开发应用时,如果需要对一个共享变量进行多线程同步访问的时候,我们可以使用Java多线程的各个技能点来处理,保证完美运行无BUG。
但是这里的都只是单机应用,即在同一个JVM中;然后随着业务发展、微服务化,一个应用需要部署到多台服务器上然后做负载均衡,大概的架构图如下:
在上图可以看到,变量A在JVM1、JVM2、JVM3三个JVM内存中(这个变量A主要体现是在一个类中的一个成员变量,是一个有状态的对象),如果我们不加任何控制的话,变量A同进都会在JVM分配一块内存,三个请求发过来同时对这个变量进行操作,显然结果不是我们想要的。
如果我们业务中存在这样的场景的话,就需要找到一种方法来解决。
为了保证一个方法或属性在高并发的情况下同一时间只能被同一个线程执行,在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock
或Synchronized
)进行互斥控制。但是,随之业务发展的需要,原单机部署的系统演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同的机器上&#x
相关文章
- 阿里研究员蒋江伟:双十一背后的分布式技术
- 分布式全链路灰度发布的探索与实践
- ZooKeeper分布式锁的实现原理(转)
- Java分布式篇4——Redis
- VXLAN中EVPN技术详解(二)——EVPN与VXLAN分布式网关
- 多微电网案例——分布式能源交易(Matlab代码实现)
- 最优孤岛划分下含分布式电源配电网可靠性评估(Matlab代码实现)
- 分布式数据库DDM Sidecar模式负载均衡
- m基于多用户MIMO系统的分布式可重构注水算法的matlab仿真
- 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
- redis实现分布式锁——核心 setx+pipe watch监控key变化-事务
- 深入RPC分布式原理
- 【分布式版本控制系统Git】| IDEA 集成 Git 、IDEA 集成 GitHub
- 分布式事务的七种实现方式