版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37053885/article/details/86408942
复习大纲
- chapter1
- 分布式计算的定义
- l分布式计算系统是由多个相互连接的计算机组成的一个整体,这些计算机在一组系统软件(分布式操作系统或中间件)环境下,合作执行一个共同的或不同的任务,最少依赖于集中的控制过程、数据和硬件。
- 分布式系统
- ①包含多个通用资源部件(物理的或逻辑的),可以动态基础上被指定给予各个特定的任务;
- ②这些资源部件在物理上是分布的,并经过一个通信网相互作用;
- ③有一个高级操作系统,对各个分布的资源进行统一和整体的控制;
- ④系统对用户是透明的;
- ⑤所有的资源都必须高度自治地工作而又相互配合,系统内不存在层次控制。
- 特征:
- l一组由网络互联的、自治的计算机和资源
- l资源为用户所共享
- l可以集中控制,也可以分布控制
- l计算机可以同构,也可以异构
- l分散的地理位置
- l分布式故障点
- l没有全局时钟
- l大多数情况下没有共享内存
- 开放性
- 可扩展性
- 异构性
- 透明性
- 安全性
- 分类
- 同构多计算机系统
- 异构多计算机系统
- 分布式操作系统
- 微内核式
- 集成式
- 客户机/服务器
- 中央式
- 分散式
- 计算机网络与中间件
- 网络操作系统
- 分布式系统中间件
- 中间件服务
- 名字服务
- 作业调度
- 资源管理
- 数据持久化
- 分布式事务
- 分布式文档系统
- 安全服务
- 中间件LSF(Load Sharing Facility)负载均衡系统
- 中间件服务
- 分布式计算模式
- 面向对象模式
- 面向对象模式OOM( Object Oriented Model)是基于客户/服务器模型(如CORBA,DCOM)
- 面向服务模式
- Web Service是这种面向服务模式的一个实例 ,SOA是一个较完整的软件结构体系。
- 公用计算模式
- 支持e-科学的计算(如网格Grid等)
- 志愿者参与模式
- 志愿参与模式VJM(Voluntary Join Model)是充分利用网上空闲的计算能力,支持计算量巨大的科学计算。
- 面向对象模式
- 分布式计算的定义
- chapter2 名字服务
- 名字服务结构
- 分布式系统实体
- 名字与地址
- 名字:实体的名字是一个用户可读的、便于记忆的字符串
- 地址:实体的访问点的名字称为实体的地址(网络中实体地址包括实体的网络层IP地址和实体的传输层TCP)
- 属性:属性用属性对<类型-值>表示。¡通过属性也可以找到实体。
- 标识符:一个标识符始终引用同一个实体,一个标识符最多引用一个实体,每个实体最多由一个标识符引用
- 名字与地址
- 名字服务的形式:
- 名字服务:名字数据库是命名实体与其属性(地址)绑定的集合。名字服务是根据实体的名字查找它的属性(地址),俗称白页服务。
- 目录服务:目录数据库是命名实体与其一个或多个属性绑定的集合,属性包括属性类型和一个或多个属性值。俗称黄页服务。如X.500目录服务。
- 合约服务:一种增强的目录服务,它通过技术规范来定位一个命名实体,也称绿页服务。如Web服务。
- 名字空间:命名系统的名字集合构成该命令域的名字空间。
- 增加名字项和绑定
- 当一个实体进入系统,在名字服务器中应增加一个名字项及其绑定。
- 撤消名字项和绑定
- 当一个实体离开系统时,在名字服务器应删除该名字项及其绑定。
- 修改名字项和绑定
- 当一个实体在系统移动到其它部位时,在名字服务器应修改该名字项及其绑定。
- 名字解析
- 这是名字服务最经常的工作,它是根据实体名查到实体的地址。
- 增加名字项和绑定
- 名字图:
- 绝对路径:第一个结点包含根结点
- 挂载点:(存储结点标识符的目录结点)
- 挂载外部空间需要:
- 访问协议的名称
- 服务器的名称
- 外部名称空间中挂载点的名称
- 挂载外部空间需要:
- 名字服务器:(数据库+名字解析软件)数据库存储实体名和地址的绑定,及其他信息
- (名字代理是名字服务器与客户之间的一个接口,它与名字服务器协调,生成名字解析上下文和进行名字解析,同时缓存名字查询和名字解析的结果。)
- 名字空间的实现与管理,名字空间可划分为多个名字域由多个相应的名字服务器实现和管理
- 管理方式:
- 上下文集中管理
- 上下文分布管理
- 多副本分布式管理
- 名字解析的实现:
- 迭代解析
- 递归解析
- 迭代解析
- 名字服务器的组成:
- 名字服务器操作:管理、查询操作和行政管理。增加、删除和修改上下文的目录项。访问优先权。
- 名字解析:根据名字解析请求,得到被解析对象地址。
- 缓存:缓存名字查询和解析的结果。
- 多副本管理:副本修改和副本一致性维护。
- 通信:客户端的名字代理和名字服务器之间通信
- 数据库:存放名字解析上下文或其子域。
- 分布式系统实体
- 域名系统
- 目录服务X.500(目录服务模型)
- 轻量目录访问协议
- 基于IP访问X.500数据的方法
- 目录结构
- 目录树
- X.500的命名实体称为对象。目录信息树的每个节点表示一个目录项,一个目录项表示一个被命名对象。
- X.500规定国家、地区(省或州)、组织、部门和公共名都是命名对象的属性,将这些属性级联就成为命名对象全局可区分名
- 目录树
- 目录服务组件:
- 录服务操作:
- 目录服务协议:
- 轻量目录访问协议
- 名字服务结构
- Chapter3 分布式进程
- 分布式进程的概念
- 进程是操作系统中独立存在的实体,它可以拥有自己独立的资源,比如文件和设备描述符等,在没有经过进程本身允许的情况下,其他进程不能访问到这些资源。
- 进程状态:
- 创建、运行、等待、就绪
- 线程:
- 是包含在进程中的一种实体,线程有其自己的运行线索,可以完成一定的任务,可与其他线程共享进程中的共享变量及部分环境,相互之间协同来完成进程所要完成的任务。
- 实现线程包的基本方法:
- 用户模式的线程库
- 内核管理与调度的线程
- 混合形式
- 进程远程执行
- 进程迁移
- 进程迁移是将一个正在运行的进程挂起,它的状态从源处理机节点转移到目标处理机节点,并在目标处理机上恢复该进程运行。
- 优缺点:进程迁移具有灵活且应用广泛的优点,支持动态负载平衡、系统容错、高效使用本地资源等诸多系统功能。进程迁移的缺点是运行开销相对较大。
- 机制/步骤:
-
- 进程迁移策略:动态负载平衡
- 进程迁移实现:
- 进程状态收集和恢复
- 状态信息:进程上下文由它的用户级上下文、寄存器上下文和系统上下文组成
- 转发机制:针对迁移进程行为中与位置相关的操作
- 通信恢复
- 进程迁移算法
- 异步迁移算法:
- 同步迁移算法
- 进程状态收集和恢复
-
- 分布式进程的概念
- Chapter4 分布式系统通信
- 消息传送:
- 基本原语:
- send和receive
- send(&x, destination_ID):发送原语send至少给出一个要发送的消息体(内容)位于存储单元x中,x = M,M,和消息接收进程的标识符destination_ID
- receive(&y, source_ID):接收原语receive至少给出一个要接收的消息体M和消息发送进程的标识符source_ID,消息体要存入存储单元y中,y =M,
- 消息传送模式:
- 消息={destination_ID, M, source_ID}
- 同步消息传送:P执行send必须等待Q执行对应的同步receive原语
- 阻塞发送/接收
- 非阻塞发送/接收
- 消息={destination_ID, M, source_ID}
- send和receive
- 基本原语:
- 组通信:
- 组:由系统或用户确定的若干个进程的集合
- 通信方式:
- 点到点通信:单播
- 一到多通信:多播、广播
- 点到点通信:单播
- 组结构:
- 封闭组
- 开放组
- 对等组:
- 分层组:
- 封闭组
- 组通信应用:
- 多副本容错
- 提高多副本数据修改效率
- 自发连网的服务发现
- 事件通知传播
- 基本的可靠组通信
- 解决组播消息丢失:
- 可靠组播扩展性:
- 不分层反馈机制
- 分层反馈机制
- 不分层反馈机制
- 解决组播消息丢失:
- 原子组播
- 虚拟同步
- ISIS虚拟同步
- ISIS虚拟同步
- 消息排序
- 虚拟同步
- 远程过程调用(Remote procedure call(RPC):
- 参数传递
- 值参数传递
- 引用参数传递
- 参数的规范形式
- 桩stub的生成:分布式系统的接口由接口定义语言进行定义(IDL),利用IDL编译器可以产生某种编程语言的客户端桩(服务器再客户端的代理)和服务端桩(客户端在服务器端的代理),桩与程序编译连接,形成客户端和服务端的可执行程序。基于RPC的中间件系统都提供了IDL
- RPC语义
- 客户机不能定位服务器
- 请求消息丢失
- 应答消息丢失
- 服务器崩溃
- 客户崩溃
- 清剿/转世/温和转世/期满
- 参数传递
- 远程对象方法调用(RMI):
- 客户与对象绑定
- 远程对象引用:访问对象的一种机制
- 对象实际驻留结点的网络地址
- 管理该对象的服务器进程端口号
- 服务器为该对象提供的16位数的内部对象ID
- 显示绑定/隐式绑定
- 对象通信:
- 本地调用:调用对象同在一个进程中
- 进程外调用:调用和被调用对象在同一节点的不同的进程上【共享存储区的代理-骨架对调用】
- 远程调用:调用和被调用对象在不同节点上【通过代理骨架对进行Proxy-skeleton=》CORBA独享通信的基本框架=》对象请求代理ORB】
- 远程对象引用:访问对象的一种机制
- RPC与RMI的区别
- 客户与对象绑定
- 事件与通知:
- Jini事件通知
- 事件涉及的对象
- 远程事件类
- 事件生成器接口
- 消息传送:
- Chapter5 分布式系统同步
- 时钟同步
- 时钟同步算法
- Cristian算法
- 询问式同步
- 时间决不能倒退
- 逐步修正
- 服务器被动
- Berkeley算法
- 轮询-发布式同步
- 服务器主动
- Cristian算法
- 时钟同步算法
- 逻辑时钟:计算机内部各时钟一致,而不是是否与真实时间接近。更进一步,只需跟踪事件的顺序。
- Lamport:
- 向量时间戳
- Lamport:
- 选举算法(选择一个进程来充当协调者的算法,通常选举算法会找出全局唯一编号最大者作为协调者,当各个算法找出协调者时所用的方法均有所不同)
- 环选举算法:
- 欺骗算法:
- 环选举算法:
- 互斥算法(避免多进程访问临界区中的共享资源所产生的冲突)
- 集中式算法:选举一个协调者,每次进入临界区只需请求、应答和释放三个消息。缺点:容易出现单点故障。如果发出请求之后被 阻塞,请求者无法区分拒绝进入和协调器崩溃。单个协调者也可能成为系统性能的瓶颈。
- 基于时间戳算法
- 1.Lamport算法
- 缺点:Lamport算法:当一个进程出现崩溃的时候不能对请求的进程做出应答,这种情况被视为拒绝请求。这样便阻塞了进程进入临界区,N个进程之一发生故障的可能性是单个协调者发生故障的可能性的N倍,而且其比集中式算法要花费更多的带宽,开销是3(N-1)个信息,N为竞争资源的进程数。
- 缓解该缺点的方法是:在一个进程接收到请求的时候,不论是拒绝还是同意都返回一个应答消息。这样便可以通过超时机制来确定进程是否发生故障。
- 缺点:Lamport算法:当一个进程出现崩溃的时候不能对请求的进程做出应答,这种情况被视为拒绝请求。这样便阻塞了进程进入临界区,N个进程之一发生故障的可能性是单个协调者发生故障的可能性的N倍,而且其比集中式算法要花费更多的带宽,开销是3(N-1)个信息,N为竞争资源的进程数。
- 2.Ricart_Agrawala算法
- 1.Lamport算法
- 基于令牌算法
- 1.逻辑环结构
- 2.无环结构
- 基于事件优先权算法(基于时间的事件定序的分布式互算法不适用于实时分布式系统,因为其缺乏公共时钟,而且进程一般有各自的优先级,应该要用基于优先级的顺序进行处理)
- 目标适应优先权系统(P系统)和实时系统(RT)的要求
- 1.完全可靠网络算法
- 2.不可靠网络算法
- 3.共享K个相同资源的算法
- 服务器上面有K个资源的副本,而有N个进程需要进行访问,请求访问资源的进程Pi如果能收到N-K个以上的应答那么其就可以进入临界区访问资源
- 服务器上面有K个资源的副本,而有N个进程需要进行访问,请求访问资源的进程Pi如果能收到N-K个以上的应答那么其就可以进入临界区访问资源
- 时钟同步
- Chapter8 多副本的一致性与DSM(数据存储多副本的目的是为了提供系统的可靠性和性能,提高系统的容错能力,提高系统效率,增强系统可扩展性)
- 一致性模型(区分不同模型)【是数据存储和访问数据存储进程之间的契约】
- 数据为中心的一致性模型
- 针对数据存储的各个操作之间指定一种操作顺序
- 严格一致性
- 顺序一致性
- 因果一致性
- FIFO一致性
- 严格一致性
- 对操作组之间进行定序【有些应用不关心总结结果是否已经按一定的顺序传播到所有的副本】
- 弱一致性
- 释放一致性
- 入口一致性
- 弱一致性
- 针对数据存储的各个操作之间指定一种操作顺序
- 客户为中心的一致性模型
- 单调读
- 单调写
- 写后读
- 读后写
- 数据为中心的一致性模型
- 分发协议(区分一个服务满足哪些协议)
- 副本放置
- 永久副本
- 服务器启动副本
- 客户启动副本
- 更新传播
- 状态与操作(要传播什么样的消息?)
- 传播更新通知:无效化协议(写操作对读操作比例高时时适用)
- 传播更新数据:读操作对写操作的比率很高时(此时更新的数据不会被频繁地覆盖)
- 传播更新操作:不传播被修改的数据而是直接告诉副本应该进行哪些更新操作来保持各副本关联数据的一致性
- 拉协议与推协议(谁启动更新传播?)
- 租赁
- 组播与单播
- 状态与操作(要传播什么样的消息?)
- 副本放置
- 一致性协议(一致性模型的实现)
- 主-从副本协议
- 远程单副本协议
- 远程主副本协议
- 迁移读/写协议
- 迁移主副本写协议(写操作将数据项主副本迁移到客户副本服务器上执行,然后主副本服务器通知其他服务器对数据项进行修改。读操作是在本地副本上进行的)
- 远程单副本协议
- 复制写协议
- 主动多副本协议(写操作在所有副本上执行)【由于客户/服务器模型的多副本引发多重调用:可以采用选举或指定在多副本中选出一个协调者统一转发多副本的调用和应答】
- 带时间戳的原子组播
- 中央定序器
- 基于法定数量的协议(写操作在一个法定数量[超过副本总数的一半]的副本上执行)【要求客户在读或写一个多副本共享数据之前先先多个副本服务器提出请求,并得到他们的同意】
- 主动多副本协议(写操作在所有副本上执行)【由于客户/服务器模型的多副本引发多重调用:可以采用选举或指定在多副本中选出一个协调者统一转发多副本的调用和应答】
- 高速缓存相关性协议【保证高速缓存与服务器启动的副本相一致。】
- 主-从副本协议
- 一致性模型(区分不同模型)【是数据存储和访问数据存储进程之间的契约】
- Chapter9 分布式文件系统
- 分布式文件系统简介
- 分布式文件系统设计的问题
- 文件使用模式
- 命名和名字解析
- 结构与接口
- 缓存策略与一致性
- 文件共享语义(为了理解文件的行为)
- UNIX语义:顺序一致性语义
- 会话语义
- 不修改共享文件语义
- 事务语义
- 断开操作与容错
- 文件使用模式
- 分布式文件系统设计的问题
- 网络文件系统(Network File System【NFS:实现文件系统的挂载(本地文件目录/服务器的文件目录)】 )
- NFS的系统组成
- 系统模型
- 命名
- 名字空间:为每一个用户规定一个部分标准化的空间
- 文件安装协议:NFS安装协议,由客户调用在本地目录中选中的挂接点实现远程文件安装
- 文件属性:
- 强制属性
- 推荐属性
- 命名属性
- 文件句柄
- 远程过程调用
- 复合调用
- RPC重传
- PRC安全
- 文加共享
- 文件加锁
- 访问操作分类
- 客户端缓存与服务器复制
- 客户端缓存一致性
- 委托
- 服务器复制与迁移
- 文件系统迁移与状态
- 文件系统复制与状态{目录结构复制都其他服务器上}
- NFS的系统组成
- Andrew/Coda文件系统
- 组织结构
- Coda文件命名
- 文件标识符
- 组织结构
- 远程过程调用RPC2
- 文件共享语义
- 事务处理语义
- 访问控制
- 事务处理语义
- 缓存与控制【实现Coda高可用性的基本方法】
- 客户端缓存
- 服务器复制:Coda允许以文件卷(卷是构成名字空间的基本单位)为单位将文件复制到多个服务器上。拥有一份卷副本的服务器集合称为该卷的卷存储组(Volume Storage Group,VSG)。在VSG中用户可以联系到的服务器称为可访问卷存储组(Accessible Volume Storage Group,AVSG).如果AVSG为空,则该用户应该是处于断开状态。
- 断开操作
- 客户端缓存
- 分布式文件系统简介
- Chapter11 面向对象的分布计算
- Common Object Request Broker Architecture,公用对象请求代理结构 CORBA是对象管理体系(OMA,Object Management Architecture)的一部分,作为规范分布式对象间互操作的标准。
- OMA参考模型
- CORBA
- Java RMI【远程方法调用RMI(Remote Method Invocation)是Java特有的分布式计算技术。它实质上是通过Java编程语言扩展了常规的过程调用,在网络上不仅可以传送对象的数据,而且可以传送对象的代码。】
- Java RMI
- Java RMI
- 分布式组件对象模型DCOM
- Chapter12 面向服务的分布式计算
-
最后附上以上内容超大版思维导图建议下载下来观看(PS:图片太大了,所以折叠了一些分支,要原版图片的可以评论区留言):