齣版者的話
譯者序
前言
第1章 分布式係統的特徵1
1.1 簡介1
1.2 分布式係統的例子2
1.2.1 Web搜索2
1.2.2 大型多人在綫遊戲3
1.2.3 金融交易3
1.3 分布式係統的趨勢4
1.3.1 泛在聯網和現代互聯網5
1.3.2 移動和無處不在計算5
1.3.3 分布式多媒體係統7
1.3.4 把分布式計算作為一個公共設施7
1.4 關注資源共享8
1.5 挑戰9
1.5.1 異構性9
1.5.2 開放性10
1.5.3 安全性11
1.5.4 可伸縮性11
1.5.5 故障處理12
1.5.6 並發性13
1.5.7 透明性14
1.5.8 服務質量15
1.6 實例研究:萬維網15
1.7 小結20
練習20
第2章 係統模型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 協議52
3.3.5 路由55
3.3.6 擁塞控製57
3.3.7 網際互連58
3.4 互聯網協議60
3.4.1 IP尋址62
3.4.2 IP協議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 互聯網協議的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組播——組播通信的實現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 請求-應答協議107
5.3 遠程過程調用112
5.3.1 RPC的設計問題113
5.3.2 RPC的實現115
5.3.3 實例研究:Sun RPC116
5.4 遠程方法調用118
5.4.1 RMI的設計問題118
5.4.2 RMI的實現121
5.4.3 分布式無用單元收集124
5.5 實例研究:Java RMI125
5.5.1 創建客戶和服務器程序127
5.5.2 Java RMI的設計和實現130
5.6 小結130
練習131
第6章 間接通信133
6.1 簡介133
6.2 組通信134
6.2.1 編程模型135
6.2.2 實現問題136
6.2.3 實例研究:JGroups工具箱138
6.3 發布-訂閱係統140
6.3.1 編程模型142
6.3.2 實現問題143
6.3.3 發布-訂閱係統的例子146
6.4 消息隊列146
6.4.1 編程模型147
6.4.2 實現問題148
6.4.3 實例研究:Java消息服務149
6.5 共享內存的方式152
6.5.1 分布式共享內存152
6.5.2 元組空間通信153
6.6 小結159
練習161
第7章 操作係統支持162
7.1 簡介162
7.2 操作係統層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 操作係統的體係結構183
7.7 操作係統層的虛擬化185
7.7.1 係統虛擬化186
7.7.2 實例研究:係統虛擬化的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 實例研究:企業JavaBeans和Fractal212
8.5.1 企業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服務的協作239
9.7 Web服務的應用241
9.7.1 麵嚮服務的體係結構241
9.7.2 網格241
9.7.3 雲計算243
9.8 小結244
練習245
第10章 對等係統247
10.1 簡介247
10.2 Napster及其遺留係統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文件係統267
10.7 小結269
練習269
第11章 安全性271
11.1 簡介271
11.1.1 威脅和攻擊272
11.1.2 保護電子事務274
11.1.3 設計安全係統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 混閤密碼協議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認證協議295
11.6.2 Kerberos296
11.6.3 使用安全套接字確保電子交易安全300
11.6.4 IEEE 802.11 WiFi安全設計中最初的缺陷302
11.7 小結303
練習304
第12章 分布式文件係統305
12.1 簡介305
12.1.1 文件係統的特點307
12.1.2 分布式文件係統的需求308
12.1.3 實例研究309
12.2 文件服務體係結構310
12.3 實例研究:SUN網絡文件係統313
12.4 實例研究:Andrew文件係統321
12.4.1 實現322
12.4.2 緩存的一緻性324
12.4.3 其他方麵326
12.5 最新進展327
12.6 小結330
練習331
第13章 名字服務332
13.1 簡介332
13.2 名字服務和域名係統334
13.2.1 名字空間335
13.2.2 名字解析337
13.2.3 域名係統339
13.3 目錄服務344
13.4 實例研究:全局名字服務344
13.5 實例研究:X.500目錄服務346
13.6 小結349
練習349
第14章 時間和全局狀態351
14.1 簡介351
14.2 時鍾、事件和進程狀態352
14.3 同步物理時鍾353
14.3.1 同步係統中的同步354
14.3.2 同步時鍾的Cristian方法354
14.3.3 Berkeley算法355
14.3.4 網絡時間協議355
14.4 邏輯時間和邏輯時鍾357
14.5 全局狀態359
14.5.1 全局狀態和一緻割集360
14.5.2 全局狀態謂詞、穩定性、安全性和活性362
14.5.3 Chandy和Lamport的“快照”算法362
14.6 分布式調試365
14.6.1 收集狀態366
14.6.2 觀察一緻的全局狀態366
14.6.3 判定可能的367
14.6.4 判定明確的368
14.6.5 在同步係統中判定可能的和明確的369
14.7 小結369
練習369
第15章 協調和協定371
15.1 簡介371
15.2 分布式互斥373
15.3 選舉377
15.4 組通信中的協調與協定380
15.4.1 基本組播381
15.4.2 可靠組播381
15.4.3 有序組播383
15.5 共識和相關問題388
15.5.1 係統模型和問題定義389
15.5.2 同步係統中的共識問題391
15.5.3 同步係統中的拜占庭將軍問題392
15.5.4 異步係統的不可能性394
15.6 小結395
練習396
第16章 事務和並發控製398
16.1 簡介398
16.1.1 簡單的同步機製(無事務)399
16.1.2 事務的故障模型400
16.2 事務400
16.2.1 並發控製402
16.2.2 事務放棄時的恢復405
16.3 嵌套事務406
16.4 鎖408
16.4.1 死鎖413
16.4.2 在加鎖機製中增加並發度415
16.5 樂觀並發控製417
16.6 時間戳排序419
16.7 並發控製方法的比較423
16.8 小結425
練習425
第17章 分布式事務429
17.1 簡介429
17.2 平麵分布式事務和嵌套分布式事務429
17.3 原子提交協議431
17.3.1 兩階段提交協議432
17.3.2 嵌套事務的兩階段提交協議434
17.4 分布式事務的並發控製437
17.4.1 加鎖437
17.4.2 時間戳並發控製437
17.4.3 樂觀並發控製438
17.5 分布式死鎖439
17.6 事務恢復444
17.6.1 日誌445
17.6.2 影子版本446
17.6.3 為何恢復文件需要事務狀態和意圖列錶447
17.6.4 兩階段提交協議的恢復448
17.7 小結450
練習450
第18章 復製453
18.1 簡介453
18.2 係統模型和組通信的作用454
18.2.1 係統模型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係統和操作變換方法469
18.4.3 Coda文件係統471
18.5 復製數據上的事務475
18.5.1 復製事務的體係結構476
18.5.2 可用拷貝復製477
18.5.3 網絡分區479
18.5.4 帶驗證的可用拷貝479
18.5.5 法定數共識方法480
18.5.6 虛擬分區算法481
18.6 小結483
練習484
第19章 移動和無處不在計算486
19.1 簡介486
19.2 關聯491
19.2.1 發現服務492
19.2.2 物理關聯495
19.2.3 小結和前景496
19.3 互操作497
19.3.1 易變係統的麵嚮數據編程497
19.3.2 間接關聯和軟狀態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 適應變化的係統資源517
19.6.3 小結和前景518
19.7 實例研究:Cooltown518
19.7.1 Web存在519
19.7.2 物理超鏈接520
19.7.3 互操作和eSquirt協議521
19.7.4 小結和前景522
19.8 小結523
練習523
第20章 分布式多媒體係統525
20.1 簡介525
20.2 多媒體數據的特徵527
20.3 服務質量管理528
20.3.1 服務質量協商531
20.3.2 許可控製534
20.4 資源管理534
20.5 流自適應535
20.5.1 調整536
20.5.2 過濾536
20.6 實例研究:Tiger視頻文件服務器、BitTorrent和端係統多播537
20.6.1 Tiger視頻文件服務器537
20.6.2 BitTorrent540
20.6.3 端係統多播541
20.7 小結544
練習544
第21章 分布式係統設計:Google實例研究546
21.1 簡介546
21.2 實例研究簡介:Google547
21.3 總體結構和設計理念550
21.3.1 物理模型550
21.3.2 總的係統體係結構551
21.4 底層通信範型553
21.4.1 遠程調用554
21.4.2 發布-訂閱556
21.4.3 通信的關鍵設計選擇總結557
21.5 數據存儲和協調服務557
21.5.1 Google文件係統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
· · · · · · (
收起)