《分布式计算-原理、算法与系统》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:AJAY D.KSHEMKALYANI MUKESH SINGHAL著;余宏亮,张东艳译
  • 出 版 社:高等教育出版社=HIGHER;EDUCATION;PRESS
  • 出版年份:2012
  • ISBN:7040324563
  • 页数:630 页
图书介绍:分布式计算是当今计算机科学与技术领域的一个热点。该书着重对分布式计算的基本原理与算法进行了比较全面的介绍和分析,涵盖了该领域中的核心问题,全书共分为18章:包括绪论、分布式计算的模型、逻辑时间、全局状态与快照记录算法、术语与基本算法、消息排序与组通信、终止检测、基于知识的推理、分布式互斥算法、分布式系统的死锁检测、全局断言检测、分布式共享内存、检查点与回滚恢复、多数同意与协商算法、故障检测、分布式系统的身份鉴定、自稳定及对等计算与覆盖网络等。本书取材得当,表达方法也简洁易懂,是一本较好的研究生课程教材。本书的第1,2,3,5,12,16,18章可以作为本科生分布式系统与算法课的教学内容,其他各章内容作为研究生分布式原理课程的教学内容,对相应课程的开设也很有帮助。也可供相关工程人员参考使用。

第一章 引言 1

1.1 定义 1

1.2 与计算机系统部件的关系 2

1.3 动机 3

1.4 与并行多处理器/多计算机系统的关系 4

1.4.1 并行系统的特性 4

1.4.2 Flynn的分类法 8

1.4.3 耦合、并行、并发及粒度 9

1.5 消息传递系统与共享内存系统的对比 11

1.5.1 在共享内存的系统上仿真消息传递 11

1.5.2 在消息传递系统上仿真共享内存 12

1.6 分布式通信的原语 12

1.6.1 阻塞/非阻塞,同步/异步原语 12

1.6.2 处理器同步性 15

1.6.3 库与标准 15

1.7 同步与异步执行 16

1.7.1 通过同步系统仿真异步系统 17

1.7.2 通过异步系统仿真同步系统 17

1.7.3 仿真 18

1.8 设计主题与挑战 18

1.8.1 从系统角度看分布式系统的挑战 19

1.8.2 分布式计算中的算法挑战 20

1.8.3 分布式计算的应用以及更新的挑战 25

1.9 关于主题的选择与覆盖 27

1.10 本章小结 27

1.11 习题 28

1.12 参考文献说明 29

参考文献 30

第二章 分布式计算模型 33

2.1 分布式程序 33

2.2 分布式运行模型 33

2.3 通信网络模型 36

2.4 分布式系统的全局状态 36

2.4.1 全局状态 37

2.5 分布式计算的运行分割 38

2.6 事件的过去和未来锥面 39

2.7 进程通信模型 40

2.8 本章小结 40

2.9 习题 40

2.10 参考文献说明 41

参考文献 41

第三章 逻辑时间 42

3.1 引言 42

3.2 逻辑时钟框架 43

3.2.1 定义 43

3.2.2 实现逻辑时钟 43

3.3 标量时间 44

3.3.1 定义 44

3.3.2 基本性质 45

3.4 向量时间 46

3.4.1 定义 46

3.4.2 基本性质 47

3.4.3 有关向量时钟的大小 48

3.5 向量时钟的有效实现 49

3.5.1 Singhal-Kshemkalyani的差量技术 50

3.5.2 Fowler-Zwaenepoel的直接依赖技术 51

3.6 Jard-Jourdan的自适应技术 54

3.7 矩阵时间 56

3.7.1 定义 56

3.7.2 基本性质 58

3.8 虚拟时间 58

3.8.1 虚拟时间的定义 58

3.8.2 与Lamport逻辑时钟比较 59

3.8.3 时间变形机制 60

3.8.4 本地控制机制 60

3.8.5 全局控制机制 62

3.9 物理时钟同步:NTP 64

3.9.1 动机 64

3.9.2 定义及术语 65

3.9.3 时钟不准确性 65

3.10 本章小结 67

3.11 习题 68

3.12 参考文献说明 68

参考文献 69

第四章 记录全局状态与快照算法 71

4.1 引言 71

4.2 系统模型和定义 73

4.2.1 系统模型 73

4.2.2 一致性全局状态 74

4.2.3 有关分割的解 74

4.2.4 记录全局快照时遇到的问题 75

4.3 FIFO通道的快照算法 75

4.3.1 Chandy-Lamport算法 75

4.3.2 被记录全局状态的性质 77

4.4 Chandy-Lamport算法的变种 78

4.4.1 Spezialetti-Kearns算法 79

4.4.2 Venkatesan快照增量算法 80

4.4.3 Helary波同步方法 81

4.5 非FIFO通道的快照算法 81

4.5.1 Lai-Yang算法 82

4.5.2 Li等人的算法 83

4.5.3 Mattern算法 84

4.6 因果传递系统快照 85

4.6.1 进程状态记录 85

4.6.2 Acharya-Badrinath算法中的通道状态记录 86

4.6.3 Alagar-Venkatesan算法中的通道状态记录 86

4.7 监控全局状态 88

4.8 一致性全局快照的必要和充分条件 88

4.8.1 Zigzag路径和一致性全局快照 89

4.9 找出分布式计算中的一致性全局快照 92

4.9.1 找出一致性全局快照 92

4.9.2 枚举式一致性快照Manivannan-Netzer-Singhal算法 94

4.9.3 在分布式计算中找出Z路径 96

4.10 本章小结 97

4.11 习题 98

4.12 参考文献说明 99

参考文献 99

第五章 术语和基本算法 102

5.1 拓扑抽象和覆盖 102

5.2 分类和基本概念 104

5.2.1 应用执行和控制算法执行 104

5.2.2 集中式算法和分布式算法 104

5.2.3 对称算法和非对称算法 105

5.2.4 匿名算法 105

5.2.5 一致算法 105

5.2.6 自适应算法 105

5.2.7 确定性执行对非确定性执行 105

5.2.8 执行抑制 106

5.2.9 同步系统和异步系统 107

5.2.10 联机算法与脱机算法 107

5.2.11 故障模型 107

5.2.12 无需等待算法 108

5.2.13 通信通道 109

5.3 复杂度测量和度量 109

5.4 程序结构 110

5.5 图的基本算法 111

5.5.1 使用洪泛法的同步单一启动者生成树算法 111

5.5.2 使用洪泛法的异步单一启动者生成树算法 113

5.5.3 使用洪泛法的异步并发启动者生成树算法 115

5.5.4 异步并发启动者深度优先搜索生成树算法 118

5.5.5 在一棵树上广播和聚播 119

5.5.6 单一源最短路径算法:同步Bellman-Ford 120

5.5.7 距离向量路径选择 121

5.5.8 单一源最短路径算法:异步Bellman-Ford 122

5.5.9 全源最短路径:异步分布式Floyd-Warshall 123

5.5.10 有约束的异步和同步洪泛法(W/O一棵生成树) 126

5.5.11 同步系统的最小权重生成树算法 128

5.5.12 异步系统的最小权重树 132

5.6 同步工具 133

5.7 最大独立集合 138

5.8 连通支配集 140

5.9 紧凑路由表 141

5.10 选领导者 142

5.11 设计分布式图算法的挑战 144

5.12 对象副本问题 144

5.12.1 问题定义 145

5.12.2 算法概要 145

5.12.3 读和写 146

5.12.4 收敛到一个副本模式 146

5.13 本章小结 149

5.14 习题 150

5.15 参考文献说明 152

参考文献 153

第六章 消息序与组通信 156

6.1 消息序的模式 157

6.1.1 异步执行过程 157

6.1.2 先进先出执行过程 157

6.1.3 因果序执行过程 158

6.1.4 同步执行过程 160

6.2 使用同步通信的异步执行过程 161

6.2.1 用同步通信可实现的执行过程 162

6.2.2 序样式的层次体系 165

6.2.3 两种仿真 165

6.3 异步系统中同步程序的序 166

6.3.1 会合 167

6.3.2 双路会合算法 167

6.4 组通信 171

6.5 因果序 171

6.5.1 Raynal-Schiper-Toueg算法[22] 172

6.5.2 Kshemkalyani-Singhai最优算法[20,21] 173

6.6 全序 180

6.6.1 为全序设计的集中式算法 180

6.6.2 三阶段分布式算法 181

6.7 多播相关术语 185

6.8 多播传播树 186

6.9 应用层多播算法的分类 190

6.10 容错组通信的语义 192

6.11 网络层的分布式多播算法 194

6.11.1 泛洪约束的反向路径转发 194

6.11.2 Steiner树 195

6.11.3 多播的成本函数 196

6.11.4 有界延迟的Steiner树 196

6.11.5 核基树 199

6.12 本章小结 199

6.13 习题 200

6.14 参考文献说明 201

参考文献 202

第七章 终止检测 204

7.1 引言 204

7.2 分布式计算的系统模型 205

7.3 基于快照的终止检测算法 205

7.3.1 非形式化描述 206

7.3.2 形式化描述 206

7.3.3 讨论 207

7.4 信用-传递终止检测算法 207

7.4.1 形式化描述 208

7.4.2 算法的正确性 208

7.5 基于生成树的终止检测算法 209

7.5.1 定义 209

7.5.2 一个简单的算法 210

7.5.3 正确的算法 210

7.5.4 一个例子 211

7.5.5 算法性能分析 213

7.6 消息-优化终止检测算法 213

7.6.1 主要思想 213

7.6.2 算法描述 214

7.6.3 算法性能分析 216

7.7 通用分布式计算模型中的终止检测 216

7.7.1 模型定义和假设 217

7.7.2 符号 217

7.7.3 终止定义 217

7.7.4 一个静态终止检测算法 218

7.7.5 一个动态终止检测算法 219

7.8 原子计算模型中的终止检测 221

7.8.1 执行的原子模型 221

7.8.2 一个简单的计数方法 221

7.8.3 四计数器方法 222

7.8.4 怀疑论者算法 223

7.8.5 时间算法 223

7.8.6 向量计数算法 225

7.8.7 信道计数算法 226

7.9 带错分布式系统中的终止检测 229

7.9.1 流检测方案 229

7.9.2 捕获快照 230

7.9.3 算法描述 231

7.9.4 算法性能分析 234

7.10 本章小结 234

7.11 习题 235

7.12 参考文献说明 235

参考文献 236

第八章 知识推理 238

8.1 Muddy children难题 238

8.2 知识的逻辑 239

8.2.1 知识操作符 239

8.2.2 回到muddy children难题 240

8.2.3 克里普克结构 240

8.2.4 使用克里普克结构解决muddy children难题 241

8.2.5 知识的属性 243

8.3 同步系统中的知识 244

8.4 异步系统中的知识 244

8.4.1 逻辑和定义 244

8.4.2 异步系统中的达成一致 245

8.4.3 共同知识的变体 246

8.4.4 并发共同知识 246

8.5 知识转移 250

8.6 知识和时钟 251

8.7 本章小结 253

8.8 习题 253

8.9 参考文献说明 254

参考文献 254

第九章 分布式互斥算法 256

9.1 引言 256

9.2 预备知识 257

9.2.1 系统模型 257

9.2.2 互斥算法的必备条件 257

9.2.3 性能指标 258

9.3 Lamport算法 259

9.4 Ricart-Agrawala算法 262

9.5 Singhal动态信息结构算法 264

9.5.1 算法描述 266

9.5.2 正确性 268

9.5.3 性能分析 269

9.5.4 异构流量模式下的适应性 270

9.6 Lodha和Kshemkalyani的公平互斥算法 270

9.6.1 系统模型 270

9.6.2 算法描述 270

9.6.3 安全性、公平性与活性 275

9.6.4 消息复杂性 275

9.7 基于仲裁团的互斥算法 275

9.8 Maekawa算法 276

9.8.1 死锁问题 277

9.9 Agarwal-EI Abbadi基于仲裁团的算法 278

9.9.1 构造树状结构仲裁团 279

9.9.2 构造树状结构仲裁团算法分析 280

9.9.3 有效性 280

9.9.4 树状结构仲裁团的例子 281

9.9.5 分布式互斥算法 282

9.9.6 正确性证明 283

9.10 基于令牌的算法 283

9.11 Suzuki-Kasami广播算法 283

9.12 基于树的Raymond算法 285

9.12.1 HOLDER变量 286

9.12.2 算法操作 287

9.12.3 算法描述 287

9.12.4 正确性 289

9.12.5 开销和性能分析 290

9.12.6 算法初始化 291

9.12.7 错误和恢复 291

9.13 本章小结 292

9.14 习题 292

9.15 参考文献说明 293

参考文献 293

第十章 死锁检测 296

10.1 简介 296

10.2 系统模型 296

10.2.1 等待图 297

10.3 预备知识 297

10.3.1 死锁处理策略 297

10.3.2 死锁检测问题 298

10.4 死锁模型 298

10.4.1 单资源模型 299

10.4.2 AND模型 299

10.4.3 OR模型 299

10.4.4 AND-OR模型 300

10.4.5 (p q)模型 300

10.4.6 无限制模型 300

10.5 Knapp分布式死锁检测算法分类 301

10.5.1 路径推送算法 301

10.5.2 边探测算法 301

10.5.3 基于计算分散的算法 301

10.5.4 基于全局状态检测的算法 302

10.6 单资源模型下的Mitchell-Merritt算法 302

10.7 针对AND模型的Chandy-Misra-Haas算法 304

10.8 针对OR模型的Chandy-Misra-Haas算法 305

10.9 针对(p q)模型的Kshemkalyani-Singhal算法 307

10.9.1 算法的非正式描述 308

10.9.2 算法描述 310

10.10 本章小结 315

10.11 习题 315

10.12 参考文献说明 315

参考文献 316

第十一章 全局谓词的检测 320

11.1 稳定谓词和不稳定谓词 320

11.1.1 稳定谓词 321

11.1.2 不稳定谓词 322

11.2 谓词的形态 323

11.2.1 谓词检测的复杂性 324

11.3 关系谓词的集中式算法 324

11.4 合取谓词 327

11.4.1 合取谓词基于区间的集中式算法 328

11.4.2 Possibly(φ)基于全局状态的集中式算法 331

11.5 合取谓词的分布式算法 333

11.5.1 Possibly(φ)基于状态的分布式令牌算法 333

11.5.2 Definitely(φ)基于区间的分布式令牌算法 334

11.5.3 Possibly(φ)基于区间的分布式捎带算法 338

11.6 谓词的进一步分类 342

11.7 本章小结 342

11.8 习题 343

11.9 参考文献说明 344

参考文献 344

第十二章 分布式共享内存 347

12.1 抽象化及其优势 347

12.2 内存一致性模型 349

12.2.1 强一致性、原子一致性及线性 350

12.2.2 顺序一致性 352

12.2.3 因果一致性 355

12.2.4 处理器一致性 356

12.2.5 慢内存 357

12.2.6 一致性模型的层次结构 358

12.2.7 其他基于同步指令的一致性模型 358

12.3 共享内存的互斥 360

12.3.1 Lamport面包店算法 360

12.3.2 Lamport's WRWM技术和快速互斥 362

12.3.3 互斥的硬件支持 364

12.4 等待无关性 366

12.5 寄存器层次和无等待模拟 367

12.5.1 构造1:SRSW安全寄存器到MRSW安全寄存器 369

12.5.2 构造2:SRSW普通寄存器到MRSW普通寄存器 370

12.5.3 构造3:布尔MRSW安全寄存器到整数MRSW安全寄存器 370

12.5.4 构造4:布尔MRSW安全寄存器到布尔MRSW普通寄存器 370

12.5.5 构造5:布尔MRSW普通寄存器到整数MRSW普通寄存器 371

12.5.6 构造6:布尔MRSW普通寄存器到整数MRSW原子寄存器 373

12.5.7 构造7:整数MRSW原子寄存器到整数MRMW原子寄存器 375

12.5.8 构造8:整数SRSW原子寄存器到整数MRSW原子寄存器 376

12.6 共享对象的无等待原子快照 378

12.7 本章小结 381

12.8 习题 381

12.9 参考文献说明 383

参考文献 383

第十三章 检查点和卷回恢复 386

13.1 介绍 386

13.2 背景和定义 387

13.2.1 系统模型 387

13.2.2 本地检查点 388

13.2.3 一致的系统状态 388

13.2.4 与外部世界的交互 389

13.2.5 不同消息类型 389

13.3 错误恢复中的问题 390

13.4 基于检查点的恢复 392

13.4.1 无协作检查点 392

13.4.2 协作式检查点 393

13.4.3 最小处理无阻塞检查点的不可能性 395

13.4.4 通信引导检查点 396

13.5 基于日志的卷回恢复 397

13.5.1 确定事件和非确定事件 397

13.5.2 悲观日志 398

13.5.3 乐观日志 399

13.5.4 因果日志 400

13.6 Koo-Toueg协同检查点算法 401

13.6.1 检查点算法 401

13.6.2 卷回恢复算法 403

13.7 异步检查点和恢复的Juang-Venkatesan算法 404

13.7.1 系统模型和假设 404

13.7.2 异步检查点 404

13.7.3 恢复算法 405

13.8 Manivannan-Singhal准同步检查点算法 407

13.8.1 检查点算法 408

13.8.2 恢复算法 410

13.8.3 复杂消息处理 413

13.9 基于矢量时间的Peterson-Kearns算法 415

13.9.1 系统模型 415

13.9.2 算法的非形式化描述 416

13.9.3 卷回协议的形式化描述 418

13.9.4 正确性证明 419

13.10 Helary-Mostefaoui-Netzer-Raynal通信引导协议 421

13.10.1 设计原则 421

13.10.2 检查点协议 424

13.11 本章小结 426

13.12 习题 427

13.13 参考文献说明 427

参考文献 428

第十四章 共识和协定算法 431

14.1 问题定义 431

14.1.1 拜占庭协定及相关问题 433

14.1.2 问题的等价性及标示 433

14.2 结果概观 434

14.3 无故障系统(同步或者异步)中的协定问题 435

14.4 有故障的同步系统(消息传输机制)中的协定问题 436

14.4.1 针对崩溃故障(同步系统)的共识算法 436

14.4.2 针对拜占庭错误的共识算法(同步系统) 437

14.5 有故障的异步消息传输系统中的协定问题 447

14.5.1 得到一致解的不可能性 447

14.5.2 结束可靠的广播 449

14.5.3 分布式事务提交 449

14.5.4 k-set共识问题 450

14.5.5 近似共识 450

14.5.6 重命名问题 455

14.5.7 可靠广播 460

14.6 异步系统中无等待共享内存的共识问题 461

14.6.1 不可能有解 461

14.6.2 共识数以及共识层级 463

14.6.3 共识对象的通用性 468

14.6.4 共享内存中的k-set共识 472

14.6.5 共享内存的重命名问题 473

14.6.6 使用分裂器解决共享内存重命名问题 474

14.7 本章小结 476

14.8 习题 477

14.9 参考文献说明 478

参考文献 479

第十五章 失效检测 481

15.1 引言 481

15.2 非可靠失效检测程序 482

15.2.1 系统模型 482

15.2.2 失效检测程序 483

15.2.3 完备性的准确性 483

15.2.4 失效检测程序类型 485

15.2.5 失效检测程序的可简约性 485

15.2.6 简约弱失效检测程序W成强失效检测程序S 486

15.2.7 简约最终弱失效检测程序◇W成最终强失效检测程序◇S 488

15.3 共识问题 490

15.3.1 解共识问题 490

15.3.2 使用强失效检测程序S的解决方案 490

15.3.3 使用最终强失效检测程序◇S的解决方案 492

15.4 原子广播 495

15.5 原子广播的解决方案 495

15.6 解决基本一致问题的最弱失效检测程序 497

15.6.1 实际的失效检测程序 497

15.6.2 对一致的最弱失效检测程序 499

15.6.3 终止可靠广播的最弱失效检测程序 499

15.7 失效检测程序的实现 500

15.8 自适应失效检测程序协议 502

15.8.1 懒惰失效检测协议 502

15.9 习题 505

15.10 参考文献说明 505

参考文献 506

第十六章 分布式系统中的验证 508

16.1 简介 508

16.2 背景和定义 508

16.2.1 认证的基础 509

16.2.2 主体的类型 509

16.2.3 认证协议的简单分类 509

16.2.4 标记法 510

16.2.5 密码协议的设计原则 510

16.3 基于对称密码系统的协议 511

16.3.1 基本协议 512

16.3.2 使用nonce的修正协议 512

16.3.3 Wide-mouth frog协议 513

16.3.4 基于认证服务器的协议 514

16.3.5 一次性口令方案 515

16.3.6 Otway-Rees协议 517

16.3.7 Kerberos认证服务 518

16.4 基于非对称密码系统的协议 522

16.4.1 基本协议 523

16.4.2 使用认证授权的修改协议 523

16.4.3 Needham-Schroeder协议 524

16.4.4 SSL协议 526

16.5 基于口令认证 529

16.5.1 加密密钥交换协议 529

16.5.2 安全远程口令协议 530

16.6 认证协议失效 531

16.7 本章小结 532

16.8 习题 533

16.9 参考文献说明 533

参考文献 534

第十七章 自稳定 537

17.1 介绍 537

17.2 系统模型 538

17.3 自稳定性定义 539

17.3.1 随机自稳定性及概率自稳定性 540

17.4 自稳定性算法设计中的问题 541

17.4.1 个体单元中的状态数 542

17.4.2 一致与非一致网络 546

17.4.3 中央和分布式守护程序 547

17.4.4 减少令牌环中的状态数 548

17.4.5 共享内存模型 549

17.4.6 互斥 549

17.4.7 自稳定的开销 550

17.5 设计自稳定系统的方法 550

17.5.1 分层和模块化 550

17.6 通信协议 552

17.7 自稳定分布式生成树 553

17.8 构建生成树的自稳定算法 554

17.8.1 Dolev、Israeli和Moran算法 554

17.8.2 构建生成树的Afek、Kutten和Yang算法 556

17.8.3 构建生成树的Arora和Gouda算法 557

17.8.4 构建生成树的Huang等人算法 557

17.8.5 构建生成树的Afek和Bremler算法 557

17.9 1-最大独立集合的匿名自稳定算法 558

17.10 概率自稳定头标选择算法 560

17.11 编译在自稳定中的作用 562

17.11.1 顺序程序的编译程序 563

17.11.2 异步消息传递系统的编译程序 563

17.11.3 异步共享内存系统编译程序 564

17.12 自稳定作为容错的一个解法 564

17.13 阻碍自稳定的因素 566

17.14 自稳定的局限 567

17.15 本章小结 568

17.16 习题 569

17.17 参考文献说明 569

参考文献 570

第十八章 对等计算及覆盖网络 576

18.1 概述 576

18.1.1 Napster 577

18.1.2 应用层覆盖网络 577

18.2 数据索引和覆盖网络 578

18.2.1 分布式索引 579

18.3 非结构化覆盖网络 580

18.3.1 非结构化覆盖网络:属性 580

18.3.2 Gnutella 580

18.3.3 Gnutella以及非结构化覆盖网络中的查找 581

18.3.4 复制策略 583

18.3.5 复制策略实现 585

18.4 Chord分布式哈希表 586

18.4.1 概述 586

18.4.2 简单查找 587

18.4.3 可扩展的查找 588

18.4.4 管理网络扰动 589

18.4.5 复杂度 592

18.5 内容寻址网络 593

18.5.1 概述 593

18.5.2 CAN初始化 594

18.5.3 CAN路由 594

18.5.4 CAN维护 595

18.5.5 CAN优化 597

18.5.6 CAN复杂度 598

18.6 Tapestry 598

18.6.1 概述 598

18.6.2 覆盖网络和路由 598

18.6.3 对象发布和对象查找 601

18.6.4 节点插入 602

18.6.5 节点删除 603

18.7 P2P系统设计中的其他挑战 604

18.7.1 公平:一个博弈游戏 604

18.7.2 信任或者声誉管理 605

18.8 在存储空间及路由长度间折中 605

18.8.1 统一DHT协议 605

18.8.2 有关DHT存储和路由距离的约束 607

18.9 复杂网络的图结构 607

18.10 Internet图 609

18.10.1 基本定理和其定义 609

18.10.2 Internet的特性 611

18.10.3 复杂网络的错误和攻击容忍 613

18.11 通用随机图网络 615

18.12 小世界网络 615

18.13 规模无关网络 616

18.13.1 主方程法 617

18.13.2 速率方程法 617

18.14 演化网络 618

18.14.1 扩展的Barabasi-Albert模型 619

18.15 本章小结 621

18.16 习题 621

18.17 参考文献说明 622

参考文献 622

索引 625