分布式概念:分布式互斥(临界资源访问)

分布式互斥(Distributed Mutual Exclusion),被互斥访问的共享资源就叫作临界资源(Critical Resource)。

集中式算法:
每个程序在需要访问临界资源时,先给协调者发送一个请求。如果当前没有程序使用这个资源,协调者直接授权请求程序访问;否则,按照先来后到的顺序为请求程序“排一个号”。如果有程序使用完资源,则通知协调者,协调者从“排号”的队列里取出排在最前面的请求,并给它发送授权消息。拿到授权消息的程序,可以直接去访问临界资源。

一个程序完成一次临界资源访问,需要如下几个流程和消息交互:
1.向协调者发送请求授权信息,1 次消息交互;
2.协调者向程序发放授权信息,1 次消息交互;
3.程序使用完临界资源后,向协调者发送释放授权,1 次消息交互。

问题:
协调者会成为系统的性能瓶颈;
容易引发单点故障问题。协调者故障,会导致所有的程序均无法访问临界资源,导致整个系统不可用;


分布式算法
当一个程序要访问临界资源时,先向系统中的其他程序发送一条请求消息,在接收到所有程序返回的同意消息后,才可以访问临界资源。其中,请求消息需要包含所请求的资源、请求者的 ID,以及发起请求的时间。

一个程序完成一次临界资源的访问,需要进行如下的信息交互:
1.向其他 n-1 个程序发送访问临界资源的请求,总共需要 n-1 次消息交互;
2.需要接收到其他 n-1 个程序回复的同意消息,方可访问资源,总共需要 n-1 次消息交互。

1个程序要成功访问临界资源,至少需要 2*(n-1) 次消息交互。假设,现在系统中的 n 个程序都要访问临界资源,则会同时产生 2n(n-1) 条消息。
在大型系统中使用分布式算法,消息数量会随着需要访问临界资源的程序数量呈指数级增加,容易导致高昂的“沟通成本”。

这个算法可用性很低,主要包括两个方面的原因:
1.当系统内需要访问临界资源的程序增多时,容易产生“信令风暴”,也就是程序收到的请求完全超过了自己的处理能力,而导致自己正常的业务无法开展。
2.一旦某一程序发生故障,无法发送同意消息,那么其他程序均处在等待回复的状态中,使得整个系统处于停滞状态,导致整个系统不可用。

分布式算法适合节点数目少且变动不频繁的系统,且由于每个程序均需通信交互,因此适合 P2P 结构的系统。

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

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

缺点:不管环中的程序是否想要访问资源,都需要接收并传递令牌,所以也会带来一些无效通信,降低了系统的实时性。

实际应用:移动自组织网络系统。一个典型的应用场景就是无人机通信。

令牌环算法是一种更加公平的算法,通常会与通信令牌结合,从而取得很好的效果。特别是当系统支持广播或组播通信模式时,该算法更加高效、可行。适用于系统规模较小,并且系统中每个程序使用临界资源的频率高且使用时间比较短的场景

适合大规模系统中的分布式互斥算法
两层结构的分布式令牌环算法,把整个广域网系统中的节点组织成两层结构,可以用于节点数量较多的系统,或者是广域网系统。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值