分布式系统的特征
划重点
- 什么是分布式系统
分布式系统是硬件或软件组件分布在连网的计算机上,组件间通过传递消息进行通信和动作协调的系统。 - 分布式系统的特征
并发性:组件执行并发性操作;
缺乏全局时钟:系统没有全局时钟概念,依赖消息发送的事实判断进程的先后顺序;
故障独立性:某个组件发生故障的同时,另一个组件仍可能正常运行。组件无法区分网络故障和其他组件故障引起的通信异常。 - 分布式系统设计的动力:共享
- 什么是云:
基于互联网的应用,并满足大多数用户需求的存储和计算服务的集合,允许用户减少对设备的需求,以便携式或简单的设备访问很广范围内的资源和服务。 - 什么是服务:
计算机系统中管理相关资源并提供功能给用户和应用的单独部分。 - 分布式系统中,客户端和服务器的是指扮演客户角色和服务器角色的计算机吗?
答:是进程! - 分布式系统的特性:
异构性、开放性、安全性、可伸缩性、故障处理、并发性、透明性、服务质量。
分布式系统模型
描述分布式系统的3个模型:物理模型、体系结构模型、基础模型。
物理模型描述计算机设备,及其网络方面的硬件组成,其分布式特性为异构性;
体系结构模型描述计算机集合间的计算和通信任务,如客户-服务器模型、对等模型、分布式对象、分布式组件、分布式基于事件;
基础模型描述分布式系统的单个方面的解决方法,如交互模型、故障模型、安全模型。
体系结构模型
体系结构元素
- 通信实体
通常而言,分布式系统的通信是进程间通信,但根据具体问题又可细化出一些抽象的通信实体,如 对象、组件、Web服务。 - 通信范型
可分为:
进程间通信:底层消息通信
远程调用:在底层消息通信之上,基于双向交换技术的实体通信,包括请求-应答协议、远程过程调用RPC、远程方法调用RMI
间接通信:允许接受和发送双方存在空间或时间上的解耦,可借助第三方实体,实现消息持久性。包括 组通信、发布-订阅系统、消息队列、元组空间、分布式共享内存。 - 职能
举栗子:客户端-服务器体系中,通信实体的职能可分为消费和服务,较为专一;对等体系中,通信实体的职能相同,可同时扮演消费和服务的角色,如种子文件共享系统,此类系统伸缩性较强。 - 映射物理设备
映射策略:将服务映射到多个服务器、缓存、移动代码、移动代理。
体系结构模型
- 分层
复杂的系统被垂直划分为若干抽象层,每层利用下层提供的服务。从下到上可一次分为计算机和网络硬件层、操作系统层、中间件、以及应用服务层 - 层次化体系结构
组织指定层的技术,与应用服务层最相关,对给定应用的功能可拆解为表示逻辑、应用逻辑和数据逻辑。经典的体系结构有两层和三层体系结构。 - 瘦客户
瘦客户是指一个软件层,在执行一个应用程序或访问远程计算机上的服务时,由该软件层提供一个机遇窗口的本地用户界面。这种方法可以通过大量网络化服务和潜在能力极大的增加简单的本地设备。特征是所有的软件运行、配置、数据存储、升级维护都在服务器端完威.软件完全在服务器上运行,客户机仅作为输入、输出的设备。衍生:虚拟网络计算(VNC) - 其他模型
代理、反射
中间件解决方案
中间件的任务是为分布式系统的开发提供一个高层的编程抽象,通过分层,对底层基础设施中的异构性提供抽象,从而提升互操作性和可移植性。
-
中间件类型
早期的中间件有远程过程调用包、组通信主类 示例 分布式对象 CORBA、Java RMI 分布式组件 OpenCOM、JBoss 发布-订阅系统 CORBA事件服务、JMS 消息队列 JMS Web服务 Apache Axis 对等 Pastry、Ivy -
中间件限制
中间件的依赖检查、错误校正机制和安全手段降低了编程效率,同时增加了不必要的复杂的冗余计算。
基础模型
所有分布式系统模型都共享下列设计需求:实现进程及网络的性能和可靠性特征,确保系统中资源的安全性。基本模型可以提取出以下模型,来描述系统特征。
交互模型
分布式系统中影响进程交互的两个重要特性:
- 通信性能是一个限制特性,每个进程的状态完全私有。
- 所有进程不能维护一个全局时间概念。
- 通信通道性能
延迟、带宽、抖动 - 计算机时钟和时序
计算机时钟与绝对时间之间有漂移,且每个计算机的漂移率互不相同。 - 变体
同步分布式系统:
对时间有严格的限制,满足下列约束:
进程执行每一步的时间都有一个上限和下限;
通过通道传递的每个消息在一个已知的时间范围内收到;
每个进程都有一个本地时钟,它与实际时间的漂移率在一个已知的范围内。
异步分布式系统:
与同步分布式系统相比,异步分布式系统对进程执行速度、消息传递延迟和时钟漂移率没有限制。实际的分布式系统经常是异步的,因为进程需要共享处理器,而通信通道需要共享网络,任何一个进程的性能都不能保证。对于异步系统中不能解决的一些设计问题,引入了使用时间的某些特性后就能解决。 - 事件排序
逻辑时间模型:在分布式系统中使用运行于不同计算机上的进程的事件提供顺序。
故障模型
故障模型定义了故障可能发生的方式,以便理解故障所产生的影响。
- 遗漏故障
进程或通信通道不能完成它应该做的动作。
进程遗漏故障:崩溃,即进程停止了。 该故障的检测方法依赖于超时的检测。但是异步系统中超时的原因可能是进程崩溃、执行速度慢,或是消息未到达。如果其他进程可以确切的检测到进程已经崩溃,那么这个进程崩溃也可称为故障-停止。
通信遗漏故障:又可分为发送遗漏故障、接受遗漏故障和通道遗漏故障。发送遗漏故障是指发送进程和外发消息缓冲区之间的消息丢失;接受遗漏故障是指在接受消息缓冲区和接受进程之间的消息丢失。通道遗漏故障为发送方和接收方两者之间的消息丢失。 - 随机故障(拜占庭故障)
进程的随机故障是指进程随机地忽略要要的处理步骤或执行些不需要的处理步骤,这类故障很难被检测到。通信通道的随机故障包括消息内容可能被损坏或传递不存在的消息等,这类故障可以被检测到。 - 时序故障
适用于同步分布式系统,指进程和通道超过了限制的性能范围。 - 故障屏蔽
利用存在故障的组件构建可靠的组件。例如使用重传消息隐藏消息遗漏故障。 - 一对一通信的可靠性
可靠性通信包括有效性和完整性:
有效性:外发消息缓冲区中的任何消息最终能传递到接收消息缓冲区。
完整性:接收到的消息与发送的消息一致,没有消息被传递两次。
安全模型
通过保证进程和用于进程交互的通道的安全以及保护所封装的对象免遭未授权访问可实现分布式系统的安全。
- 保护对象
服务器负责验证每个调用的主体的身份,检查它们是否有足够的访问权限在所调用的某个对象上完成所请求的操作。客户可以检测服务器的主体身份以确保结果来自所请求的服务器。 - 保护进程和交互
进程通过发送消息进行交互,消息易于收到攻击,因为他们所使用的网络和通信服务是开放的。 - 敌人
对进程的威胁:在分布式系统中,一个用于处理到达的请求的进程可以接收来自其他进程的消息,但它未必能确定发送方的身份。
对通信通道的威胁:一个敌人在网络和网关上行进时能复制、改变或插入消息。当消息在网络上传递时,这种攻击会对消息的私密性和完整性构成威胁,对系统的完整性也会构成威胁。
对消息的攻击:试图保存消息的拷贝并在以后重放该消息 - 解除安全威胁
密码学和共享密码
认证: 共享密码和加班的使用为消息的认证奠定基础
安全通道:加密和认证用于构造安全通道,安全通道作为已有的通信服务层之上的服务层,是连接一对进程的通信通道。安全通道的特性:
1.每个进程确切知道其他正在执行的进程所代表的主体身份。
2.安全通道确保在其上传送的数据的私密性和完整性。
3.每个消息包括一个物理的或者逻辑的时间戳以防消息被重放或者重排序。 - 其他威胁
1.拒绝服务
敌人通过超量地、无意义地调用服务或在网络上进行消息传送,干扰授权用户的活动,导致物理资源(网络带宽、服务器处理能力)的过载。
2.移动代码
进程接收和执行来自其他地方的程序代码,那么这些移动代码就会带来新的、有趣的安全问题。