Distributed Systems:Concepts and Design,Fifth Edition
出版者的話
譯者序
前言
第1章 分布式系統(tǒng)的特征1
1.1 簡介1
1.2 分布式系統(tǒng)的例子2
1.2.1 Web搜索2
1.2.2 大型多人在線游戲3
1.2.3 金融交易3
1.3 分布式系統(tǒng)的趨勢4
1.3.1 泛在聯(lián)網和現(xiàn)代互聯(lián)網5
1.3.2 移動和無處不在計算5
1.3.3 分布式多媒體系統(tǒng)7
1.3.4 把分布式計算作為一個公共設施7
1.4 關注資源共享8
1.5 挑戰(zhàn)9
1.5.1 異構性9
1.5.2 開放性10
1.5.3 安全性11
1.5.4 可伸縮性11
1.5.5 故障處理12
1.5.6 并發(fā)性13
1.5.7 透明性14
1.5.8 服務質量15
1.6 實例研究:萬維網15
1.7 小結20
練習20
第2章 系統(tǒng)模型22
2.1 簡介22
2.2 物理模型23
2.3 體系結構模型24
2.3.1 體系結構元素24
2.3.2 體系結構模式30
2.3.3 相關的中間件解決方案34
2.4 基礎模型36
2.4.1 交互模型36
2.4.2 故障模型39
2.4.3 安全模型41
2.5 小結44
練習45
第3章 網絡和網際互連46
3.1 簡介46
3.2 網絡類型48
3.3 網絡原理50
3.3.1 數據包的傳輸50
3.3.2 數據流50
3.3.3 交換模式51
3.3.4 協(xié)議52
3.3.5 路由55
3.3.6 擁塞控制57
3.3.7 網際互連58
3.4 互聯(lián)網協(xié)議60
3.4.1 IP尋址62
3.4.2 IP協(xié)議63
3.4.3 IP路由64
3.4.4 IPv667
3.4.5 移動IP69
3.4.6 TCP和UDP70
3.4.7 域名71
3.4.8 防火墻72
3.5 實例研究:以太網、WiFi、藍牙74
3.5.1 以太網75
3.5.2 IEEE 802.11無線LAN78
3.5.3 IEEE 802.15.1藍牙無線PAN79
3.6 小結81
練習81
第4章 進程間通信83
4.1 簡介83
4.2 互聯(lián)網協(xié)議的API84
4.2.1 進程間通信的特征84
4.2.2 套接字85
4.2.3 UDP數據報通信85
4.2.4 TCP流通信88
4.3 外部數據表示和編碼91
4.3.1 CORBA的公共數據表示92
4.3.2 Java對象序列化93
4.3.3 可擴展標記語言94
4.3.4 遠程對象引用97
4.4 組播通信98
4.4.1 IP組播——組播通信的實現(xiàn)98
4.4.2 組播的可靠性和排序100
4.5 網絡虛擬化:覆蓋網絡101
4.5.1 覆蓋網絡101
4.5.2 Skype:一個覆蓋網絡的例子102
4.6 實例研究:MPI103
4.7 小結104
練習105
第5章 遠程調用107
5.1 簡介107
5.2 請求-應答協(xié)議107
5.3 遠程過程調用112
5.3.1 RPC的設計問題113
5.3.2 RPC的實現(xiàn)115
5.3.3 實例研究:Sun RPC116
5.4 遠程方法調用118
5.4.1 RMI的設計問題118
5.4.2 RMI的實現(xiàn)121
5.4.3 分布式無用單元收集124
5.5 實例研究:Java RMI125
5.5.1 創(chuàng)建客戶和服務器程序127
5.5.2 Java RMI的設計和實現(xiàn)130
5.6 小結130
練習131
第6章 間接通信133
6.1 簡介133
6.2 組通信134
6.2.1 編程模型135
6.2.2 實現(xiàn)問題136
6.2.3 實例研究:JGroups工具箱138
6.3 發(fā)布-訂閱系統(tǒng)140
6.3.1 編程模型142
6.3.2 實現(xiàn)問題143
6.3.3 發(fā)布-訂閱系統(tǒng)的例子146
6.4 消息隊列146
6.4.1 編程模型147
6.4.2 實現(xiàn)問題148
6.4.3 實例研究:Java消息服務149
6.5 共享內存的方式152
6.5.1 分布式共享內存152
6.5.2 元組空間通信153
6.6 小結159
練習161
第7章 操作系統(tǒng)支持162
7.1 簡介162
7.2 操作系統(tǒng)層163
7.3 保護164
7.4 進程和線程165
7.4.1 地址空間166
7.4.2 新進程的生成167
7.4.3 線程169
7.5 通信和調用176
7.5.1 調用性能177
7.5.2 異步操作181
7.6 操作系統(tǒng)的體系結構183
7.7 操作系統(tǒng)層的虛擬化185
7.7.1 系統(tǒng)虛擬化186
7.7.2 實例研究:系統(tǒng)虛擬化的Xen方法186
7.8 小結193
練習194
第8章 分布式對象和組件196
8.1 簡介196
8.2 分布式對象197
8.3 實例研究:CORBA198
8.3.1 CORBA RMI199
8.3.2 CORBA的體系結構203
8.3.3 CORBA遠程對象引用205
8.3.4 CORBA服務206
8.3.5 CORBA客戶和服務器實例206
8.4 從對象到組件209
8.5 實例研究:企業(yè)JavaBeans和Fractal212
8.5.1 企業(yè)JavaBeans213
8.5.2 Fractal217
8.6 小結220
練習220
第9章 Web服務222
9.1 簡介222
9.2 Web服務223
9.2.1 SOAP225
9.2.2 Web服務與分布式對象模型的比較228
9.2.3 在Java中使用SOAP229
9.2.4 Web服務和CORBA的比較232
9.3 Web服務的服務描述和接口定義語言233
9.4 Web服務使用的目錄服務235
9.5 XML安全性237
9.6 Web服務的協(xié)作239
9.7 Web服務的應用241
9.7.1 面向服務的體系結構241
9.7.2 網格241
9.7.3 云計算243
9.8 小結244
練習245
第10章 對等系統(tǒng)247
10.1 簡介247
10.2 Napster及其遺留系統(tǒng)250
10.3 對等中間件251
10.4 路由覆蓋252
10.5 路由覆蓋實例研究:Pastry和Tapestry254
10.5.1 Pastry254
10.5.2 Tapestry260
10.5.3 從結構化對等方法到非結構化對等方法260
10.6 應用實例研究:Squirrel、OceanStore和Ivy262
10.6.1 Squirrel Web緩存263
10.6.2 OceanStore文件存儲264
10.6.3 Ivy文件系統(tǒng)267
10.7 小結269
練習269
第11章 安全性271
11.1 簡介271
11.1.1 威脅和攻擊272
11.1.2 保護電子事務274
11.1.3 設計安全系統(tǒng)275
11.2 安全技術概述276
11.2.1 密碼學277
11.2.2 密碼學的應用277
11.2.3 證書279
11.2.4 訪問控制280
11.2.5 憑證282
11.2.6 防火墻283
11.3 密碼算法283
11.3.1 密鑰(對稱)算法285
11.3.2 公鑰(不對稱)算法288
11.3.3 混合密碼協(xié)議289
11.4 數字簽名289
11.4.1 公鑰數字簽名290
11.4.2 密鑰數字簽名——MAC291
11.4.3 安全摘要函數291
11.4.4 證書標準和證書權威機構292
11.5 密碼實用學293
11.5.1 密碼算法的性能293
11.5.2 密碼學的應用和政治障礙294
11.6 實例研究:Needham-Schroeder、Kerberos、TLS和802.11 WiFi295
11.6.1 Needham-Schroeder認證協(xié)議295
11.6.2 Kerberos296
11.6.3 使用安全套接字確保電子交易安全300
11.6.4 IEEE 802.11 WiFi安全設計中最初的缺陷302
11.7 小結303
練習304
第12章 分布式文件系統(tǒng)305
12.1 簡介305
12.1.1 文件系統(tǒng)的特點307
12.1.2 分布式文件系統(tǒng)的需求308
12.1.3 實例研究309
12.2 文件服務體系結構310
12.3 實例研究:SUN網絡文件系統(tǒng)313
12.4 實例研究:Andrew文件系統(tǒng)321
12.4.1 實現(xiàn)322
12.4.2 緩存的一致性324
12.4.3 其他方面326
12.5 最新進展327
12.6 小結330
練習331
第13章 名字服務332
13.1 簡介332
13.2 名字服務和域名系統(tǒng)334
13.2.1 名字空間335
13.2.2 名字解析337
13.2.3 域名系統(tǒng)339
13.3 目錄服務344
13.4 實例研究:全局名字服務344
13.5 實例研究:X.500目錄服務346
13.6 小結349
練習349
第14章 時間和全局狀態(tài)351
14.1 簡介351
14.2 時鐘、事件和進程狀態(tài)352
14.3 同步物理時鐘353
14.3.1 同步系統(tǒng)中的同步354
14.3.2 同步時鐘的Cristian方法354
14.3.3 Berkeley算法355
14.3.4 網絡時間協(xié)議355
14.4 邏輯時間和邏輯時鐘357
14.5 全局狀態(tài)359
14.5.1 全局狀態(tài)和一致割集360
14.5.2 全局狀態(tài)謂詞、穩(wěn)定性、安全性和活性362
14.5.3 Chandy和Lamport的“快照”算法362
14.6 分布式調試365
14.6.1 收集狀態(tài)366
14.6.2 觀察一致的全局狀態(tài)366
14.6.3 判定可能的?367
14.6.4 判定明確的?368
14.6.5 在同步系統(tǒng)中判定可能的?和明確的?369
14.7 小結369
練習369
第15章 協(xié)調和協(xié)定371
15.1 簡介371
15.2 分布式互斥373
15.3 選舉377
15.4 組通信中的協(xié)調與協(xié)定380
15.4.1 基本組播381
15.4.2 可靠組播381
15.4.3 有序組播383
15.5 共識和相關問題388
15.5.1 系統(tǒng)模型和問題定義389
15.5.2 同步系統(tǒng)中的共識問題391
15.5.3 同步系統(tǒng)中的拜占庭將軍問題392
15.5.4 異步系統(tǒng)的不可能性394
15.6 小結395
練習396
第16章 事務和并發(fā)控制398
16.1 簡介398
16.1.1 簡單的同步機制(無事務)399
16.1.2 事務的故障模型400
16.2 事務400
16.2.1 并發(fā)控制402
16.2.2 事務放棄時的恢復405
16.3 嵌套事務406
16.4 鎖408
16.4.1 死鎖413
16.4.2 在加鎖機制中增加并發(fā)度415
16.5 樂觀并發(fā)控制417
16.6 時間戳排序419
16.7 并發(fā)控制方法的比較423
16.8 小結425
練習425
第17章 分布式事務429
17.1 簡介429
17.2 平面分布式事務和嵌套分布式事務429
17.3 原子提交協(xié)議431
17.3.1 兩階段提交協(xié)議432
17.3.2 嵌套事務的兩階段提交協(xié)議434
17.4 分布式事務的并發(fā)控制437
17.4.1 加鎖437
17.4.2 時間戳并發(fā)控制437
17.4.3 樂觀并發(fā)控制438
17.5 分布式死鎖439
17.6 事務恢復444
17.6.1 日志445
17.6.2 影子版本446
17.6.3 為何恢復文件需要事務狀態(tài)和意圖列表447
17.6.4 兩階段提交協(xié)議的恢復448
17.7 小結450
練習450
第18章 復制453
18.1 簡介453
18.2 系統(tǒng)模型和組通信的作用454
18.2.1 系統(tǒng)模型455
18.2.2 組通信的作用456
18.3 容錯服務459
18.3.1 被動(主備份)復制461
18.3.2 主動復制462
18.4 高可用服務的實例研究:閑聊體系結構、Bayou和Coda463
18.4.1 閑聊體系結構464
18.4.2 Bayou系統(tǒng)和操作變換方法469
18.4.3 Coda文件系統(tǒng)471
18.5 復制數據上的事務475
18.5.1 復制事務的體系結構476
18.5.2 可用拷貝復制477
18.5.3 網絡分區(qū)479
18.5.4 帶驗證的可用拷貝479
18.5.5 法定數共識方法480
18.5.6 虛擬分區(qū)算法481
18.6 小結483
練習484
第19章 移動和無處不在計算486
19.1 簡介486
19.2 關聯(lián)491
19.2.1 發(fā)現(xiàn)服務492
19.2.2 物理關聯(lián)495
19.2.3 小結和前景496
19.3 互操作497
19.3.1 易變系統(tǒng)的面向數據編程497
19.3.2 間接關聯(lián)和軟狀態(tài)500
19.3.3 小結和前景501
19.4 感知和上下文敏感501
19.4.1 傳感器502
19.4.2 感知體系結構502
19.4.3 位置感知506
19.4.4 小結和前景509
19.5 安全性和私密性510
19.5.1 背景510
19.5.2 一些解決辦法511
19.5.3 小結和前景515
19.6 自適應515
19.6.1 內容的上下文敏感自適應515
19.6.2 適應變化的系統(tǒng)資源517
19.6.3 小結和前景518
19.7 實例研究:Cooltown518
19.7.1 Web存在519
19.7.2 物理超鏈接520
19.7.3 互操作和eSquirt協(xié)議521
19.7.4 小結和前景522
19.8 小結523
練習523
第20章 分布式多媒體系統(tǒng)525
20.1 簡介525
20.2 多媒體數據的特征527
20.3 服務質量管理528
20.3.1 服務質量協(xié)商531
20.3.2 許可控制534
20.4 資源管理534
20.5 流自適應535
20.5.1 調整536
20.5.2 過濾536
20.6 實例研究:Tiger視頻文件服務器、BitTorrent和端系統(tǒng)多播537
20.6.1 Tiger視頻文件服務器537
20.6.2 BitTorrent540
20.6.3 端系統(tǒng)多播541
20.7 小結544
練習544
第21章 分布式系統(tǒng)設計:Google實例研究546
21.1 簡介546
21.2 實例研究簡介:Google547
21.3 總體結構和設計理念550
21.3.1 物理模型550
21.3.2 總的系統(tǒng)體系結構551
21.4 底層通信范型553
21.4.1 遠程調用554
21.4.2 發(fā)布-訂閱556
21.4.3 通信的關鍵設計選擇總結557
21.5 數據存儲和協(xié)調服務557
21.5.1 Google文件系統(tǒng)557
21.5.2 Chubby561
21.5.3 Bigtable565
21.5.4 關鍵設計選擇總結570
21.6 分布式計算服務571
21.6.1 MapReduce571
21.6.2 Sawzall574
21.6.3 關鍵設計選擇總結575
21.7 小結576
練習576
參考文獻578
索引615