高性能架構之道:分布式、并發(fā)編程、數據庫調優(yōu)、緩存設計、IO模型、前端優(yōu)化、高可用
定 價:89 元
當前圖書已被 65 所學校薦購過!
查看明細
- 作者:易哥
- 出版時間:2021/3/1
- ISBN:9787121404870
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.1
- 頁碼:292
- 紙張:
- 版次:01
- 開本:16開
本書是一本理論聯系實際的軟件架構設計指導書,旨在幫助讀者完成高性能軟件系統的架構設計工作。書中涉及分布式、并發(fā)編程、數據庫調優(yōu)、緩存、IO、前端性能優(yōu)化等方面的理論知識,并在理論知識的基礎上推導其實踐技巧。本書最后還運用書中知識完成了一個實際軟件項目的架構設計工作。本書適合軟件架構師、工程師、學生閱讀,以幫助其完善軟件開發(fā)知識體系和提升其軟件架構設計能力。
易哥(筆名),畢業(yè)于浙江大學、山東大學,高級軟件系統架構師、網絡工程師、數據庫工程師、軟件測試工程師、注冊電氣工程師。在校成績前1%,獲得國家獎學金兩次,一等獎學金四次,科技創(chuàng)新大賽一等獎三次,以及五四青年科學獎等。主要科研方向為機器學習、分布式算法、容錯算法在無線傳感網絡中的應用,相關論文獲得IEEE通信協會最佳論文獎。曾擔任網站技術部門負責人,具有豐富的互聯網開發(fā)經驗。先后設計和實現了眾多系統和平臺,也是活躍的開源開發(fā)者。現專注軟件系統架構設計與后端開發(fā),著有書籍《通用源碼閱讀指導書》《高性能架構之道》等。
第1章 高性能架構 001
1.1 軟件架構 001
1.2 軟件的質量 003
1.3 高性能概述 004
1.4 軟件性能指標 005
1.4.1 吞吐量 006
1.4.2 并發(fā)數 006
1.4.3 平均響應時間 007
1.4.4 可靠性指標 008
1.5 性能指標之間的關系 009
1.5.1 并發(fā)數對吞吐量的影響 009
1.5.2 并發(fā)數對平均響應時間的影響 011
1.5.3 平均響應時間對并發(fā)數的影響 012
1.5.4 可靠性指標與其他指標的關系 013
1.6 高性能架構總結 013
第2章 分流設計 014
2.1 內容分發(fā)網絡 014
2.1.1 內容分發(fā)網絡的結構 015
2.1.2 內容分發(fā)網絡的原理 017
2.2 多地址直連 019
2.3 反向代理 021
第3章 服務并行設計 026
3.1 并行與并發(fā) 026
3.2 集群系統 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 分布式系統 034
3.4 微服務系統 036
第4章 運算并發(fā) 038
4.1 多進程 038
4.2 多線程 039
4.2.1 線程的狀態(tài)及轉換 039
4.2.2 多線程的應用場景 041
4.2.3 多線程的創(chuàng)建 042
4.2.4 線程池 046
4.2.5 多線程資源協作 050
4.2.6 多線程進度協作 056
4.3 多協程 069
4.4 運算并發(fā)總結 072
第5章 輸入輸出設計 074
5.1 概念梳理 074
5.1.1 同步與異步 074
5.1.2 阻塞與非阻塞 075
5.2 IO模型 077
5.3 IO模型的層級關系 078
5.4 阻塞式IO模型 079
5.5 非阻塞式IO模型 081
5.6 信號驅動式IO模型 082
5.7 復用式IO模型 083
5.8 異步式IO模型 086
5.9 輸入輸出模型總結 088
第6章 數據庫設計與優(yōu)化 090
6.1 數據庫設計概述 090
6.2 關系型數據庫設計 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 數據庫引擎 116
6.5 數據庫鎖 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 巨量數據的優(yōu)化 128
6.8.1 表分區(qū) 128
6.8.2 分庫分表 132
6.8.3 讀寫分離 134
6.9 非傳統數據庫 138
6.9.1 內存數據庫 139
6.9.2 列存儲數據庫 140
6.9.3 面向對象數據庫 140
6.9.4 文檔數據庫 140
6.9.5 圖數據庫 141
6.10 數據庫中間件 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 數目閾值式清理 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 數據庫緩存 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 串聯系統的可靠性 179
8.3.2 并聯系統的可靠性 180
8.3.3 冗余系統的可靠性 180
8.3.4 模塊連接方式的可靠性討論 181
8.4 軟件失效模型 181
8.5 可靠性設計 182
8.5.1 消除單點依賴 183
8.5.2 化串聯為并聯 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章 架構設計理論 219
11.1 軟件架構風格 219
11.1.1 管道過濾器架構風格 220
11.1.2 面向對象架構風格 220
11.1.3 基于組件的架構風格 221
11.1.4 事件驅動架構風格 221
11.1.5 分層架構風格 221
11.1.6 C/S架構風格 222
11.1.7 三層C/S架構風格 223
11.1.8 B/S架構風格 224
11.2 軟件生命周期 225
11.2.1 需求階段 226
11.2.2 模型設計 227
11.2.3 概要設計 228
11.2.4 詳細設計 228
11.2.5 質量指標設計 229
11.2.6 方案預研 229
11.2.7 軟件開發(fā) 229
第12章 高性能架構實踐 231
12.1 需求概述 231
12.2 權限系統的相關理論 234
12.2.1 權限模型 234
12.2.2 訪問控制方式 240
12.3 模型設計 241
12.3.1 模型調研 241
12.3.2 模型應用 242
12.4 概要設計 249
12.5 數據層詳細設計 253
12.5.1 RBAC數據表的范式設計 253
12.5.2 RBAC數據表的反范式設計 254
12.5.3 RBAC數據表的最終設計 255
12.5.4 MatrixAuth管理類數據表設計 257
12.5.5 MatrixAuth的數據層結構 259
12.6 緩存詳細設計 260
12.7 服務端詳細設計 261
12.7.1 數據源動態(tài)切換 261
12.7.2 數據冗余的一致性保證 263
12.7.3 服務端的操作接口 263
12.8 客戶端詳細設計 265
12.8.1 可控角色的權限驗證 265
12.8.2 自由角色的權限驗證 267
12.8.3 用戶信息、角色關聯信息推送 268
12.9 MatrixAuth項目實踐總結 268
12.9.1 MatrixAuth的高性能設計 268
12.9.2 需求完成度分析 270
12.9.3 MatrixAuth的使用簡介 270
參考文獻 273