zoukankan      html  css  js  c++  java
  • 分布式学习笔记(二)-分布式互斥

    什么事分布式互斥

         对于同一共享资源,一个程序正在使用的时候也不希望被其他程序打扰。这,就要求同一时 刻只能有一个程序能够访问这种资源。在分布式系统里,这种排他性的资源访问方式,叫作分布式互斥(Distributed Mutual Exclusion),而这种被互斥访问的共享资源就叫作临界资源(Critical Resource)。
     

    分布式互斥方法

    • 集中式方法(中央服务算法)
          引入一个协调者程序,得到一个分布式互斥算法。每个程序在需要访问临界资源时,先给协调者发送一个请求。如果当前没有程序使用这个资源,协调者直接授权请求程 序访问;否则,按照先来后到的顺序为请求程序“排一个号”。如果有程序使用完资源,则通知协调者,协调者从“排号”的队列里取出排在最前面的请求,并给它发送授权消息。拿到授权消息的程序,可以直接去访问临界资源。每个程序完成一次临界资源访问,需要进行 3 次消息交互。
     
     
      • 优点:简单、易于实现;通信高效
      • 缺点:可用性低,性能易受协调者影响
      • 应用场景:在协调者可靠性和性能有一点保障的情况下,可以适用于比较广泛的场景
    • 分布式方法(使用组播和逻辑时钟的算法)
         当一个程序要访问临界资源时,先向系统中的其他程序发送一条请求消息,在接收到所有程序返回的同意消息后,才可以访问临界资源。 其中请求消息需要包含所请求的资源、请求者的 ID,以及发起请求的时间。一个程序要成功访问临界资源,至少需要 2*(n-1) 次消息交互。
     
     
     
     
    • 优点:可用性较高
    • 缺点:通信成本较高,复杂度较高
    • 应用场景:临界资源使用频度较低且系统规模较小的场景
    Hadoop的分布式文件系统HDFS的文件修改就是一个典型的应用分布式算法的场景
        处于同一个局域网内的计算机 1、2、3 中都有同一份文件的备份信息,且它们可以相互通信。这个共享文件,就是临界资源。当计 算机 1 想要修改共享的文件时,需要进行如下操作:
    • 计算机 1 向计算机 2、3 发送文件修改请求;
    • 计算机 2、3 发现自己不需要使用资源,因此同意计算机 1 的请求;
    • 计算机 1 收到其他所有计算机的同意消息后,开始修改该文件;
    • 计算机 1 修改完成后,向计算机 2、3 发送文件修改完成的消息,并发送修改后的文件数据;
    • 计算机 2 和 3 收到计算机 1 的新文件数据后,更新本地的备份文件。
     
    • 令牌环方法(基于环的算法)
       所有程序构 成一个环结构,令牌按照顺时针(或逆时针)方向在程序之间传递,收到令牌的程序有权访问临界资源,访问完成后将令牌传送到下一个程序;若该程序不需要访问临界资源,则直接把令牌传送给下一个程序。

           

    • 优点:单个参与者通信效率较高,可用性较高
    • 缺点:当参与者对临界资源使用频率较低时,会带来较多无用通信
    • 应用场景:系统规模较小,并且系统中每个程序使用共享资源频率较高且使用较短的场景;令牌环算法非常适合通信模式为令牌环方式的分布式系统,例如移动自组织网络系统。一个典型的应用场景就是无人机通信。
    • 两层结构的分布式令牌环算法:
      • 把整个广域网系统中的节点组织成两层结构,可以用于节点数量较多的系统,或者是广域网系统。
      • 广域网由多个局域网组成,因此在该算法中,局域网是较低的层次,广域网是较 高的层次。每个局域网中包含若干个局部进程和一个协调进程。局部进程在逻辑上组成一个环形结构,在每个环形结构上有一个局部令牌T在局部进程间传递。局域网与局域网之间通过各自的协调进程进行通信,这些协调进程同样组成一个环结构,这个环就是广域网中的全局环。在这个全局环上,有一个全局令牌在多个协调进程间传递。
     
  • 相关阅读:
    JFinal连接多个数据库
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) net start mysql服务名无效
    oracle中文显示为问号
    IDEA开发环境的设置约定
    WSL distro导入导出
    Linux服务器的x11图形模式方式远程管理参考
    WSL Linux 的 Windows 子系统[笔记]
    devops-cd之esxi和docker实战
    devops-cd之vagrant virtualbox实战
    ansible高级使用知识点
  • 原文地址:https://www.cnblogs.com/Onlywjy/p/12800133.html
Copyright © 2011-2022 走看看