分布式系統(tǒng)原理與工程實(shí)踐: 一致性、共識(shí)、Paxos、分布式事務(wù)、服務(wù)治理、微服務(wù)、冪等、消息系統(tǒng)、ZooKeeper
定 價(jià):90 元
- 作者:易哥
- 出版時(shí)間:2021/12/1
- ISBN:9787121423611
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.4
- 頁碼:260
- 紙張:
- 版次:01
- 開本:16開
本書通過理論篇、實(shí)踐篇、工程篇、總結(jié)篇四篇(13章),介紹了分布式系統(tǒng)的知識(shí)體系。理論篇介紹了一致性、共識(shí)、分布式約束等知識(shí);實(shí)踐篇介紹了分布式鎖、分布式事務(wù)、服務(wù)發(fā)現(xiàn)與調(diào)用、服務(wù)保護(hù)與網(wǎng)關(guān)、冪等接口等知識(shí);工程篇介紹了消息系統(tǒng)中間件 RabbitMQ 和分布式協(xié)調(diào)中間件ZooKeeper等知識(shí);總結(jié)篇?jiǎng)t幫助大家厘清分布式系統(tǒng)的知識(shí)脈絡(luò)。本書適合想要學(xué)習(xí)分布式系統(tǒng)理論、實(shí)踐、工程知識(shí)的學(xué)生、軟件開發(fā)者。
崔現(xiàn)斌(筆名易哥),畢業(yè)于浙江大學(xué)、山東大學(xué),高級(jí)軟件系統(tǒng)架構(gòu)師、網(wǎng)絡(luò)工程師、數(shù)據(jù)庫工程師、軟件測(cè)試工程師、注冊(cè)電氣工程師。在校成績(jī)優(yōu)異,曾獲得國(guó)家獎(jiǎng)學(xué)金兩次,一等獎(jiǎng)學(xué)金四次,科技創(chuàng)新大賽一等獎(jiǎng)三次,以及五四青年科學(xué)獎(jiǎng)等。主要科研方向?yàn)闄C(jī)器學(xué)習(xí)、分布式算法、容錯(cuò)算法在無線傳感網(wǎng)絡(luò)中的應(yīng)用,相關(guān)論文獲得IEEE通信協(xié)會(huì)最佳論文獎(jiǎng)。具有十余年軟件開發(fā)經(jīng)驗(yàn),曾擔(dān)任網(wǎng)站技術(shù)部門負(fù)責(zé)人,現(xiàn)從事互聯(lián)網(wǎng)金融行業(yè)。主要負(fù)責(zé)軟件系統(tǒng)架構(gòu)設(shè)計(jì)與后端開發(fā),專注分布式架構(gòu)、研發(fā)協(xié)同、持續(xù)交付等領(lǐng)域,設(shè)計(jì)并實(shí)現(xiàn)應(yīng)用交付流水系統(tǒng)、任務(wù)協(xié)作與管理系統(tǒng)、通用流處理平臺(tái)等眾多系統(tǒng)或平臺(tái)。同時(shí)也是一名活躍的開源開發(fā)者。著有書籍《通用源碼閱讀指導(dǎo)書》《高性能架構(gòu)之道》,兩本書籍均受到多方好評(píng),并在臺(tái)灣地區(qū)發(fā)行繁體版。
目錄
理論篇
第1章 分布式概述 2
1.1 概述 2
1.2 應(yīng)用的演進(jìn)歷程 3
1.2.1 單體應(yīng)用 3
1.2.2 集群應(yīng)用 4
1.2.3 狹義分布式應(yīng)用 9
1.2.4 微服務(wù)應(yīng)用 11
1.3 分布式系統(tǒng)概述 12
1.3.1 分布式系統(tǒng)的定義 12
1.3.2 分布式一致性問題 14
1.3.3 分布式應(yīng)用中的節(jié)點(diǎn) 15
1.4 分布式應(yīng)用的優(yōu)勢(shì) 16
1.5 分布式應(yīng)用的問題 17
1.6 本章小結(jié) 20
第2章 一致性 21
2.1 一致性的概念 21
2.1.1 ACID一致性 22
2.1.2 CAP一致性 23
2.1.3 兩種一致性的關(guān)系 23
2.2 一致性的強(qiáng)弱 24
2.2.1 嚴(yán)格一致性 25
2.2.2 順序一致性 25
2.2.3 線性一致性 27
2.2.4 最終一致性 30
2.2.5 總結(jié) 31
2.3 一致性算法 32
2.4 兩階段提交 33
2.4.1 具體實(shí)現(xiàn) 33
2.4.2 線性一致性證明 35
2.4.3 優(yōu)劣 39
2.5 三階段提交 39
2.5.1 具體實(shí)現(xiàn) 40
2.5.2 優(yōu)劣 42
2.6 本章小結(jié) 44
第3章 共識(shí) 46
3.1 共識(shí)與一致性 46
3.1.1 共識(shí)的概念 47
3.1.2 再論“一致性” 49
3.2 拜占庭將軍問題 51
3.3 算法的容錯(cuò)性 54
3.3.1 非拜占庭容錯(cuò)算法 55
3.3.2 拜占庭容錯(cuò)算法 55
3.4 共識(shí)算法 56
3.5 Paxos算法 56
3.5.1 提出與證明 57
3.5.2 算法的內(nèi)容 60
3.5.3 算法實(shí)現(xiàn)分析 62
3.5.4 理解與示例 64
3.6 Raft算法 65
3.6.1 Raft算法的內(nèi)容 66
3.6.2 Raft算法的保證 70
3.6.3 總結(jié)分析 73
3.7 本章小結(jié) 74
第4章 分布式約束 76
4.1 CAP定理 76
4.1.1 定理的內(nèi)容 76
4.1.2 示例與理解 77
4.2 從CAP定理到BASE定理 78
4.3 BASE定理 80
4.3.1 BASE定理的含義 80
4.3.2 BASE定理的應(yīng)用 81
4.4 本章小結(jié) 83
實(shí)踐篇
第5章 分布式鎖 86
5.1 產(chǎn)生背景 86
5.2 特性 88
5.2.1 全局性 88
5.2.2 唯一性 89
5.2.3 遵從性 90
5.3 設(shè)計(jì)要點(diǎn) 90
5.4 實(shí)現(xiàn) 91
5.4.1 邏輯分布式鎖 91
5.4.2 唯一性索引分布式鎖 92
5.4.3 唯一性校驗(yàn)分布式鎖 93
5.4.4 一致性分布式鎖 94
5.5 應(yīng)用場(chǎng)景 96
5.6 本章小結(jié) 96
第6章 分布式事務(wù) 97
6.1 本地事務(wù)與分布式事務(wù) 98
6.2 分布式事務(wù)的類別 99
6.2.1 應(yīng)用內(nèi)多數(shù)據(jù)庫事務(wù) 99
6.2.2 單體應(yīng)用間事務(wù) 99
6.2.3 分布式系統(tǒng)內(nèi)事務(wù) 100
6.2.4 分布式系統(tǒng)間事務(wù) 101
6.3 分布式事務(wù)的類別總結(jié) 101
6.4 應(yīng)用內(nèi)多數(shù)據(jù)庫事務(wù)方案 102
6.5 單體應(yīng)用間事務(wù)方案 104
6.5.1 化為本地事務(wù) 104
6.5.2 化為應(yīng)用內(nèi)多數(shù)據(jù)庫事務(wù) 105
6.5.3 TCC 106
6.5.4 本地異步消息機(jī)制 111
6.5.5 異步消息中心機(jī)制 113
6.6 近似事務(wù) 114
6.7 本章小結(jié) 116
第7章 服務(wù)發(fā)現(xiàn)與調(diào)用 117
7.1 分布式帶來的問題 117
7.2 服務(wù)發(fā)現(xiàn) 119
7.2.1 服務(wù)發(fā)現(xiàn)模型中的角色 119
7.2.2 反向代理模型 120
7.2.3 注冊(cè)中心模型 120
7.2.4 服務(wù)網(wǎng)格模型 122
7.2.5 三種模型的比較 123
7.3 服務(wù)調(diào)用 123
7.3.1 背景介紹 123
7.3.2 基于接口的調(diào)用 125
7.3.3 遠(yuǎn)程過程調(diào)用 126
7.4 本章小結(jié) 130
第8章 服務(wù)保護(hù)與網(wǎng)關(guān) 131
8.1 服務(wù)保護(hù) 131
8.1.1 理論依據(jù) 132
8.1.2 隔離 133
8.1.3 限流 135
8.1.4 降級(jí) 139
8.1.5 熔斷 142
8.1.6 恢復(fù) 144
8.2 服務(wù)網(wǎng)關(guān) 145
8.2.1 產(chǎn)生背景 145
8.2.2 功能 146
8.2.3 結(jié)構(gòu) 147
8.3 本章小結(jié) 147
第9章 冪等接口 148
9.1 概述 148
9.1.1 冪等接口概述 148
9.1.2 章節(jié)結(jié)構(gòu) 150
9.2 代數(shù)系統(tǒng) 151
9.2.1 代數(shù)系統(tǒng)的定義 151
9.2.2 特殊元素 151
9.2.3 冪等 154
9.3 函數(shù) 155
9.3.1 函數(shù)的定義 155
9.3.2 復(fù)合函數(shù) 157
9.4 復(fù)合函數(shù)的冪等化 157
9.4.1 函數(shù)的幺元化 157
9.4.2 函數(shù)的零元化 158
9.4.3 運(yùn)算的冪等化 160
9.4.4 復(fù)合函數(shù)冪等化總結(jié) 161
9.5 接口的幺元化 161
9.6 接口的零元化 162
9.7 調(diào)用的冪等化 163
9.7.1 判斷插入數(shù)據(jù) 163
9.7.2 判斷刪除數(shù)據(jù) 164
9.7.3 判斷數(shù)據(jù)版本 164
9.7.4 攔截重試調(diào)用 166
9.8 冪等接口總結(jié) 167
9.9 本章小結(jié) 168
工程篇
第10章 分布式中間件概述 171
第11章 RabbitMQ詳解 174
11.1 消息系統(tǒng)概述 174
11.1.1 消息系統(tǒng)模型 174
11.1.2 消息系統(tǒng)的應(yīng)用 175
11.2 RabbitMQ概述 177
11.3 RabbitMQ的組件 177
11.3.1 Exchange 177
11.3.2 Queue 178
11.3.3 Message 178
11.4 RabbitMQ的連接 179
11.4.1 生產(chǎn)者與Exchange 179
11.4.2 Exchange與Queue 180
11.4.3 Queue與消費(fèi)者 181
11.5 附加功能 182
11.5.1 投遞確認(rèn)功能 182
11.5.2 持久化功能 183
11.5.3 消費(fèi)確認(rèn)功能 183
11.5.4 逐條派發(fā)功能 184
11.5.5 RPC功能 184
11.6 模型與應(yīng)用 185
11.6.1 點(diǎn)對(duì)點(diǎn)模型 185
11.6.2 發(fā)布訂閱模型 186
11.7 本章小結(jié) 187
第12章 ZooKeeper詳解 188
12.1 單機(jī)配置與啟動(dòng) 188
12.1.1 運(yùn)行配置 189
12.1.2 啟動(dòng) 190
12.2 數(shù)據(jù)模型 191
12.2.1 時(shí)間語義 191
12.2.2 樹狀模型 192
12.2.3 znode的數(shù)據(jù)與狀態(tài) 192
12.2.4 znode的可選特性 194
12.2.5 znode的限額 196
12.2.6 znode權(quán)限設(shè)置 197
12.3 交互式命令行客戶端 201
12.3.1 設(shè)置命令 202
12.3.2 znode操作命令 203
12.3.3 使用示例 205
12.4 監(jiān)聽器 206
12.4.1 特性 206
12.4.2 事件通知 209
12.4.3 交互式命令行客戶端中的監(jiān)聽器 210
12.4.4 其他客戶端中的監(jiān)聽器 210
12.5 連接與會(huì)話 211
12.5.1 連接建立 211
12.5.2 服務(wù)器切換 214
12.5.3 會(huì)話狀態(tài) 215
12.5.4 連接監(jiān)聽器 216
12.6 集群模式 217
12.6.1 集群配置與啟動(dòng) 217
12.6.2 一致性實(shí)現(xiàn) 218
12.6.3 一致性級(jí)別討論 221
12.7 應(yīng)用示例 226
12.8 應(yīng)用場(chǎng)景 230
12.8.1 節(jié)點(diǎn)命名 231
12.8.2 服務(wù)發(fā)現(xiàn) 232
12.8.3 應(yīng)用配置 233
12.8.4 分布式鎖 233
12.9 本章小結(jié) 235
總結(jié)篇
第13章 再論分布式系統(tǒng) 238
13.1 分布式與一致性 238
13.2 本書脈絡(luò) 240
13.2.1 理論篇 240
13.2.2 實(shí)踐篇 242
13.2.3 工程篇 243
13.3 總結(jié)與展望 244
13.3.1 總結(jié) 244
13.3.2 展望 245
參考文獻(xiàn) 247