摸鱼分布式——分布式互斥

312 阅读2分钟

在分布式系统里,这种排他性的资源访问方式,叫作分布式互斥(Distributed Mutual Exclusion),而这种被互斥访问的共享资源就叫作临界资源(Critical Resource)。

那么如何在分布式系统里实现互斥地访问临界资源呢?

集中式算法

引入一个协调者程序,得到一个分布式互斥算法。

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

缺陷:

  • 协调者会成为系统的性能瓶颈。
  • 容易引发单点故障问题。

image.png

分布式算法

当一个程序要访问临界资源时,先向系统中的其他程序发送一条请求消息,在接收到所有程序返回的同意消息后,才可以访问临界资源。其中,请求消息需要包含所请求的资源、请求者的 ID,以及发起请求的时间。 在分布式领域中,我们称之为分布式算法,或者使用组播和逻辑时钟的算法。

令牌环算法

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

在分布式领域,这个算法叫作令牌环算法,也可以叫作基于环的算法。 image.png

image.png

笔记抄自:《分布式技术原理与算法解析》