《分布式系统概念与设计》 1、2章
第一章:分布式系统的特征
定义:软件或硬件组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统。 特征:
- 组件并发。执行并发程序。
- 缺乏全局时钟。这是通信是通过网络发送消息所决定。
- 故障独立性。组件出现故障,不影响其他组件。
构造和使用分布式系统是为了资源共享。
服务:计算机系统中管理相关资源并提供功能给用户和应用的一个单独的部分。
客户和服务器:都指的是进程而不是运行客户或服务器的计算机。
1.5 挑战
- 异构性(即多样性和差别)
- 下面这些均存在异构性
- 网络
- 计算机硬件
- 操作系统
- 编程语言
- 不同开发者完成的软件实现
- 中间件,指一个软件层,提供一个编程抽象,同时屏蔽底层网络、硬件、操作系统和编程语言的异构性。
- 移动代码,从一台计算机发送到另外一台计算机
- 下面这些均存在异构性
- 开放性。分布式系统开放性主要取决于新的资源共享服务能被增加和供多种客户程序使用的程度。(开放主要体现在可扩展?)
- 开放的分布式系统的特征:
- 发布系统关键接口是开放系统的特征
- 基于一致的通信机制和发布接口 共享资源
- 能使用不同的异构硬件和软件构造
- 开放的分布式系统的特征:
- 安全性。
- 可伸缩性。资源和用户数量激增,系统仍能保持其有效性。可伸缩分布式系统面临的挑战
- 控制物理资源的开销
- 控制性能损失
- 防止软件资源用尽
- 避免性能瓶颈
- 故障处理。分布式系统的故障是部分的。
- 检测故障
- 掩盖故障
- 容错
- 故障恢复
- 冗余
- 并发性。共享资源必须确保在并发环境中操作正确。
- 透明性。对用户和应用程序员屏蔽分布式系统组件的分离性,是系统被认为是一个整体,而不是独立组件的集合。
- 各种透明性。访问透明性、位置透明性…
- 服务质量。主要非功能性特征有可靠性、安全性、性能。
第二章:系统模型
2.1 简介
- 物理模型:从计算机及与之互联的网络方面考虑系统的硬件组成
- 体系结构模型:从系统的计算元素执行的计算和通信任务方面来描述系统
- 基础模型:采用抽象的观点描述分布式系统的某个方面
- 交互模型:考虑系统元素之间通信的结构和顺序
- 故障模型:考虑系统可能不能正确操作的方式。
- 安全模型:考虑如何保护系统使其不受到正确操作的干扰或不被窃取数据。
2.3 体系结构模型
2.3.1 体系结构元素
通信实体:
分布式系统中通信的实体往往是进程,这导致普遍把分布式系统看成带有恰当进程间通信范型的多个进程。
但是需要注意:
- 一些原始环境中可能不支持进程抽象,所以这些系统中通信的实体是结点。
- 另外大多是分布式系统中用线程补充进程,所以严格来说通信的末端是线程。
对象:被引入以便在分布式系统中使用面向对象的方法。 组件: Web服务:
通信范型: \
- 进程间通信。用于分布式系统之间通信的相对底层的支持。
- 远程调用。
- 请求应答协议。
- 远程过程调用(RPC)。远程计算机上进程中的过程能被调用。
- 远程方法调用(RMI)。调用远程对象中的方法。
- 间接通信。支持间接通信,通过第三个实体,允许在发送者和接收者之间的深度解耦合。
- 空间解耦合。发送者不需要知道接受者
- 时间解耦合。发送者和接受者不需要同时存在。
- 关键技术
- 组通信。支持一对多通信
- 发布订阅
- 消息队列。。。不懂。
- 元组空间。进程把任意的结构化数据项(元组)放到一个持久元组空间。其他进程可以指定感兴趣的模式,在元组空间中读或者删除元组。
- 分布式共享内存。
两种体系结构风格:
- 客户-服务器。
- 对等体系结构。进程扮演相同的角色。作为对等方进行协作交互。
放置:考虑对象或者服务这样的实体怎样映射到底层的物理分布式基础设施上。
2.3.2 体系结构模式
分层:一个复杂的系统被分成若干层,每层利用下层提供的服务。 层次化体系结构:组织给定层功能。
瘦客户(thin clients):将复杂性从最终用户设备移向互联网服务。即简化本地客户端设备。 虚拟网络计算(VNC): 为远程访问提供图形用户界面
2.3.3 中间件的解决方案
为分布式系统的开发提供一个高层的编程抽象,并且通过分层,对底层基础设施中的异构性提供抽象, 从而提高互操作性和可移植性。
2.4 基础模型
2.4.1 交互模型。 分布式系统由多个以复杂方式进行交互的进程组成。
分布式算法:定义了组成系统的每个进程所采取的步骤,包括它们之间消息的传递。
通信信道的性能:延迟、带宽、抖动
时钟漂移率:计算机时钟偏离绝对参考时钟的比率。
同步分布式系统:
- 进程执行的每一步的时间都有一个上限和下限
- 通过通道传递的每个消息在一个已知的时间范围内接收到
- 每个进程有一个本地时钟,与绝对时钟的偏移率在一个已知的范围内
相对而言,异步分布式系统,对进程执行速度、消息传递延迟、时钟漂移率都没有限制。
事件排序:缺乏精确的时钟,系统的执行按照事件的先后顺序。
Pepperland 协定:
逻辑时间:给每一个事件赋予一个与其逻辑顺序相对应的数字。
2.4.2 故障模型
可以分为进程故障和通信信道故障
遗漏故障:进程或者通信信道无法完成动作。
- 进程遗漏故障。主要指进程崩溃。同步系统可以依赖超时来检测,异步系统检测较困难。
- 通信遗漏故障。
- 发送遗漏故障。进程和外发消息缓冲区之间的消息丢失。
- 接收遗漏故障。在接收消息缓冲区和接收进程之间的消息丢失。
- 通道遗漏故障。在两者之间的消息丢失。
随机故障:描述可能出现的最坏的故障。
时序故障:适用于同步分布式系统。(大多数通用的操作系统如UNIX不能满足实时约束?)
故障屏蔽:一个服务可以通过隐蔽故障或者将故障转化为一个更能接受的故障类型类屏蔽故障。 一对一通信的可靠性:
2.4.3 安全模型
通过保证进程和用于进程交互的通道的安全以及保护所封装的对象免遭未授权访问可实现分布式系统的安全。
对进程的威胁:无法判断服务器和客户端的身份。 对通信信道的威胁:改变发送的消息等。