2.4 基础模型
上面的各种系统模型完全不同,但具有一些基本特性。特别是,所有的模型都由若干进程组成,这些进程通过在计算机网络上发送消息而相互通信,所有的模型都共享下列设计需求:实现进程及网络的性能和可靠性特征,确保系统中资源的安全性。本节给出基于基本特性的模型,利用这些模型,我们能更详细地描述系统可能展示的特征、故障和安全风险。
通常,为了理解和推理系统行为的某些方面,一个基础模型应该仅包含我们要考虑的实质性成分。这样一个模型的目的是:
- 显式地表示有关我们正在建模的系统的假设。
- 给定这些假设,就什么是可能的、什么是不可能的给出结论。结论以通用算法或要确保的特性的形式给出。特性成立的保证依赖于逻辑分析和(适当时候的)数学证明。
了解设计依赖什么、不依赖什么,我们就能从中获益。如果在一个特定系统中实现一个设计,这个设计能否运作,61我们只需询问在那个系统中假设是否成立。通过清晰、显式地给出我们的假设,就能利用数学技巧证明系统的特征,这些特征对任何满足假设的系统都成立。最后,通过从细节(如硬件)中抽象系统的基本实体和特性,我们就能阐明对系统的理解。
我们希望在我们的基本模型中提取的分布式系统情况能解决下列问题:
交互:计算在进程中发生,进程通过传递消息交互,并引发进程之间的通信(信息流)和协调(活动的同步和排序)。在分布式系统的分析和设计中,我们特别关注这些交互。交互模型必须反映通信带来的延迟,这些延迟的持续时间会比较长,交互模型必须反映独立进程相互配合的准确性受限于这些延迟,受限于在分布式系统中很难跨所有计算机维护同一时间概念。
故障:只要分布式系统运行的任一计算机上出现故障(包括软件故障)或连接它们的网络出现故障,分布式系统的正确操作就会受到威胁。我们的模型将对这些故障进行定义和分类。这为分析它们潜在效果以及设计能容忍每种类型故障的系统奠定了基础。
安全:分布式系统的模块特性和开放性将其暴露在外部代理和内部代理的攻击下。我们的安全模型对发生这种攻击的形式给出了定义并进行了分类,为分析对系统的威胁以及设计能抵御这些威胁的系统奠定了基础。
为了帮助讨论和推理,我们对本章介绍的模型进行了必要的简化,省略了许多真实系统中的细节。它们与真实系统的关系,以及在模型帮助下揭示的问题环境中的解决方案是本书讨论的主题。