高性能架構之道:分佈式、並發編程、數據庫調優、緩存設計、IO模型、前端優化、高可用

易哥

買這商品的人也買了...

商品描述

本書是一本理論聯系實際的軟件架構設計指導書,旨在幫助讀者完成高性能軟件系統的架構設計工作。書中涉及分佈式、並發編程、數據庫調優、緩存、IO、前端性能優化等方面的理論知識,並在理論知識的基礎上推導其實踐技巧。本書最後還運用書中知識完成了一個實際軟件項目的架構設計工作。本書適合軟件架構師、工程師、學生閱讀,以幫助其完善軟件開發知識體系和提升其軟件架構設計能力。

作者簡介

易哥(筆名),畢業於浙江大學、山東大學,高級軟件系統架構師、網絡工程師、數據庫工程師、軟件測試工程師、註冊電氣工程師。
在校成績前1%,獲得國家獎學金兩次,一等獎學金四次,科技創新大賽一等獎三次,以及五四青年科學獎等。
主要科研方向為機器學習、分佈式算法、容錯算法在無線傳感網絡中的應用,相關論文獲得IEEE通信協會最佳論文獎。
曾擔任網站技術部門負責人,具有豐富的互聯網開發經驗。
先後設計和實現了眾多系統和平台,也是活躍的開源開發者。
現專注軟件系統架構設計與後端開發,著有書籍《通用源碼閱讀指導書》《高性能架構之道》等。

目錄大綱

第1章高性能架構001
1.1軟件架構001
1.2軟件的質量003
1.3高性能概述004
1.4軟件性能指標005
1.4.1吞吐量006
1.4.2並發數006
1.4.3平均響應時間007
1.4.4可靠性指標008
1.5性能指標之間的關係009
1.5.1並發數對吞吐量的影響009
1.5.2並發數對平均響應時間的影響011
1.5.3平均響應時間對並發數的影響012
1.5.4可靠性指標與其他指標的關係013
1.6高性能架構總結013

第2章分流設計014
2.1內容分發網絡014
2.1.1內容分發網絡的結構015
2.1.2內容分發網絡的原理017
2.2多地址直連019
2.3反向代理021

第3章服務並行設計026
3. 1並行與並發026
3.2集群系統028
3.2.1無狀態的節點集群028
3.2.2單一服務節點集群029
3.2.3信息共享的節點集群031
3.2.4信息一致的節點集群032
3.3分佈式系統034
3.4微服務系統036

第4章運算並發038
4.1多進程038
4.2多線程039
4.2.1線程的狀態及轉換039
4.2.2多線程的應用場景041
4.2.3多線程的創建042
4.2.4線程池046
4.2.5多線程資源協作050
4.2.6多線程進度協作056
4.3多協程069
4 .4運算並發總結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章數據庫設計與優化090
6.1數據庫設計概述090
6.2關係型數據庫設計091
6.2.1設計範式介紹093
6.2.2反範式設計101
6.3索引原理與優化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事務並發導致的問題123
6.7.2事務隔離級別124
6.7.3自建事務126
6.8巨量數據的優化128
6.8.1表分區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靜態緩存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資源下載優化203
10.2.1資源壓縮203
10.2.2減少請求205
10.2.3資源緩存210
10.3頁面解析優化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軟件開發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數據源動態切換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