高性能架構(gòu)之道:分布式、并發(fā)編程、數(shù)據(jù)庫調(diào)優(yōu)、緩存設計、IO模型、前端優(yōu)化、高可用
定 價:89 元
- 作者:易哥
- 出版時間:2021/3/1
- ISBN:9787121404870
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.1
- 頁碼:292
- 紙張:
- 版次:01
- 開本:16開
本書是一本理論聯(lián)系實際的軟件架構(gòu)設計指導書,旨在幫助讀者完成高性能軟件系統(tǒng)的架構(gòu)設計工作。書中涉及分布式、并發(fā)編程、數(shù)據(jù)庫調(diào)優(yōu)、緩存、IO、前端性能優(yōu)化等方面的理論知識,并在理論知識的基礎上推導其實踐技巧。本書最后還運用書中知識完成了一個實際軟件項目的架構(gòu)設計工作。本書適合軟件架構(gòu)師、工程師、學生閱讀,以幫助其完善軟件開發(fā)知識體系和提升其軟件架構(gòu)設計能力。
易哥(筆名),畢業(yè)于浙江大學、山東大學,高級軟件系統(tǒng)架構(gòu)師、網(wǎng)絡工程師、數(shù)據(jù)庫工程師、軟件測試工程師、注冊電氣工程師。在校成績前1%,獲得國家獎學金兩次,一等獎學金四次,科技創(chuàng)新大賽一等獎三次,以及五四青年科學獎等。主要科研方向為機器學習、分布式算法、容錯算法在無線傳感網(wǎng)絡中的應用,相關(guān)論文獲得IEEE通信協(xié)會最佳論文獎。曾擔任網(wǎng)站技術(shù)部門負責人,具有豐富的互聯(lián)網(wǎng)開發(fā)經(jīng)驗。先后設計和實現(xiàn)了眾多系統(tǒng)和平臺,也是活躍的開源開發(fā)者,F(xiàn)專注軟件系統(tǒng)架構(gòu)設計與后端開發(fā),著有書籍《通用源碼閱讀指導書》《高性能架構(gòu)之道》等。
第1章 高性能架構(gòu) 001
1.1 軟件架構(gòu) 001
1.2 軟件的質(zhì)量 003
1.3 高性能概述 004
1.4 軟件性能指標 005
1.4.1 吞吐量 006
1.4.2 并發(fā)數(shù) 006
1.4.3 平均響應時間 007
1.4.4 可靠性指標 008
1.5 性能指標之間的關(guān)系 009
1.5.1 并發(fā)數(shù)對吞吐量的影響 009
1.5.2 并發(fā)數(shù)對平均響應時間的影響 011
1.5.3 平均響應時間對并發(fā)數(shù)的影響 012
1.5.4 可靠性指標與其他指標的關(guān)系 013
1.6 高性能架構(gòu)總結(jié) 013
第2章 分流設計 014
2.1 內(nèi)容分發(fā)網(wǎng)絡 014
2.1.1 內(nèi)容分發(fā)網(wǎng)絡的結(jié)構(gòu) 015
2.1.2 內(nèi)容分發(fā)網(wǎng)絡的原理 017
2.2 多地址直連 019
2.3 反向代理 021
第3章 服務并行設計 026
3.1 并行與并發(fā) 026
3.2 集群系統(tǒng) 028
3.2.1 無狀態(tài)的節(jié)點集群 028
3.2.2 單一服務節(jié)點集群 029
3.2.3 信息共享的節(jié)點集群 031
3.2.4 信息一致的節(jié)點集群 032
3.3 分布式系統(tǒng) 034
3.4 微服務系統(tǒng) 036
第4章 運算并發(fā) 038
4.1 多進程 038
4.2 多線程 039
4.2.1 線程的狀態(tài)及轉(zhuǎn)換 039
4.2.2 多線程的應用場景 041
4.2.3 多線程的創(chuàng)建 042
4.2.4 線程池 046
4.2.5 多線程資源協(xié)作 050
4.2.6 多線程進度協(xié)作 056
4.3 多協(xié)程 069
4.4 運算并發(fā)總結(jié) 072
第5章 輸入輸出設計 074
5.1 概念梳理 074
5.1.1 同步與異步 074
5.1.2 阻塞與非阻塞 075
5.2 IO模型 077
5.3 IO模型的層級關(guān)系 078
5.4 阻塞式IO模型 079
5.5 非阻塞式IO模型 081
5.6 信號驅(qū)動式IO模型 082
5.7 復用式IO模型 083
5.8 異步式IO模型 086
5.9 輸入輸出模型總結(jié) 088
第6章 數(shù)據(jù)庫設計與優(yōu)化 090
6.1 數(shù)據(jù)庫設計概述 090
6.2 關(guān)系型數(shù)據(jù)庫設計 091
6.2.1 設計范式介紹 093
6.2.2 反范式設計 101
6.3 索引原理與優(yōu)化 102
6.3.1 索引的原理 103
6.3.2 索引生效分析 107
6.3.3 索引的使用 109
6.3.4 索引的利弊 116
6.4 數(shù)據(jù)庫引擎 116
6.5 數(shù)據(jù)庫鎖 117
6.5.1 樂觀鎖 118
6.5.2 悲觀鎖 119
6.6 死鎖 120
6.7 事務 122
6.7.1 事務并發(fā)導致的問題 123
6.7.2 事務隔離級別 124
6.7.3 自建事務 126
6.8 巨量數(shù)據(jù)的優(yōu)化 128
6.8.1 表分區(qū) 128
6.8.2 分庫分表 132
6.8.3 讀寫分離 134
6.9 非傳統(tǒng)數(shù)據(jù)庫 138
6.9.1 內(nèi)存數(shù)據(jù)庫 139
6.9.2 列存儲數(shù)據(jù)庫 140
6.9.3 面向?qū)ο髷?shù)據(jù)庫 140
6.9.4 文檔數(shù)據(jù)庫 140
6.9.5 圖數(shù)據(jù)庫 141
6.10 數(shù)據(jù)庫中間件 141
第7章 緩存設計 143
7.1 緩存的收益 143
7.2 緩存的鍵與值 145
7.2.1 緩存的鍵 145
7.2.2 緩存的值 149
7.3 緩存的更新機制 151
7.3.1 時效性更新機制 151
7.3.2 主動更新機制 152
7.4 緩存的清理機制 155
7.4.1 時效式清理 156
7.4.2 數(shù)目閾值式清理 157
7.4.3 非強引用式清理 161
7.4.4 清理策略使用實踐 164
7.5 緩存的風險點 165
7.5.1 緩存穿透 165
7.5.2 緩存雪崩 166
7.5.3 緩存擊穿 166
7.5.4 緩存預熱 167
7.6 緩存的位置 168
7.6.1 客戶端緩存 169
7.6.2 靜態(tài)緩存 172
7.6.3 服務緩存 173
7.6.4 數(shù)據(jù)庫緩存 173
7.7 寫緩存 174
7.7.1 寫緩存的收益問題 175
7.7.2 寫緩存實踐 175
第8章 可靠性設計 177
8.1 軟件可靠性概述 177
8.2 軟件可靠性指標 178
8.2.1 失效概率 178
8.2.2 失效強度 179
8.2.3 失效率 179
8.3 模塊連接方式與可靠性 179
8.3.1 串聯(lián)系統(tǒng)的可靠性 179
8.3.2 并聯(lián)系統(tǒng)的可靠性 180
8.3.3 冗余系統(tǒng)的可靠性 180
8.3.4 模塊連接方式的可靠性討論 181
8.4 軟件失效模型 181
8.5 可靠性設計 182
8.5.1 消除單點依賴 183
8.5.2 化串聯(lián)為并聯(lián) 183
8.5.3 采用集群 184
第9章 應用保護 185
9.1 應用保護概述 185
9.2 隔離 187
9.3 限流 189
9.3.1 時間窗限流法 189
9.3.2 漏桶限流法 190
9.3.3 令牌限流法 192
9.4 降級 193
9.5 熔斷 196
9.6 恢復 198
第10章 前端高性能 200
10.1 前端工作分析 200
10.1.1 前端加載過程 200
10.1.2 前端性能分析 201
10.2 資源下載優(yōu)化 203
10.2.1 資源壓縮 203
10.2.2 減少請求 205
10.2.3 資源緩存 210
10.3 頁面解析優(yōu)化 214
10.3.1 順應解析流程 214
10.3.2 應用新型前端框架 216
10.4 懶加載 216
10.5 預操作 217
第11章 架構(gòu)設計理論 219
11.1 軟件架構(gòu)風格 219
11.1.1 管道過濾器架構(gòu)風格 220
11.1.2 面向?qū)ο蠹軜?gòu)風格 220
11.1.3 基于組件的架構(gòu)風格 221
11.1.4 事件驅(qū)動架構(gòu)風格 221
11.1.5 分層架構(gòu)風格 221
11.1.6 C/S架構(gòu)風格 222
11.1.7 三層C/S架構(gòu)風格 223
11.1.8 B/S架構(gòu)風格 224
11.2 軟件生命周期 225
11.2.1 需求階段 226
11.2.2 模型設計 227
11.2.3 概要設計 228
11.2.4 詳細設計 228
11.2.5 質(zhì)量指標設計 229
11.2.6 方案預研 229
11.2.7 軟件開發(fā) 229
第12章 高性能架構(gòu)實踐 231
12.1 需求概述 231
12.2 權(quán)限系統(tǒng)的相關(guān)理論 234
12.2.1 權(quán)限模型 234
12.2.2 訪問控制方式 240
12.3 模型設計 241
12.3.1 模型調(diào)研 241
12.3.2 模型應用 242
12.4 概要設計 249
12.5 數(shù)據(jù)層詳細設計 253
12.5.1 RBAC數(shù)據(jù)表的范式設計 253
12.5.2 RBAC數(shù)據(jù)表的反范式設計 254
12.5.3 RBAC數(shù)據(jù)表的最終設計 255
12.5.4 MatrixAuth管理類數(shù)據(jù)表設計 257
12.5.5 MatrixAuth的數(shù)據(jù)層結(jié)構(gòu) 259
12.6 緩存詳細設計 260
12.7 服務端詳細設計 261
12.7.1 數(shù)據(jù)源動態(tài)切換 261
12.7.2 數(shù)據(jù)冗余的一致性保證 263
12.7.3 服務端的操作接口 263
12.8 客戶端詳細設計 265
12.8.1 可控角色的權(quán)限驗證 265
12.8.2 自由角色的權(quán)限驗證 267
12.8.3 用戶信息、角色關(guān)聯(lián)信息推送 268
12.9 MatrixAuth項目實踐總結(jié) 268
12.9.1 MatrixAuth的高性能設計 268
12.9.2 需求完成度分析 270
12.9.3 MatrixAuth的使用簡介 270
參考文獻 273