通用分布式互斥算法概况

1、什么是分布式互斥

在分布式系统了,对排他性资源的访问方式,叫做分布式互斥(Distributed Mutual Exclusion),其中被互斥访问的共享资源叫作临界资源(Critical Resource)

2、分布式互斥算法

即如何让分布式系统里面的程序互斥的访问临界资源。

注:以下算法实现方式,暂不考虑超时等其他影响因素

  • 【1】集中式算法

基本实现方式:引入一个协调者程序,每个程序在需要访问临界资源时,先发送请求给协调者。

如果当前上下文环境中,没有其他程序使用这个额临界资源,协调者则直接授权请求程序访问。

否则,建立一个队列,按照请求先后的顺序,把请求存入队列中。

如果有程序释放了资源,则再次通知协调者,协调者从队列中取出队头请求,并发送授权消息。

拿到授权消息的程序,则可以直接访问临界资源。

其中,协调者代表着集中程序或中央服务器。

  • 集中式算法示例

集中式算法

程序Pa,Pb,Pc,Pd为在分布式环境中普通运行的程序,可能运行在不同的服务器中。同时在中央服务器中运行着一个协调者程序。

(0)程序Pc正在使用临界资源

(1)程序 Pd  需要使用临界资源,它会向协调者发起申请,请求协调者授权。

(2)程序 Pb  需要使用临界资源,它会向协调者发起申请,请求协调者授权。

  (3)  因程序Pc正在使用临界资源,协调者根据程序 Pd 和 Pb 的请求时间顺序,依次将它们放入等待队列

(4)程序Pc使用完临界资源,释放资源,并通知协调者,释放授权。

(5)协调者从请求等待队列中取出Pd,并给它发放授权,程序Pd即可使用临界资源。

  • 集中式算法消息交互流程

一个程序完成一次临界资源访问,需要如下几个流程与消息交互:

(1)向协调者发送请求授权消息,1次消息交互。

(2)协调者向程序发放授权消息,1次消息交互。

(3)程序使用完临界资源后,向协调者发送释放授权消息,1次消息交互

因此,每个程序完成一次临界资源的访问,需要进行3次消息交互

  • 集中式算法的优点

简单、直观、易于实现。所有程序只与协调者通信,程序之间无需通信。在可靠性和性能有一定保障的情况下,比如中央服务器计算能力强、性能高、故障率低且进行了主备,可使用集中式算法。

  • 集中式算法的缺点

(1)协调者成为系统性能的瓶颈。

如果有100个程序需要访问临界资源,那么协调者需要处理100*3=300条消息,协调者处理消息的处理会随着需要访问临界资源的程序数量线性增加。

(2)容易发生单点故障。协调者故障,意味着整个程序不可用。

  • 【2】分布式算法(使用组播和逻辑时钟的算法)

当一个程序需要访问临界资源,先向系统中的其他程序发送一条请求消息,在接收到其他所有程序的同意响应后,才可以访问临界资源。

  • 分布式算法示例

(0)程序P1,P2,P3都需要访问临界资源A。在时间戳为T8 的时刻,程序P1需要使用临界资源A,并且程序P2和P3发送了使用资源A的申请消息,并等待回复。

(1)在时间戳为T12的时刻,程序P3需要访问临界资源,于是想程序P1和P2发送了申请消息,并等待回复。

 

(2)程序P2暂时不需要临界资源A,因此都给程序P1和P2回复了“同意”响应。对于程序P3来说,由于P1的请求时间比它早,因此同意程序P1先访问临界资源。同时程序P1会给程序P3回复“不同意”消息。

程序P1需要记录一个根据请求时间需要访问临界资源A的程序的队列。

(3)程序P1使用完临界资源A,释放使用权限,并从维护的队列中,取出程序P3的相关信息,并且回复“同意”响应,并且从队列中删除程序P3的相关请求信息。

此时P3接收到了其他所有程序的“同意”响应,可以有权限使用临界资源A了。

  • 分布式算法的优点

根据“先到先得”和“投票全部通过”的机制,让每个程序按照请求时间顺序,公平的访问临界资源,简单粗暴,易于实现。

  • 分布式算法的消息交互

一个程序要完成一次临界资源的访问,需要

(1)想其他n-1个程序发送请求,总共需要n-1次消息 交互。

(2)需要接受其他n-1个程序的回复,才可以访问临界资源,需要n-1次消息交互。

因此,一个程序需要访问临界资源,至少需要2*(n-1)次消息交互。如果有n 个程序需要访问临界资源,则会同时产生至少2n*(n-1)次消息交互

  • 分布式算法的缺点

在大型的分布式系统中,如果使用分布式算法,消息数量会随着需要访问临界资源的程序的数量呈指数级增加。容易产生“信令风暴”,程序收到的消息完全超出了自己的处理能力,导致自己的正常的业务无法运行。

如果某一个程序发生故障,无法回复其他程序的使用临界资源的请求,则会导致其他程序均处于等待响应的状态中,导致整个系统不可用。

  • 分布式算法的使用场景

适用于节点数量较少,且变动不频繁的系统,且每个程序均需要通信交互。适合P2P结构的系统,比如局域网内的分布式文件系统。

分布式文件系统 HDFS 的文件修改就是一个典型的应用分布式算法的场景。 

分布式文件系统文件修改

 

  • 【3】令牌环算法

所有的程序构成一个环状结构,令牌按照顺时针(逆时针)方向在程序之间传递,收到令牌的程序可有权访问临界资源,访问完成后,将令牌传送到下一个程序。若该程序不需要访问临界资源,则直接把令牌传送到下一个程序。

  • 令牌环算法的优点

具有更高的通信效率,在一个周期内,每个程序都能够访问到临界资源。该算法的公平性很好。

  • 令牌环算法的缺点

不管环中的程序是否需要临界资源,都需要接受和传递令牌,带来无效通信。降低了系统的实时性。

  • 令牌环算法的实用场景

通信模式为令牌环方式的分布式系统,例如移动自组织网络系统。一个典型的应用场景就是无人机通信。

 

参考文档:https://time.geekbang.org/column/article/141772

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamCatcher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值