本書主要講解如何能夠做好互聯(lián)網(wǎng)架構(gòu)設(shè)計,書中會詳盡介紹架構(gòu)的一些心得心法,不局限于具體的技術(shù)。大都是通用的技術(shù)意識和思維方法。書中會介紹作者在工作中遇到的實際案例和總結(jié)方法,闡述架構(gòu)設(shè)計中的一些方法論。如何能夠設(shè)計出穩(wěn)定、高可用的互聯(lián)網(wǎng)服務(wù)。希望通過本書的介紹,讓互聯(lián)網(wǎng)后臺的從業(yè)者,能夠受到些啟發(fā),早日成為架構(gòu)師,設(shè)計出更多更穩(wěn)定更高效的系統(tǒng)架構(gòu)。
從事互聯(lián)網(wǎng)后端研發(fā)工作十余年。曾就職于騰訊QQ后臺團隊,全程參與過多個大型系統(tǒng)的設(shè)計和開發(fā)。對設(shè)計高性能、高可用互聯(lián)網(wǎng)架構(gòu)有著豐富的經(jīng)驗。專注于架構(gòu)設(shè)計、系統(tǒng)重構(gòu)、維護擴展等方面的技術(shù)研究,總結(jié)相關(guān)知識,為團隊提供技術(shù)解決方案和培養(yǎng)架構(gòu)人才。
目 錄
第一部分 架構(gòu)簡介
第1章 架構(gòu)簡介 2
1.1 架構(gòu)的定義 2
1.2 對架構(gòu)師的要求 4
1.3 互聯(lián)網(wǎng)架構(gòu)的挑戰(zhàn) 7
1.4 一切盡在控制 8
1.5 小結(jié) 10
第二部分 架構(gòu)設(shè)計的技術(shù)方法
第2章 切分與擴展 16
2.1 切分 16
2.1.1 數(shù)據(jù)維度切分 16
2.1.2 邏輯維度切分 23
2.1.3 切分的優(yōu)點 24
2.2 擴展 25
2.2.1 部署擴展 25
2.2.2 升級擴展 27
2.2.3 set模型 29
2.3 小結(jié) 31
第3章 主動發(fā)現(xiàn) 33
3.1 日志 34
3.1.1 為什么要記日志 34
3.1.2 日志級別 35
3.1.3 日志類型 36
3.1.4 注意事項 38
3.2 監(jiān)控 40
3.3 主動發(fā)現(xiàn)的監(jiān)控標準 43
3.3.1 系統(tǒng)層監(jiān)控 43
3.3.2 用戶側(cè)監(jiān)控 44
3.3.3 應(yīng)用層監(jiān)控 45
3.4 其他形式的監(jiān)控 47
3.5 小結(jié) 49
第4章 自動化 52
4.1 自動部署 54
4.1.1 準備 54
4.1.2 實現(xiàn) 55
4.1.3 驗證 57
4.2 自動恢復(fù) 58
4.2.1 服務(wù)恢復(fù) 58
4.2.2 流量遷移 60
4.3 提升自動化意識 63
4.4 其他場景 64
4.5 小結(jié) 66
第5章 灰度升級 67
5.1 策略 68
5.1.1 按照用戶身份執(zhí)行灰度策略 68
5.1.2 按照號段執(zhí)行灰度策略 69
5.1.3 按照命令號執(zhí)行灰度策略 70
5.1.4 按照時間執(zhí)行灰度策略 71
5.2 灰度部署方式 73
5.2.1 藍綠部署/發(fā)布 73
5.2.2 金絲雀發(fā)布 74
5.3 注意事項 75
5.3.1 數(shù)據(jù)采樣 75
5.3.2 及時回滾 76
5.3.3 周期完全 76
5.3.4 測試完全 77
5.3.5 充分驗證 78
5.4 案例—系統(tǒng)遷移下線操作 79
5.4.1 驗證和比對 79
5.4.2 回滾 80
5.5 小結(jié) 81
第6章 過載保護 82
6.1 過載的現(xiàn)象及原因 82
6.1.1 什么是過載 82
6.1.2 過載現(xiàn)象及原因分析 85
6.2 處理方式 86
6.2.1 隔離 87
6.2.2 限流 88
6.2.3 節(jié)流和防抖 94
6.2.4 動態(tài)調(diào)節(jié) 95
6.2.5 盡早拒絕 96
6.2.6 調(diào)整緩沖區(qū)大小 97
6.2.7 減少重試 98
6.2.8 做好容量評估 98
6.3 小結(jié) 99
第7章 負載均衡 100
7.1 理論算法 100
7.1.1 基本輪詢 100
7.1.2 加權(quán)輪詢 102
7.1.3 隨機訪問 103
7.1.4 源地址Hash 104
7.1.5 最小連接數(shù) 105
7.1.6 映射分配 106
7.1.7 一致性Hash 107
7.2 動態(tài)負載均衡 110
7.3 常用組件 111
7.3.1 DNS 111
7.3.2 Nginx 111
7.3.3 LVS 113
7.3.4 NAT模式 113
7.3.5 DR模式 114
7.3.6 IP Tunneling模式 115
7.3.7 SDK組件 117
7.4 實際案例—Web類業(yè)務(wù)負載均衡實現(xiàn) 117
7.5 小結(jié) 119
第8章 柔性 120
8.1 理論基礎(chǔ) 122
8.1.1 CAP定理 122
8.1.2 BASE理論 124
8.2 柔性的實現(xiàn)方法 126
8.2.1 產(chǎn)品角度 127
8.2.2 技術(shù)角度 128
8.3 驗證方式 131
8.4 小結(jié) 132
第三部分 架構(gòu)思維意識
第9章 穩(wěn)定為王 137
9.1 控制因素 137
9.1.1 安全 137
9.1.2 變更 141
9.2 保障方法 144
9.2.1 合理拒絕 145
9.2.2 厘清主次關(guān)系 145
9.2.3 容量量化 147
9.2.4 預(yù)先準備 148
9.2.5 注重監(jiān)控 149
9.2.6 敬畏之心 150
9.3 應(yīng)對異常 152
9.3.1 處理事故 152
9.3.2 管理預(yù)期 153
9.3.3 復(fù)盤總結(jié) 153
9.3.4 有效預(yù)防 153
9.3.5 謹慎變更 154
9.4 小結(jié) 155
第10章 完成比完美重要 156
10.1 先扛住再優(yōu)化 156
10.1.1 快速搶占市場 157
10.1.2 實現(xiàn)先于性能 157
10.1.3 需求可能修改 158
10.1.4 驗證用戶行為 158
10.1.5 突發(fā)問題案例 158
10.2 最小可用,快速迭代 160
10.3 不要等待 160
10.4 接受不完美 161
10.4.1 分清主次 161
10.4.2 自動化降級 162
10.4.3 代價最低 162
10.5 及時償還技術(shù)債務(wù) 163
10.5.1 定期重構(gòu) 164
10.5.2 及時清理 165
10.5.3 對技術(shù)有追求 167
10.6 小結(jié) 167
第11章 聚沙成塔 168
11.1 小而簡潔 168
11.2 擴展能力 172
11.3 小結(jié) 173
第12章 自動化思維 175
12.1 拒絕重復(fù) 175
12.1.1 時間成本 175
12.1.2 解決重復(fù) 176
12.2 工具系統(tǒng)化 178
12.3 小結(jié) 180
第13章 產(chǎn)品思維 181
13.1 體驗業(yè)務(wù) 181
13.2 體驗競品 182
13.3 揚長避短 183
13.4 控制欲望 184
13.5 獻計獻策 185
13.6 反哺方案 185
13.7 小結(jié) 186
第四部分 善用工具
第14章 算法 189
14.1 樹狀數(shù)組 190
14.1.1 問題場景 190
14.1.2 排行榜實現(xiàn)及優(yōu)化方案 191
14.1.3 樹狀數(shù)組實現(xiàn)排行榜 191
14.1.4 樹狀數(shù)組優(yōu)化排行榜 195
14.2 多階Hash算法 196
14.2.1 原理 196
14.2.2 優(yōu)點 197
14.2.3 缺點 198
14.3 利用線性同余的一致性Hash算法 199
14.3.1 算法內(nèi)容 199
14.3.2 適用場景 199
14.3.3 實現(xiàn)原理 200
14.4 隨機數(shù)在互聯(lián)網(wǎng)業(yè)務(wù)中的應(yīng)用 203
14.4.1 隨機數(shù)的生成方法 203
14.4.2 誤用隨機數(shù)的場景 205
14.4.3 項目中用到隨機數(shù)的場景 207
14.5 小結(jié) 212
第15章 流程和文化 213
15.1 流程 213
15.1.1 需求階段 214
15.1.2 開發(fā)階段 215
15.1.3 測試階段 217
15.1.4 發(fā)布階段 219
15.1.5 運營階段 220
15.1.6 管理機制 221
15.2 文化 222
15.3 小結(jié) 223
第五部分 案例剖析
第16章 架構(gòu)案例剖析 226
16.1 小型案例—統(tǒng)計用戶在線時長 226
16.1.1 需求描述 226
16.1.2 項目背景 227
16.1.3 需求分析 228
16.1.4 實現(xiàn)方案 228
16.1.5 案例總結(jié) 230
16.2 中型案例—抽獎活動 231
16.2.1 需求描述 231
16.2.2 需求分析 231
16.2.3 實現(xiàn)方案 232
16.2.4 整體架構(gòu)設(shè)計 238
16.2.5 案例總結(jié) 240
16.3 大型案例—短網(wǎng)址服務(wù) 241
16.3.1 需求描述 241
16.3.2 需求分析 241
16.3.3 需求一:內(nèi)部使用 243
16.3.4 需求二:大型互聯(lián)網(wǎng)服務(wù)方案 246
16.4 小結(jié) 256