【分布式系统遨游】分布式互斥与分布式锁

写在前面

在工作学习中,我们常常听说分布式,集群,容器等等名词,但是当学妹们问你什么是分布式的时候,你是否有一种书到用时方恨少的感觉呢?为了在学妹面前“扬眉吐气”一把,今天开始,我们就去会一会分布式,Let’s go!

为什么有分布式结构

在我们了解为什么会有分布式结构之前,我们想学习一下什么是分布式结构。分布式就是一个业务分拆多个子业务,部署在不同的服务器上。举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式调用。了解了什么是分布式结构,是不是就很自然的总结出一系列的原因,比如解耦和,链路更清晰,职责更明确等等。

那么,分布式之间是如何协调与同步呢?针对这个问题,我们通过以下几个问题去解释。

分布式互斥

首先,我们想象一下,对于多个服务去访问同一资源时,就会出现分布式互斥现象,怎么理解呢?想象一下,你正在一家餐厅使用自助咖啡机泡制咖啡,突然有个人过来挪走了你的杯子,开始泡制他自己的咖啡。你耐着性子等他操作完,继续泡制自己的咖啡。结果你开始没多久,他又回来中断了你泡制咖啡的过程。此时,咖啡机就是一个临界资源,两个人表示两个服务,这种现象就叫做分布式互斥。
那么,我们如何去解决这种服务之前互斥访问临界资源的现象呢?

集中式算法

首先,我们最先想到的肯定是增加一个“管理员”,约束大家不要插入别人使用咖啡机的时间,那么做好一个管理员,我们就需要一套完整的管理体系,例如我们打卡上下班一样,放到计算机世界来说,这里就需要一个算法来协调,这就是分布式互斥算法,每个程序在需要访问临界资源时,先给协调者发送一个请求。如果当前没有程序使用这个资源,协调者直接授权请求程序访问;否则,按照先来后到的顺序为请求程序“排一个号”。如果有程序使用完资源,则通知协调者,协调者从“排号”的队列里取出排在最前面的请求&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值