1.7 小结
分布式系统无处不在。互联网使得全世界用户无论走到哪里都能访问互联网上的服务。每个组织管理一个企业内部网,并通过该企业内部网为本地用户提供本地服务和互联网服务,也为互联网上的其他用户提供服务。小型的分布式系统可由移动计算机和其他可连接到无线网络的小型计算设备构造。
资源共享是构造分布式系统的主要因素。打印机、文件、Web页面或数据库记录这样的资源均由相应类型的服务器管理。例如,Web服务器管理Web页面和其他Web资源。资源由客户访问,例如,Web服务器的客户通常称为浏览器。
分布式系统的构造面临着许多挑战:
- 异构性:分布式系统必须由多种不同的网络、操作系统、计算机硬件和编程语言构成。互联网通信协议屏蔽了网络的差异,中间件能处理其他的差异。
开放性:分布式系统应该是可扩展的——第一步是发布组件的接口,但由不同程序员编写的组件的集成是一个真正的挑战。 - 安全性:加密用于为共享资源提供充分的保护,在网络上用消息传送敏感信息时,可以通过加密的手段来保护敏感信息。服务拒绝攻击仍然是一个问题。
- 可伸缩性:就必须要增加的资源而言,如果分布式系统增加一个用户的开销是一个常量,那么这个分布式系统是可伸缩的。用于访问共享数据的算法应该避免性能瓶颈,数据应该组织成层次化的结构以获得最好的访问时间。频繁访问的数据应能被复制。
故障处理:任一进程、计算机或网络都可能独立地出现故障。因此每个组件需要清楚其所依赖的组件可能出现故障的方式,组件应当被设计成能适当地处理每个故障。 - 并发性:分布式系统中多个用户的存在是对资源产生并发请求的根源。每个资源必须被设计成在并发环境中是安全的。
- 透明性:此特性的目的是为了保证分布的某些方面对应用程序员不可见,这样应用程序员只需要关心特定应用的设计问题。例如,程序员不需要关心特定应用的位置或操作如何被其他组件访问等细节问题,或它是否被复制或迁移。甚至网络和进程故障也可以以异常的形式(但异常必须被处理)呈现给应用程序员。
- 服务质量:在分布式系统中仅提供对服务的访问是不够的。特别是,提供与服务访问相关的质量保障也是重要的。这种质量的例子包括与性能、安全性和可靠性相关的参数。