zoukankan      html  css  js  c++  java
  • 操作系统学习笔记:分布式系统结构

    分布式系统是一组不共享内存和时钟的处理器的集合,即每个处理器都有它自己的内存,处理器之间的通信可通过各种通信网络加以实现。

    一、动机
    这里写图片描述
    建立分布式系统主要由4个方面的原因:
    1、资源共享
    2、加快计算速度
    3、可靠性
    4、通信
    不同站点可以有机会交换信息

    二、分布式操作系统的类型
    1、网络操作系统
    通过远程登录或从远程机器传送数据到自己机器的方式来访问远程资源。

    易于实现,但难用。

    2、分布式操作系统
    用户可以像访问本地资源一样来访问远程资源。从一个站点到另一站点的数据和程序迁移由分布式操作系统控制。
    1)数据迁移
    分为整体迁移和按需迁移两种。如果仅访问大文件中的小部分,按需迁移效率更高;如果访问大部分,则复制整个文件效率更高。这有点象数据库的全表扫描。

    2)计算迁移
    系统之间传递计算而不是数据。比如,需要汇总不同站点的不同文件,分别在各站点访问,然后汇总处理结果(MapReduce)。

    这种计算可用不同方法来实现:直接调用远程主机的命令,或者发送消息到远程主机,触发其执行。

    3)进程迁移
    计算迁移的逻辑扩展。一个进程可能分布在不同的站点上执行。这可以基于如下考虑:
    负载平衡
    计算加速
    硬件偏好:进程可能更适合在特定的处理上执行
    软件偏好:进程可能需要在特定站点上的软件加以运行
    数据存取:如果使用的数据非常多,远程命令可能比传递数据到本地更为有效。

    WEB具有许多分布式计算的特征。

    三、网络结构
    局域网、广域网

    四、网络拓扑结构
    分布式系统内的站点可用多种方法物理连接,每种都有优缺点。可按下面标准来比较:
    安装成本
    通信成本
    有效性

    这里写图片描述

    五、通信结构
    通信网络的设计必须考虑5个基本问题:
    1、命名和名字解析
    远程系统的进程通常用<主机名,标识符>来标识,其中主机名是网络内的唯一名称,标识符可以是进程标识符或该主机的其他唯一号码。为了方便用户区分使用,主机名通常用字符标识。但对于机器而言,数字更加快速和简单。因此有一种机制将主机名解析,把目标系统描述成连网硬件的主机ID。呵呵,不错,就是DNS。

    2、路由策略
    每个站点拥有一张路由表,其中描述发送一条消息到其他站点的可选路径;可能还包括各条路径的速度和成本信息。必要时,可以手动或通过交换路由信息程序来更新这些信息。最为通用的三种路由策略是
    固定路由:成本最低
    虚拟路由:会话期间固定。
    动态路由:复杂,但在复杂环境中是最好方法

    网关:知道如何连接到达本地网络和其他网络的节点。
    路由器:计算机网络负责路由的实体。一个路由器必须至少有两个网络连接。路由器决定消息的传送路径。路由器检查它的路由表来决定目标主机的位置,或者目标主机所在的网络。
    网关和路由都是专用的硬件设备。

    3、包策略
    消息通常长度不定,为了简化系统设计,通用使用固定长度的包、帧或数据报来实现通信。

    4、连接策略
    一旦消息到达目的地,进程可建立通信会话来交换信息。最常用的是
    电路交换:
    两个进程间建立一个物理链路,通信会话期间独占使用。

    消息交换:
    两个进程在传送一条消息期间建立一个暂时的链路。多条消息可以共用。

    包交换:
    一个逻辑消息被拆分成许多包,分别传送,路径可能不同,到达目的地后再组装。每个包除了数据外,还包括源地址和目标地址。包交换是最常用的方法。以为它最大限度地利用了网络带宽。

    5、线路竞争
    消息传递过程中,可能会变得混乱而必须被丢弃,需要重新发送。因此有个避免重复和冲突的问题。解决方法是

    冲突检测:
    传送报文之前,站点必须侦听链路是否空闲(载波侦听多路存取),空闲开始传输,否则必须等待。如果两个或更多站点同时传输,则必须记录一个冲突检测,并停止传输,然后每个站点在随机时间间隔后重新尝试。

    以太网成功地应用了这一技术。(所谓以太网,就是应用了这一技术的网络)

    令牌传递:
    一种独特的称为令牌的报文在系统中循环,等到令牌的站点才可以传输,传完后重新传送令牌。如果令牌丢失,系统通过选举,选出一个站点生成新令牌。

    六、通信协议
    网络系统必须在一个或一组能够支持诸如确定主机名、网络的主机定位、建立连接等操作的协议上取得一致。为简化设计,分为多个层次。
    这里写图片描述

    在逻辑上,协议的每一层与其他系统的同层通信。而在物理上,一个报文从应用层或更高层出发,依次通过每一个更低的层,每一层可以修改此报文,包括添加报文头部。我的理解就是,就好像一个快递一个货物,送出去前,快递公司会先将货物包裹一层,贴上标签;然后送达接收人,他再剥开包裹,得到货物。

    这里写图片描述

    TCP/IP协议比ISO模型层少。

    七、健壮性
    分布式系统可能遇到各种硬件故障,比如链路故障、站点故障、报文丢失等。为了保证系统健壮,必须检测到任何错误,重新配置系统以继续运行,或复原。

    1、故障检测
    使用握手过程来检测链路或站点故障。

    2、重构
    站点发现故障后,必须启动一个程序,重新配置系统并继续正常的操作模式。比如广播此故障,避免其他站点使用该出错站点的服务。

    3、故障恢复
    当链路或站点的错误被修复后,必须能够与系统重新整合起来。

    八、设计事项
    把处理器和存储设备的多样性设计成对用户透明并不是一件简单的任务。理想的情况是,分布式系统在用户看来就像一个传统的集中式系统。

    1、透明:一个透明的分布式系统的用户界面不应区分本地和远程资源,即用户能像在本地一样地访问远程分布式系统。分布式系统应该负责查找资源以及安排适当的交互操作。

    2、灵活性:透明的另一方面体现在用户的灵活性上。它允许用户登录到系统的任意机器,而不是强迫使用特定。

    3、容错性:系统能在一定程度上容忍各种故障,出现了问题后,仍然能够继续运行。

    4、可扩展性:适应日益增长的负荷能力。具有可扩展的潜力。

  • 相关阅读:
    从业十余年谈谈对dotnet看法与坚持
    monodroid 调用 JNI Native 的一些问题
    application数据库连接池spring.datasource.type=com.alibaba.druid.pool.DruidDataSource报错
    IDEA创建Spring Boot项目无法连接http://start.spring.io 解决方法
    mysql安装和sqlyog,mysql缺少依赖
    idea配置本地maven
    idea2020v1.3设置中文
    java安装及javac报错解决方法
    微信小程序数组里的值修改,for循环修改数组内容
    微信小程序如何获取屏幕高度和宽度
  • 原文地址:https://www.cnblogs.com/leftfist/p/6808746.html
Copyright © 2011-2022 走看看