《分布式系统原理与范型》是2008年由清华大学出版社出版的图书,该书作者是Andrew S.Tanenbaum、Maartenvan Steen,译者是杨剑峰、常晓波、李敏。
本书是Tanenbaum先生对所著的《分布式操作系统》的升级更新,是分布式系统的权威教材。全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了一些实际的分布式系统:基于对象的分布式系统、分布式文件系统、基于文档的分布式系统以及基于协作的分布式系统,介绍了一些实际系统的设计思想和实现技术。全书结构清晰,内容全面经典,系统性与先进性并茂。
本书适用对象广泛。对于学习分布式计算机的本科生和研究生,本书是优选教材。对于从事分布式计算研究和工程应用的科技人员和工程技术人员,本书也是一本优秀的基础性读物。
目录
- 第1章 概述1
- 1.1 分布式系统的定义1
- 1.2 目标3
- 1.2.1 使资源可访问3
- 1.2.2 透明性4
- 1.2.3 开放性6
- 1.2.4 可扩展性7
- 1.3 分布式系统的类型12
- 1.3.1 分布式计算系统12
- 1.3.2 分布式信息系统14
- 1.3.3 分布式普适系统17
- 本章小结21
- 习题22第2章 体系结构23
- 2.1 体系结构的样式23
- 2.2 系统体系结构25
- 2.2.1 集中式体系结构25
- 2.2.2 非集中式体系结构30
- 2.2.3 混合体系结构36
- 2.3 体系结构与中间件38
- 2.3.1 中断器38
- 2.3.2 自适应软件的常见方法40
- 2.3.3 讨论40
- 2.4 分布式系统的自我管理41
- 2.4.1 反馈控制模型42
- 2.4.2 示例: 用Astrolabe监视系统43
- 2.4.3 示例: Globule中的差分复制策略44
- 2.4.4 示例: Jade的自动组件修复管理45
- 本章小结46
- 习题47第3章 进程48
- 3.1 线程48
- 3.1.1 线程简介49
- 3.1.2 分布式系统中的线程52
- 3.2 虚拟化55
- 3.2.1 虚拟化在分布式系统中的作用55
- 3.2.2 虚拟机体系结构56
- 3.3 客户57
- 3.3.1 网络连接的用户接口58
- 3.3.2 客户端软件与分布透明性61
- 3.4 服务器62
- 3.4.1 常见的设计问题62
- 3.4.2 服务器集群65
- 3.4.3 管理服务器集群69
- 3.5 代码迁移72
- 3.5.1 代码迁移方案72
- 3.5.2 迁移与本地资源75
- 3.5.3 异构系统中的代码迁移77
- 本章小结79
- 习题80分布式系统原理与范型(第2版)目录第4章 通信81
- 4.1 基础知识81
- 4.1.1 分层协议82
- 4.1.2 通信类型87
- 4.2 远程过程调用89
- 4.2.1 基本的RPC操作89
- 4.2.2 参数传递92
- 4.2.3 异步RPC95
- 4.2.4 示例: DCE RPC96
- 4.3 面向消息的通信101
- 4.3.1 面向消息的瞬时通信101
- 4.3.2 面向消息的持久通信104
- 4.3.3 示例: IBM WebSphere消息队列系统109
- 4.4 面向流的通信113
- 4.4.1 为连续媒体提供支持114
- 4.4.2 流与服务质量115
- 4.4.3 流同步117
- 4.5 多播通信120
- 4.5.1 应用层多播120
- 4.5.2 基于gossip的数据通信123
- 本章小结126
- 习题127第5章 命名系统129
- 5.1 名称、标识符和地址129
- 5.2 无层次命名131
- 5.2.1 简单方法131
- 5.2.2 基于宿主位置的方法134
- 5.2.3 分布式散列表135
- 5.2.4 分层方法138
- 5.3 结构化命名141
- 5.3.1 名称空间141
- 5.3.2 名称解析143
- 5.3.3 名称空间的实现146
- 5.3.4 示例: 域名系统151
- 5.4 基于属性的命名157
- 5.4.1 目录服务157
- 5.4.2 分层实现: LDAP158
- 5.4.3 非集中式实现161
- 本章小结164
- 习题165第6章 同步化167
- 6.1 时钟同步167
- 6.1.1 物理时钟168
- 6.1.2 全球定位系统171
- 6.1.3 时钟同步算法172
- 6.2 逻辑时钟176
- 6.2.1 Lamport逻辑时钟176
- 6.2.2 向量时钟179
- 6.3 互斥182
- 6.3.1 概述182
- 6.3.2 集中式算法182
- 6.3.3 非集中式算法183
- 6.3.4 分布式算法184
- 6.3.5 令牌环算法186
- 6.3.6 四种算法的比较187
- 6.4 结点的全局定位188
- 6.5 选举算法190
- 6.5.1 传统的选举算法190
- 6.5.2 无线系统环境中的选举算法192
- 6.5.3 大型系统中的选举算法193
- 本章小结195
- 习题196第7章 一致性和复制198
- 7.1 概述198
- 7.1.1 进行复制的原因198
- 7.1.2 作为扩展技术的复制199
- 7.2 以数据为中心的一致性模型200
- 7.2.1 持续一致性201
- 7.2.2 一致的操作顺序204
- 7.3 以客户为中心的一致性模型209
- 7.3.1 最终一致性209
- 7.3.2 单调读211
- 7.3.3 单调写212
- 7.3.4 读写一致性213
- 7.3.5 写读一致性214
- 7.4 复制管理214
- 7.4.1 副本服务器的放置215
- 7.4.2 内容复制与放置216
- 7.4.3 内容分发219
- 7.5 一致性协议222
- 7.5.1 持续一致性222
- 7.5.2 基于主备份的协议223
- 7.5.3 复制的写协议225
- 7.5.4 高速缓存相关性协议227
- 7.5.5 实现以客户为中心的一致性228
- 本章小结230
- 习题231第8章 容错性233
- 8.1 容错性概述233
- 8.1.1 基本概念233
- 8.1.2 故障模式235
- 8.1.3 使用冗余掩盖故障237
- 8.2 进程恢复238
- 8.2.1 设计问题238
- 8.2.2 故障掩盖和复制240
- 8.2.3 故障系统的协定240
- 8.2.4 故障检测243
- 8.3 可靠的客户-服务器通信244
- 8.3.1 点对点通信244
- 8.3.2 失败时的RPC语义244
- 8.4 可靠的组通信248
- 8.4.1 基本的可靠多播方法249
- 8.4.2 可靠多播中的可扩展性249
- 8.4.3 原子多播252
- 8.5 分布式提交257
- 8.5.1 两阶段提交257
- 8.5.2 三阶段提交262
- 8.6 恢复263
- 8.6.1 概述263
- 8.6.2 检查点266
- 8.6.3 消息日志268
- 8.6.4 面向恢复的计算270
- 本章小结271
- 习题271第9章 安全性273
- 9.1 安全性概述273
- 9.1.1 安全威胁、策略和机制273
- 9.1.2 设计问题277
- 9.1.3 加密281
- 9.2 安全通道287
- 9.2.1 身份认证287
- 9.2.2 消息的完整性和机密性293
- 9.2.3 安全组通信295
- 9.2.4 示例: Kerberos298
- 9.3 访问控制299
- 9.3.1 访问控制中的常见问题299
- 9.3.2 防火墙302
- 9.3.3 安全的移动代码304
- 9.3.4 拒绝服务309
- 9.4 安全管理310
- 9.4.1 密钥管理310
- 9.4.2 安全组管理313
- 9.4.3 授权管理314
- 本章小结318
- 习题319第10章 基于对象的分布式系统320
- 10.1 体系结构320
- 10.1.1 分布式对象320
- 10.1.2 示例: 企业级Java Bean322
- 10.1.3 示例: Globe分布式共享对象324
- 10.2 进程325
- 10.2.1 对象服务器325
- 10.2.2 示例: Ice运行时系统327
- 10.3 通信329
- 10.3.1 把客户绑定到对象上329
- 10.3.2 静态远程方法调用与动态远程方法调用330
- 10.3.3 参数传递331
- 10.3.4 示例: Java RMI332
- 10.3.5 基于对象的消息传递334
- 10.4 命名337
- 10.4.1 CORBA对象引用337
- 10.4.2 Globe对象引用338
- 10.5 同步340
- 10.6 一致性与复制341
- 10.6.1 入口一致性341
- 10.6.2 复制的调用343
- 10.7 容错性344
- 10.7.1 示例: CORBA的容错性345
- 10.7.2 示例: Java的容错性346
- 10.8 安全性348
- 10.8.1 示例: Globe348
- 10.8.2 远程对象的安全性351
- 本章小结352
- 习题353第11章 分布式文件系统354
- 11.1 体系结构354
- 11.1.1 客户-服务器体系结构354
- 11.1.2 基于群集的分布式文件系统358
- 11.1.3 对称式体系结构360
- 11.2 进程361
- 11.3 通信362
- 11.3.1 NFS中的RPC362
- 11.3.2 RPC2子系统363
- 11.3.3 Plan 9中面向文件的通信365
- 11.4 命名366
- 11.4.1 NFS中的命名366
- 11.4.2 构造全局名称空间370
- 11.5 同步371
- 11.5.1 文件共享的语义371
- 11.5.2 文件锁定373
- 11.5.3 在Coda中共享文件375
- 11.6 一致性和复制376
- 11.6.1 客户端缓存376
- 11.6.2 服务器端复制379
- 11.6.3 对等文件系统中的复制381
- 11.6.4 网格系统中的文件复制382
- 11.7 容错性383
- 11.7.1 处理Byzantine故障383
- 11.7.2 对等系统中的高度可用性385
- 11.8 安全性386
- 11.8.1 NFS中的安全性386
- 11.8.2 分散式身份认证388
- 11.8.3 安全的对等文件共享系统391
- 本章小结393
- 习题394第12章 基于Web的分布式系统395
- 12.1 体系结构395
- 12.1.1 传统的基于Web的系统396
- 12.1.2 Web服务399
- 12.2 进程402
- 12.2.1 客户402
- 12.2.2 Apache Web服务器403
- 12.2.3 Web服务器群集405
- 12.3 通信406
- 12.3.1 超文本传输协议407
- 12.3.2 简单对象访问协议411
- 12.4 命名412
- 12.5 同步414
- 12.6 一致性与复制414
- 12.6.1 Web代理缓存415
- 12.6.2 Web宿主系统的复制417
- 12.6.3 Web应用程序的复制421
- 12.7 容错性423
- 12.8 安全性424
- 本章小结425
- 习题426第13章 基于协作的分布式系统428
- 13.1 协作模型介绍428
- 13.2 体系结构430
- 13.2.1 一般方法430
- 13.2.2 传统的体系结构431
- 13.2.3 对等体系结构434
- 13.2.4 移动性和协作436
- 13.3 进程437
- 13.4 通信437
- 13.4.1 基于内容的路由437
- 13.4.2 支持复合订阅439
- 13.5 命名439
- 13.5.1 描述复合事件440
- 13.5.2 匹配事件与订阅441
- 13.6 同步442
- 13.7 一致性和复制442
- 13.7.1 静态方法442
- 13.7.2 动态复制445
- 13.8 容错性447
- 13.8.1 可靠的发布-订阅通信447
- 13.8.2 共享数据空间中的容错性449
- 13.9 安全性450
- 13.9.1 保密性450
- 13.9.2 安全的共享数据空间452
- 本章小结452
- 习题453第14章 补充读物与参考文献454
- 14.1 进一步阅读的建议454
- 14.1.1 介绍性和综述性的著作454
- 14.1.2 体系结构455
- 14.1.3 进程455
- 14.1.4 通信456
- 14.1.5 命名456
- 14.1.6 同步化457
- 14.1.7 一致性与复制457
- 14.1.8 容错性458
- 14.1.9 安全性458
- 14.1.10 面向对象的分布式系统459
- 14.1.11 分布式文件系统459
- 14.1.12 基于Web的分布式系统460
- 14.1.13 基于协作的分布式系统460
- 14.2 参考文献461