- 物理模型:考虑组成系统的计算机和设备的类型以及它们的互连,不涉及特定的技术细节。
- 体系结构模型:从系统的计算元素执行的计算和通信任务方面来描述系统。
- 基础模型:采用抽象的观点描述大多数分布式系统面临的单个问题的方案。
物理模型
三代分布式系统:
- 早期分布式系统
- 80年代 LAN(局域网)
- 互联网规模的分布式系统
- 90年代 cluster(集群)
- 当代的分布式系统
- 移动计算
- 普适计算(泛在计算)强调和环境融为一体的计算概念,计算机本身则从人们的视线里消失。
- 云计算
体系结构模型
一个系统的体系结构是用独立指定的组件以及这些组件之间的关系来表示的结构。
关键问题:
- 通信的实体是什么?
- 如何通信(通信范型)?
- 扮演的角色及承担的责任是什么?
- 如何映射到具体的基础设施上(放置)?
通信实体
从系统的角度来看通信的实体一般是进程,但在一些传感器网络中可能无法支持进程因此实体可能是节点,另外在很多分布式系统中会用线程补充进程。因此通信实体可能是:线程、进程、节点
面向问题的角度:
- 对象
- 组件(对象+需要的接口)
- Web服务
通信泛型
- 进程间通信
- 套接字
- 多播
- 消息传递
- 远程调用
- 请求-响应模型
- RPC远程过程调用
- 远程方法调用RMI(一个发起调用的对象能够调用另一个远程对象的方法)
- 间接通信
- 组通信(一对多通信泛型)
- 发布-订阅模式
- 消息队列
- 分布式共享内存(在不支持共享物理内存的进程间共享数据)
- 元组空间(把任意结构化数据项存放在一个持久元组空间,其他进程可读或删除)
进程间通信和远程调用存在两种深度耦合:
- 空间耦合:发送方需要得知正在发送给谁
- 时间耦合:发送方和接受方需要同时在线
角色和责任
C/S架构
- 简单直接
- 伸缩性差:系统的伸缩性不会超过提供服务的计算机的能力和该计算机所处网络连接的带宽
P2P结构
可用于运行服务的资源随用户数目的增加而增加
放置
对象或服务等实体如何映射到底层的物理分布式设施上,主要与性能相关,但也要考虑可靠性和安全性问题。参见的放置策略:
- 将服务映射到多个服务器
- 缓存
- 移动代码(js)
- 移动代理
体系结构模式
分层体系结构
复杂的系统被分成若干层,每层利用下层提供的服务。
中间件是一种软件,它提供基本的通信模块和其他一些基础服务模块
层次化体系结构
与分层体系结构互补,是一项组织给定层功能的技术。比如web的两层体系结构和三层体系结构
瘦客户端
本地只是一个 GUI,应用程序在远程计算机上执行。(云游戏)
基础模型
对体系结构模型中公共属性的一种更为形式化的描述
交互模型
分布式系统由多个以复杂方式进行交互的进程组成,进程之间通过消息传递进行交互,实现系统的通信和协作功能。
影响进程交互的因素:
- 通信性能
- 延迟:第一个比特率发出到到达目的节点在网络中所花费的时间
- 带宽:在单位时间内,网络上能够传输的信息总量
- 抖动:传输一系列信息所花费时间的变化值
- 计算机时钟:每台计算机具有自己的独立内部时钟
时钟漂移率:计算机时钟偏移绝对参考时钟的比率。
同步分布式系统
有严格的时间限制假设
- 进程执行的每一步时间有上限和下限
- 每个在网络上传输的消息可以在已知的时间范围内接收到
- 每个进程的局部时钟相对于实际时间的漂移在已知范围内
异步分布式系统
无严格的时间限制假设(如Email,FTP)
- 进程执行速度未知
- 消息传递延迟未知
- 时钟漂移率未知
异步分布式系统达成协定非常困难,如Pepperland协定问题
故障模型
计算机或者网络发生故障,会影响服务的正确性,故障模型的意义在于将定义可能出现的故障的形式,为分析故障带来的影响提供依据。
遗漏故障
进程或者通信没有正常的工作(良性故障)
- 进程遗漏故障:进程崩溃crash(在同步系统中可以通过时限检测,但在异步系统中无法判断)
- 通信遗漏故障:信息丢失
随机故障(拜占庭故障)
随机故障用于描述可能出现的最坏的故障,且错误很难被察觉,会返回错误的信息(拜占庭问题中的叛变)。(恶性故障)
- 进程的随机故障是值其随机地遗漏了要处理的步骤,或执行了一些不需要处理的步骤。
- 通信信道的随机故障较少,因为可以通过校验等来处理
时序故障
时序故障进发生在同步分布式系统中(良性),故障导致在制定的时间间隔内不能完成对客户的响应。
故障类型 | 影响对象 | 描述 |
---|---|---|
时钟 | 进程 | 进程的本地时钟超过了与实际时间的漂移率范围 |
性能 | 进程 | 进程超过了两个进程步之间的间隔范围 |
性能 | 通道 | 消息传递花费了比规定的范围更长的时间 |
屏蔽故障
分布式系统中每个组件通常基于其他一组组件构造,利用存在故障的组件构造可靠的服务是可能的。
一对一通信的可靠性
- 有效性:在发送端缓冲区的消息最终能够到达接收端的缓冲区
- 完整性:接收到的消息和发送的消息完全一样,没有消息被发送两次
安全模型
分布式系统的模块特性以及开放性,使得它们暴露在内部和外部的攻击之下,安全模型的目的是提供依据,以此分析系统可能受到的侵害,并在设计系统时防止这些侵害的发生。