分布式技术之单机锁

如你所知,随着分布式技术的不断发展以及广泛运用,分布式系统中的不同节点如何访问共享资源成了一个棘手问题,分布式锁是目前一个比较通用的方案。

我们将分上下两篇文章来讲解分布式锁实现原理、技术选型。通过经典案例来透析分布式锁的前世今生。希望对大家有借鉴作用。

单机锁

单机环境中,由于共享资源自身无法提供互斥能力。因此,为了防止多线程/多进程对共享资源的同时读写访问造成数据的破坏,就需要一个第三方提供的互斥的机制,一般往往是内核或者提供互斥能力的类库。

如下图二所示,进程首先从内核/类库获取一把互斥锁,拿到锁的进程就可以排他性的访问共享资源;演化到分布式环境,我们就需要一个提供同样功能的分布式服务,不同的机器通过该服务获取一把锁,获取到锁的机器就可以排他性的访问共享资源,这样的服务我们统称为分布式锁服务,锁也就叫分布式锁。

由此,我们抽象一下分布式锁的概念,首先分布式锁需要是一个资源,这个资源能够提供并发控制,并输出一个排他性的状态,也就是:锁 = 资源 + 并发控制以我们熟悉的单机锁为例:Spinlock(自旋锁) = BOOL + CAS (乐观锁)Mutex (互斥锁) = BOOL + CAS + 通知 (悲观锁)Spinlock和Mutex所持有的锁是一个互斥量,这个互斥量通常被实现为一个整数值,通过原子操作来控制它的状态。

相关推荐
拼图2097 小时前
Git常用语法
分布式·git·学习
盟道科技17 小时前
小程序订阅消息大规模投递实践:频控令牌池、Redis限流与失败补偿设计
分布式·算法·小程序
卷毛的技术笔记18 小时前
RocketMQ事务消息:我把分布式事务这层窗户纸捅破了
java·分布式·后端·java-rocketmq
懂软件的胡子个哥2 天前
微信工单系统如何基于 WechatApi 做消息分流和状态流转
运维·分布式·微信·架构·企业微信
九皇叔叔3 天前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base
刃神太酷啦3 天前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
海宇大数据3 天前
分布式网关架构实战:基于海宇数据公安二要素认证即时版构建自动化司机准入网关
人工智能·分布式·架构·自动化
木圭的AI时代指南3 天前
Spark-X2.5 长输入 Agent 实测:全量读取陷阱与解释器寻找死循环复盘,附可复现任务
大数据·分布式·spark
KANGBboy4 天前
doris+kafka安装部署(单机+集群)二时钟服务器 java_home
服务器·分布式
爱笑的k114 天前
分布式通信原语
分布式·ai infra