分布式-互斥

《分布式系统原理与范型》笔记。

1、集中式算法

仿照单机系统中的互斥方法,选举一个进程作为协调者。无论何时一个进程要进入临界区,它都要向协调者发送一个请求消息。

协调者允许,则回应OK。请求进程则立即进入临界区。

如果协调者不允许,则不回应,请求进程阻塞;或者回应NO,请求者返回。

 

缺点:单点故障,单点性能瓶颈。

 

2、分布式算法。

要求分布式系统中所有的事件都是完全排序的。前文中提到的逻辑时钟可以作为一种排序方法。

算法过程:

一个进程P想要进入一个临界区,则构造一个消息,消息中包含要进入的临界区名字、它的进程编号、和当前时间。然后将消息发送给所有进程。这里假设消息传递是可靠的。

当一个进程接受到来自另一个进程的请求消息,它根据自己的情况可以采取三种动作:

a\  若接受者不在临界区,也不想进入临界区,它就像发送者回应一个OK消息。

b\接受者已经在临界区,它不进行应答,而是将请求放入队列。

c\接受者想进入临界区但尚未进入,对收到的消息的时间戳与包含在它发给其他进程的消息中的时间戳对比,如果收到的消息时间戳早,则回应OK;否则将请求放入队列,不回应。

再发送了请求消息后,进程进行等待、直到其他所有进程回复了允许消息;一旦得到所有进程的允许,它立即进入临界区。但它退出时,向队列中的所有进程发送OK消息,并将它们从队列中删除。

分布式互斥不会发生饿死和死锁,上面的集中式也不会出现。每次进入临界区需要2(n-1)个消息。不存在单点故障。

缺点:任何一个点出现故障,它就不能回答,系统就会出现问题,单点故障转换为多点故障,故障率提高。

 

改进: 收到请求,立即回复同意、否决,以防一个点出现故障而阻塞后续请求进程。

 

3、令牌环算法

所有进构成一个环(逻辑上)。

初始化时,第一个进程得到一个令牌,然后该令牌沿着环运行。

进程从它的相领进程得到令牌后,检测自己是否要进入临界区,如果要进入则进入临界区,。。。。 ,然后离开临界区,令牌接着往下传递。

如果进程得到令牌后不想进入临界区,则将令牌往下传递。

 

问题:节点出现故障,令牌环丢失。可以让节点收到令牌后,向发送的节点回复确认消息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值