序言

 

     起源于七十年代中期的分布式系统已经历了近三十年的开发与研究,从简单的多机文件共享到广义的资源共享,从单一的计算模型到多种多层次的计算模型,从封闭的局部网络到开放的全球网络,分布式系统已演化成近代计算机系统的基本组织结构,支持非常广泛的工业、商业应用。分布式系统自身也从学术界走入商业化,日益丰富完善,日益规范成熟。

      概言之,分布式系统是一组协同工作的计算机。这组计算机被网络连接,用通信的手段进行协调同步,用合理的算法调度分配资源,从而达到高效可靠的计算。当然,分布式系统是一个泛指词。如果细分的话,我们可以有不同种类不同功能的分布式系统。例如,以分布计算为主的系统一般采用紧密耦合计算机系统,或者是共享内存的多处理器,或者是用高速网络相连的一组同构计算机。而另一方面,以网络服务为主的系统则面临多种多样的计算设备。这些设备可以是计算机、无线电话、传感器、乃至家用电器。它们可以形成一个局域网,也可以开放到一个广域网。此外,现代分布式系统一般是在网络操作系统外层增加一层软件,亦称为“中间件”。用中间件实现的分布式系统易于标准化,使得不同厂商生产的软/硬件在用户面前呈现出友好的、一致的界面。

      与单机系统相比,分布式系统具有几个显著的特征:共享性,开放性,并发性,可调节性,容错性以及透明性。资源共享是分布式系统的首要特征。资源可以是数据,可以是软件,也可以是硬件。例如,在客户/服务器模型里,共享的资源就是服务器所提供的各种服务。开放式的分布式系统遵循一套标准的协议和界面为用户提供服务。其主要优点是灵活性,在不影响现存服务的前提下,新的共享资源可被安全地扩充到系统中。顾名思义,并发性指的是在同一时间处理多个任务。其优点在于提高效率。可调节性的含义很广,不仅一个分布式系统的功能可调节,其网络规模亦可调节,管理结构也可调节。容错性关系到一个分布式系统能否可靠地运行。当事故或异常事件发生时,具备容错能力的系统可以自动排除故障并恢复运行。为了方便用户使用,一个分布式系统要尽量透明,要尽可能地隐藏系统的内部细节,使之作为一个整体展示在用户面前,这样才能易学易用易管理。

      分布式系统并不是一种抽象的概念。要搞清楚分布式系统的原理及设计,我们不仅要探讨相关的理论基础,也要通过算法设计与分析来理解系统实现中的具体问题。在了解了分布式系统的目标和基本模型的基础下,我们将引入分布式系统的构成模块,重点介绍现存的解决方案以及存在的问题。具体的构成模块包括网络、通信、并发计算、域名服务、同步与互斥、时间与协作、分布式事务处理、复制技术、容错机制、以及安全机制。通过学习,学生们应能掌握设计和实现分布式系统的基本知识和技能,并能把学到的知识运用到实践中。此外,本书最后一章还简要地介绍了分布式系统研究领域里的新进展,使得学生们在掌握基本原理的同时,进一步了解分布式系统研究的新领域和新方向。

      本书试图采用浅显易懂的语言描述分布式系统的原理与实现,力图减少对读者知识背景的要求。但是,由于本书之内容颇为广泛,涉及程序设计、操作系统、数据库、网络通讯、安全保密以及算法复杂性等等,我们希望读者具备这些领域的基础知识。本书按照36 (课堂教学) 学时设计,可用作研究生或者本科高年级教材。根据学生的不同基础,可适当进行删裁。此外,本书每章之后都附有一组练习题,题目可分为三类:(1)基本概念复习题、(2) 快速思考题、(3) 作业题。

南京大学孙钟秀教授,金志权教授,茅兵教授在百忙之中抽时间阅读本书的初稿,并对书中内容和术语提出了许多有益的建议;科学出版社的鞠丽娜老师以及南京大学的徐洁磐教授,郑国梁教授在本书出版过程中给予了热情的帮助,作者由衷地向他们表示感谢。

     

 

 

作者简介:

 

李西宁教授目前任教于加拿大安大略省圭尔夫大学计算与信息科学系。1980年至1982年在南京大学计算机系师从孙钟秀教授攻读硕士,研制开发了国内第一个分布式系统,并作为科研组成员,荣获中国国家科技进步二等奖。1984年至1989年在加拿大卡尔加里大学计算机系师从B. UNGER教授攻读博士,致力于分布式系统以及分布式程序设计语言的研究。1989年到2000年任教于加拿大莱克亨德大学,2000年至今任教于加拿大圭尔夫大学。主要教学为分布式系统,面向对象的程序设计及方法学,数据结构,算法设计与分析。主要科研方向为分布式程序设计语言, 分布式系统模拟,逻辑虚拟机,移动软件代理系统等,在杂志和国际会议上发表过数十篇科研论文。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录

          序言

          第一章 引论

     1.1   分布式系统之定义

      1.1.1 历史背景

      1.2.2 分布式系统之应用

      1.2   分布式系统的显著特征

      1.2.1 基本设计目标

      1.2.2 用户要求

          第二章 分布式系统概念和结构

     2.1   硬件概念

      2.1.1 基于总线的多机系统

      2.1.2 基于交叉开关的多机系统

      2.1.3 基于网络的多机系统

      2.2   软件概念

      2.2.1 分布式操作系统

      2.2.2 网络操作系统

      2.2.3 中间件系统

      2.3   系统平台模型

      2.3.1 客户/服务器模型

      2.3.2 浏览器/服务器模型

      2.3.3 模型界面与多级结构

          第三章 网络与通信

     3.1   计算机网络

      3.1.1 网络技术

      3.1.2 网络协议

      3.2   通信模型

      3.2.1 消息传送式通信

      3.2.2 请求-回应式通信(远程过程调用)

          第四章 并发计算

     4.1   并发计算起源

      4.1.1 进程

      4.1.2 线程

      4.1.3 并发计算中的同步与互斥

      4.2   客户/服务器并发系统

      4.2.1 客户软件

      4.2.2 服务器软件设计

      4.3   软件代理

      4.3.1 软件代理技术

      4.3.2 移动软件代理

      4.3.3 软件代理通信语言

      4.4   程序迁移

      4.4.1 程序迁移模型

      4.4.2 程序迁移中的资源管理

          第五章 命名系统及对移动实体的定位

     5.1   命名问题

      5.1.1 命名方式

      5.1.2 名字的识别与解析

      5.1.3 命名空间和域名系统

      5.2   对移动实体的定位

      5.2.1 移动IP技术

      5.2.2 移动代理的定位方法

          第六章 分布式系统的同步与互斥

     6.1   时间与同步

      6.1.1 物理时钟

      6.1.2 物理时钟同步算法

      6.1.3 逻辑时钟

      6.1.4 逻辑时钟同步算法

6.2   分布式协调机制

      6.2.1 全局状态

      6.2.2 选举算法

      6.3   分布式互斥算法

      6.3.1 基于逻辑时钟的算法

      6.3.3 基于令牌的算法

          第七章 分布式事务处理

     7.1   基本概念

      7.1.1 事务处理模型

      7.1.2 事务处理分类

      7.2   事务处理的实现

      7.2.1 并发控制

      7.2.3 原子提交协议

7.2.2 分布式死锁与检测

第八章 复制及复制一致性

     8.1   复制之概念

      8.1.1 动机和目的

      8.1.2 复制技术的基本结构

      8.2   以数据为主的一致性模型

      8.2.1基于读写次序的一致性模型

      8.2.2基于同步操作的一致性模型

      8.3   以客户为主的一致性模型

      8.3.1 单调读/写模型

      8.3.2 混合读/写模型

      8.4   一致性协议

      8.4.1 分布式更新算法

      8.4.2 复制一致性协议

          第九章 容错机制

     9.1   基本概念和模型

      9.1.1 故障分类

      9.1.2 硬件容错机制

      9.2   进程容错机制

      9.2.1 基本设计思想

      9.2.2 故障屏蔽协议

      9.3   通信可靠性

      9.3.1 点对点通信

      9.3.2 组播通信

      9.4   恢复技术

      9.4.1 检查点技术

      9.4.2 日志技术

          第十章 安全机制

     10.1   安全性概念

      10.1.1 威胁及安全对策

      10.1.2 安全机制的基本实现方案

10.2   加密技术

10.2.1 对称加密

10.2.2 非对称加密

      10.2.3 散列函数加密

      10.3   认证与访问控制

      10.3.1 认证方法

      10.3.2 信件的完整性和可信度

      10.3.3 访问控制

    

          第十 分布式系统之发展

     11.1   P2P计算

      11.1.1 P2P结构模型

      11.1.2 P2P系统分类及实现

11.2   网格计算

11.2.1 网格计算模型

11.2.2 网格计算的实例:Globus项目

11.3   Web服务

      11.3.1 Web服务协议

      11.3.2 设计Web服务

 

参考文献

          英汉术语对照表