计算机领域经典著作,被誉为是衡量所有其他分布式系统教材的标准,已被爱丁堡大学、伊利诺伊大学、卡内基-梅隆大学、南加州大学、得克萨斯A&M大学、多伦多大学、罗切斯特理工学院、北京大学等名校采纳为高级操作系统、计算机网络、分布式系统课程的教材。华章从第3版就开始引进这本《分布式系统:概念与设计(原书第5版)》,每个版本翻译版印量约为7000册,影印版约为5000册。虽然由于属于高级课程,销量有局限性,但本书在高等院校的师生和研究人员中具有很高的知名度,对于华章教育品牌也具有较大的支撑作用,所以确定继续做这本教材。
《分布式系统:概念与设计(原书第5版)》旨在全面介绍互联网及其他常用分布式系统的原理、体系结构、算法和设计,内容涵盖分布式系统的相关概念、安全、数据复制、组通信、分布式文件系统、分布式事务、分布式系统设计等,以及相关的前沿主题,包括Web服务、网格、移动系统和无处不在系统等。
第1章 分布式系统的特征
第1章 分布式系统的特征第1章Distributed Systems:Concepts and Design,Fifth Edition分布式系统的特征第1章 分布式系统的特征分布式系统是其组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统。该定义引出了分布式系统的下列重要特征:组件的并发性、缺乏全局时钟、组件故障的独立性。
我们看一下现代分布式系统的几个例子,包括Web搜索、多人在线游戏和金融交易系统,也考察今天推动分布式系统发展的关键趋势:现代网络的泛在特性,移动和无处不在计算的出现,分布式多媒体系统不断增加的重要性,以及把分布式系统看成一种实用系统的趋势。接着本章强调资源共享是构造分布式系统的主要动机。资源可以被服务器管理,由客户访问,或者它们被封装成对象,由其他客户对象访问。
构造分布式系统的挑战是处理其组件的异构性、开放性(允许增加或替换组件)、安全性、可伸缩性(用户的负载或数量增加时能正常运行的能力)、故障处理、组件的并发性、透明性和提供服务质量的问题。最后,以Web作为一个大规模分布式系统的例子进行了讨论,并介绍了它的主要特征。
1.1 简介
计算机网络无处不在。互联网也是其中之一,因为它是由许多种网络组成的。移动电话网、协作网、企业网、校园网、家庭网、车内网,所有这些,既可单独使用,又可相互结合,它们具有相同的本质特征,这些特征使得它们可以放在分布式系统的主题下来研究。本书旨在解释影响系统设计者和实现者的连网的计算机的特征,给出已有的可帮助完成设计和实现分布式系统任务的主要概念和技术。
我们把分布式系统定义成一个其硬件或软件组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统。这个简单的定义覆盖了所有可有效部署连网计算机的系统。
由一个网络连接的计算机可能在空间上的距离不等。它们可能分布在地球上不同的洲,也可能在同一栋楼或同一个房间里。我们定义的分布式系统有如下显著特征:
并发:在一个计算机网络中,执行并发程序是常见的行为。用户可以在各自的计算机上工作,在必要时共享诸如Web页面或文件之类的资源。系统处理共享资源的能力会随着网络资源(例如,计算机)的增加而提高。在本书的许多地方将描述有效部署这种额外能力的方法。对共享资源的并发执行程序的协调也是一个重要和重复提及的主题。
缺乏全局时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。密切的协作通常取决于对程序动作发生的时间的共识。但是,事实证明,网络上的计算机与时钟同步所达到的准确性是有限的,即没有一个正确时间的全局概念。这是通信仅仅是通过网络发送消息这个事实带来的直接结果。定时问题和它们的解决方案将在第14章描述。
故障独立性:所有的计算机系统都可能出故障,一般由系统设计者负责为可能的故障设计结果。分布式系统可能以新的方式出现故障。网络故障导致网上互连的计算机的隔离,但这并不意味着它们停止运行,事实上,计算机上的程序不能够检测到网络是出现故障还是网络运行得比通常慢。类似的,计算机的故障或系统中程序的异常终止(崩溃),并不能马上使与它通信的其他组件了解。系统的每个组件会单独地出现故障,而其他组件还在运行。分布式系统的这个特征所带来的后果将是贯穿本书的一个反复提及的主题。
……
Distributed Systems:Concepts and Design,Fifth Edition
出版者的话
译者序
前言
第1章 分布式系统的特征
1.1 简介
1.2 分布式系统的例子
1.2.1 Web搜索
1.2.2 大型多人在线游戏
1.2.3 金融交易
1.3 分布式系统的趋势
1.3.1 泛在联网和现代互联网
1.3.2 移动和无处不在计算
1.3.3 分布式多媒体系统
1.3.4 把分布式计算作为一个公共设施
1.4 关注资源共享
1.5 挑战
1.5.1 异构性
1.5.2 开放性
1.5.3 安全性
1.5.4 可伸缩性
1.5.5 故障处理
1.5.6 并发性
1.5.7 透明性
1.5.8 服务质量
1.6 实例研究:万维网
1.7 小结
练习
第2章 系统模型
2.1 简介
2.2 物理模型
2.3 体系结构模型
2.3.1 体系结构元素
2.3.2 体系结构模式
2.3.3 相关的中间件解决方案
2.4 基础模型
2.4.1 交互模型
2.4.2 故障模型
2.4.3 安全模型
2.5 小结
练习
第3章 网络和网际互连
3.1 简介
3.2 网络类型
3.3 网络原理
3.3.1 数据包的传输
3.3.2 数据流
3.3.3 交换模式
3.3.4 协议
3.3.5 路由
3.3.6 拥塞控制
3.3.7 网际互连
3.4 互联网协议
3.4.1 IP寻址
3.4.2 IP协议
3.4.3 IP路由
3.4.4 IPv
3.4.5 移动IP
3.4.6 TCP和UDP
3.4.7 域名
3.4.8 防火墙
3.5 实例研究:以太网、WiFi、蓝牙
3.5.1 以太网
3.5.2 IEEE 802.11无线LAN
3.5.3 IEEE 802.15.1蓝牙无线PAN
3.6 小结
练习
第4章 进程间通信
4.1 简介
4.2 互联网协议的API
4.2.1 进程间通信的特征
4.2.2 套接字
4.2.3 UDP数据报通信
4.2.4 TCP流通信
4.3 外部数据表示和编码
4.3.1 CORBA的公共数据表示
4.3.2 Java对象序列化
4.3.3 可扩展标记语言
4.3.4 远程对象引用
4.4 组播通信
4.4.1 IP组播--组播通信的实现
4.4.2 组播的可靠性和排序
4.5 网络虚拟化:覆盖网络
4.5.1 覆盖网络
4.5.2 Skype:一个覆盖网络的例子
4.6 实例研究:MPI
4.7 小结
练习
第5章 远程调用
5.1 简介
5.2 请求-应答协议
5.3 远程过程调用
5.3.1 RPC的设计问题
5.3.2 RPC的实现
5.3.3 实例研究:Sun RPC
5.4 远程方法调用
5.4.1 RMI的设计问题
5.4.2 RMI的实现
5.4.3 分布式无用单元收集
5.5 实例研究:Java RMI
5.5.1 创建客户和服务器程序
5.5.2 Java RMI的设计和实现
5.6 小结
练习
第6章 间接通信
6.1 简介
6.2 组通信
6.2.1 编程模型
6.2.2 实现问题
6.2.3 实例研究:JGroups工具箱
6.3 发布-订阅系统
6.3.1 编程模型
6.3.2 实现问题
6.3.3 发布-订阅系统的例子
6.4 消息队列
6.4.1 编程模型
6.4.2 实现问题
6.4.3 实例研究:Java消息服务
6.5 共享内存的方式
6.5.1 分布式共享内存
6.5.2 元组空间通信
6.6 小结
练习
第7章 操作系统支持
7.1 简介
7.2 操作系统层
7.3 保护
7.4 进程和线程
7.4.1 地址空间
7.4.2 新进程的生成
7.4.3 线程
7.5 通信和调用
7.5.1 调用性能
7.5.2 异步操作
7.6 操作系统的体系结构
7.7 操作系统层的虚拟化
7.7.1 系统虚拟化
7.7.2 实例研究:系统虚拟化的Xen方法
7.8 小结
练习
第8章 分布式对象和组件
8.1 简介
8.2 分布式对象
8.3 实例研究:CORBA
8.3.1 CORBA RMI
8.3.2 CORBA的体系结构
8.3.3 CORBA远程对象引用
8.3.4 CORBA服务
8.3.5 CORBA客户和服务器实例
8.4 从对象到组件
8.5 实例研究:企业JavaBeans和Fractal
8.5.1 企业JavaBeans
8.5.2 Fractal
8.6 小结
练习
第9章 Web服务
9.1 简介
9.2 Web服务
9.2.1 SOAP
9.2.2 Web服务与分布式对象模型的比较
9.2.3 在Java中使用SOAP
9.2.4 Web服务和CORBA的比较
9.3 Web服务的服务描述和接口定义语言
9.4 Web服务使用的目录服务
9.5 XML安全性
9.6 Web服务的协作
9.7 Web服务的应用
9.7.1 面向服务的体系结构
9.7.2 网格
9.7.3 云计算
9.8 小结
练习
第10章 对等系统
10.1 简介
10.2 Napster及其遗留系统
10.3 对等中间件
10.4 路由覆盖
10.5 路由覆盖实例研究:Pastry和Tapestry
10.5.1 Pastry
10.5.2 Tapestry
10.5.3 从结构化对等方法到非结构化对等方法
10.6 应用实例研究:Squirrel、OceanStore和Ivy
10.6.1 Squirrel Web缓存
10.6.2 OceanStore文件存储
10.6.3 Ivy文件系统
10.7 小结
练习
第11章 安全性
11.1 简介
11.1.1 威胁和攻击
11.1.2 保护电子事务
11.1.3 设计安全系统
11.2 安全技术概述
11.2.1 密码学
11.2.2 密码学的应用
11.2.3 证书
11.2.4 访问控制
11.2.5 凭证
11.2.6 防火墙
11.3 密码算法
11.3.1 密钥(对称)算法
11.3.2 公钥(不对称)算法
11.3.3 混合密码协议
11.4 数字签名
11.4.1 公钥数字签名
11.4.2 密钥数字签名--MAC
11.4.3 安全摘要函数
11.4.4 证书标准和证书权威机构
11.5 密码实用学
11.5.1 密码算法的性能
11.5.2 密码学的应用和政治障碍
11.6 实例研究:Needham-Schroeder、Kerberos、TLS和802.11 WiFi
11.6.1 Needham-Schroeder认证协议
11.6.2 Kerberos
11.6.3 使用安全套接字确保电子交易安全
11.6.4 IEEE 802.11 WiFi安全设计中最初的缺陷
11.7 小结
练习
第12章 分布式文件系统
12.1 简介
12.1.1 文件系统的特点
12.1.2 分布式文件系统的需求
12.1.3 实例研究
12.2 文件服务体系结构
12.3 实例研究:SUN网络文件系统
12.4 实例研究:Andrew文件系统
12.4.1 实现
12.4.2 缓存的一致性
12.4.3 其他方面
12.5 最新进展
12.6 小结
练习
第13章 名字服务
13.1 简介
13.2 名字服务和域名系统
13.2.1 名字空间
13.2.2 名字解析
13.2.3 域名系统
13.3 目录服务
13.4 实例研究:全局名字服务
13.5 实例研究:X.500目录服务
13.6 小结
练习
第14章 时间和全局状态
14.1 简介
14.2 时钟、事件和进程状态
14.3 同步物理时钟
14.3.1 同步系统中的同步
14.3.2 同步时钟的Cristian方法
14.3.3 Berkeley算法
14.3.4 网络时间协议
14.4 逻辑时间和逻辑时钟
14.5 全局状态
14.5.1 全局状态和一致割集
14.5.2 全局状态谓词、稳定性、安全性和活性
14.5.3 Chandy和Lamport的“快照”算法
14.6 分布式调试
14.6.1 收集状态
14.6.2 观察一致的全局状态
14.6.3 判定可能的
14.6.4 判定明确的
14.6.5 在同步系统中判定可能的和明确的
14.7 小结
练习
第15章 协调和协定
15.1 简介
15.2 分布式互斥
15.3 选举
15.4 组通信中的协调与协定
15.4.1 基本组播
15.4.2 可靠组播
15.4.3 有序组播
15.5 共识和相关问题
15.5.1 系统模型和问题定义
15.5.2 同步系统中的共识问题
15.5.3 同步系统中的拜占庭将军问题
15.5.4 异步系统的不可能性
15.6 小结
练习
第16章 事务和并发控制
16.1 简介
16.1.1 简单的同步机制(无事务)
16.1.2 事务的故障模型
16.2 事务
16.2.1 并发控制
16.2.2 事务放弃时的恢复
16.3 嵌套事务
16.4 锁
16.4.1 死锁
16.4.2 在加锁机制中增加并发度
16.5 乐观并发控制
16.6 时间戳排序
16.7 并发控制方法的比较
16.8 小结
练习
第17章 分布式事务
17.1 简介
17.2 平面分布式事务和嵌套分布式事务
17.3 原子提交协议
17.3.1 两阶段提交协议
17.3.2 嵌套事务的两阶段提交协议
17.4 分布式事务的并发控制
17.4.1 加锁
17.4.2 时间戳并发控制
17.4.3 乐观并发控制
17.5 分布式死锁
17.6 事务恢复
17.6.1 日志
17.6.2 影子版本
17.6.3 为何恢复文件需要事务状态和意图列表
17.6.4 两阶段提交协议的恢复
17.7 小结
练习
第18章 复制
18.1 简介
18.2 系统模型和组通信的作用
18.2.1 系统模型
18.2.2 组通信的作用
18.3 容错服务
18.3.1 被动(主备份)复制
18.3.2 主动复制
18.4 高可用服务的实例研究:闲聊体系结构、Bayou和Coda
18.4.1 闲聊体系结构
18.4.2 Bayou系统和操作变换方法
18.4.3 Coda文件系统
18.5 复制数据上的事务
18.5.1 复制事务的体系结构
18.5.2 可用拷贝复制
18.5.3 网络分区
18.5.4 带验证的可用拷贝
18.5.5 法定数共识方法
18.5.6 虚拟分区算法
18.6 小结
练习
第19章 移动和无处不在计算
19.1 简介
19.2 关联
19.2.1 发现服务
19.2.2 物理关联
19.2.3 小结和前景
19.3 互操作
19.3.1 易变系统的面向数据编程
19.3.2 间接关联和软状态
19.3.3 小结和前景
19.4 感知和上下文敏感
19.4.1 传感器
19.4.2 感知体系结构
19.4.3 位置感知
19.4.4 小结和前景
19.5 安全性和私密性
19.5.1 背景
19.5.2 一些解决办法
19.5.3 小结和前景
19.6 自适应
19.6.1 内容的上下文敏感自适应
19.6.2 适应变化的系统资源
19.6.3 小结和前景
19.7 实例研究:Cooltown
19.7.1 Web存在
19.7.2 物理超链接
19.7.3 互操作和eSquirt协议
19.7.4 小结和前景
19.8 小结
练习
第20章 分布式多媒体系统
20.1 简介
20.2 多媒体数据的特征
20.3 服务质量管理
20.3.1 服务质量协商
20.3.2 许可控制
20.4 资源管理
20.5 流自适应
20.5.1 调整
20.5.2 过滤
20.6 实例研究:Tiger视频文件服务器、BitTorrent和端系统多播
20.6.1 Tiger视频文件服务器
20.6.2 BitTorrent
20.6.3 端系统多播
20.7 小结
练习
第21章 分布式系统设计:Google实例研究
21.1 简介
21.2 实例研究简介:Google
21.3 总体结构和设计理念
21.3.1 物理模型
21.3.2 总的系统体系结构
21.4 底层通信范型
21.4.1 远程调用
21.4.2 发布-订阅
21.4.3 通信的关键设计选择总结
21.5 数据存储和协调服务
21.5.1 Google文件系统
21.5.2 Chubby
21.5.3 Bigtable
21.5.4 关键设计选择总结
21.6 分布式计算服务
21.6.1 MapReduce
21.6.2 Sawzall
21.6.3 关键设计选择总结
21.7 小结
练习
参考文献
索引