服務(wù)端開發(fā) 技術(shù)方法與實(shí)用解決方案
鏈接:https://pan.baidu.com/s/1Rytv7edVx_HA7VfQ-6nkkg?pwd=itaj?
提取碼:itaj

這是一本從開發(fā)流程、技術(shù)棧、典型問題解決方案和開發(fā)規(guī)范等維度全面講解服務(wù)端開發(fā)的。它衍生自作者在某互聯(lián)網(wǎng)科技公司內(nèi)講授的高口碑課程,是作者近10年服務(wù)端開發(fā)經(jīng)驗(yàn)的總結(jié),同時(shí)融合了業(yè)界在服務(wù)端開發(fā)方面的寶貴項(xiàng)目經(jīng)驗(yàn)和實(shí)踐智慧。
本書理論與實(shí)踐結(jié)合,擺脫編程語言、框架、中間件及傳統(tǒng)編程思想的束縛,全景式、體系化地闡述了服務(wù)端開發(fā),核心內(nèi)容括以下兩個(gè)分。
第一分:服務(wù)端開發(fā)的技術(shù)和方法
先,介紹了服務(wù)端開發(fā)的職責(zé)、技術(shù)棧、核心流程和進(jìn)路徑;然后,從需求分析、抽象建模、系統(tǒng)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)和非功能性設(shè)計(jì)5個(gè)方面展開,結(jié)合案例深入講解了服務(wù)端開發(fā)的實(shí)方法和重難點(diǎn),為讀者呈現(xiàn)出服務(wù)端開發(fā)的全景圖,幫助讀者快速、體系化地掌握服務(wù)端開發(fā)的相關(guān)知識(shí)和方法。
第二分:服務(wù)端典型問題的解決方案
針對(duì)高并發(fā)、高性能、高可用、緩存、數(shù)據(jù)一性、冪等、等服務(wù)端開發(fā)實(shí)踐中的典型問題,給出了對(duì)應(yīng)的解決方案和開發(fā)規(guī)范,同時(shí)還結(jié)合案例深入分析了不同方案的缺點(diǎn)。此外,還總結(jié)了接口設(shè)計(jì)、日志打印、異常處理、代碼編寫、代碼注釋等落地層面的行業(yè)案例和規(guī)范。

本書贊譽(yù)
前 言
第一分 技術(shù)與方法
第1章 走進(jìn)服務(wù)端開發(fā) 2
1.1 服務(wù)端開發(fā)概述 2
1.1.1 服務(wù)端開發(fā)的定義 2
1.1.2 服務(wù)端開發(fā)的職責(zé) 4
1.2 服務(wù)端開發(fā)技術(shù)棧 5
1.2.1 編程語言 5
1.2.2 開發(fā)工具 6
1.2.3 開發(fā)框架 8
1.2.4 數(shù)據(jù)庫與數(shù)據(jù)存儲(chǔ) 10
1.2.5 中間件 14
1.2.6 作系統(tǒng) 16
1.2.7 應(yīng)用署 19
1.2.8 運(yùn)維監(jiān)控 22
1.3 服務(wù)端開發(fā)核心流程 24
1.3.1 需求分析 24
1.3.2 抽象建?! ?6
1.3.3 系統(tǒng)設(shè)計(jì) 27
1.3.4 數(shù)據(jù)設(shè)計(jì) 30
1.3.5 非功能性設(shè)計(jì) 31
1.4 服務(wù)端開發(fā)進(jìn)路徑 33
1.4.1 構(gòu)建模型 33
1.4.2 業(yè)知識(shí)體系化 34
1.4.3 掌握學(xué)方法 35
1.4.4 技術(shù)與業(yè)務(wù)同行 36
1.4.5 樹立正確的觀念 37
第2章 需求分析 39
2.1 需求分類 39
2.1.1 產(chǎn)品需求 40
2.1.2 技術(shù)需求 40
2.2 需求分析的流程 40
2.2.1 學(xué)領(lǐng)域知識(shí) 41
2.2.2 明確業(yè)務(wù)目標(biāo) 42
2.2.3 明確業(yè)務(wù)用例 43
2.2.4 梳理用例場(chǎng)景 44
2.2.5 構(gòu)建業(yè)務(wù)模型 45
2.2.6 確認(rèn)業(yè)務(wù)規(guī)則 47
2.2.7 確認(rèn)需求 47
2.3 需求分析的常用方法 48
2.3.1 功能分析法 48
2.3.2 數(shù)據(jù)流分析法 51
2.3.3 面向?qū)ο蠓治龇ā ?5
2.4 需求分析的重點(diǎn)和難點(diǎn) 56
2.4.1 統(tǒng)一語言 56
2.4.2 識(shí)別問題 57
2.4.3 數(shù)據(jù)分析 58
2.4.4 細(xì)節(jié)陷阱 59
第3章 抽象建?! ?1
3.1 抽象思維 61
3.1.1 軟件中的抽象 61
3.1.2 提升抽象思維的方法 63
3.2 建模方法 65
3.2.1 問題空間和解決方案空間 65
3.2.2 什么是領(lǐng)域模型 66
3.2.3 為什么要建立領(lǐng)域模型 68
3.2.4 典型的建模方法 69
3.2.5 建模應(yīng)遵循的3個(gè)原則 71
3.3 用例建模法知識(shí)儲(chǔ)備 73
3.3.1 建?;A(chǔ) 73
3.3.2 什么是用例 74
3.3.3 挖掘用例的5個(gè)步驟 75
3.3.4 繪制用例圖的6個(gè)要素 78
3.4 用例建模法的4個(gè)實(shí)施步驟 80
3.4.1 提取模型 80
3.4.2 補(bǔ)充屬性 81
3.4.3 關(guān)系抽象 82
3.4.4 模型驗(yàn)證 84
3.5 建模小結(jié) 85
第4章 系統(tǒng)設(shè)計(jì) 87
4.1 大話系統(tǒng)設(shè)計(jì) 87
4.1.1 戰(zhàn)術(shù)編程腐蝕系統(tǒng) 87
4.1.2 系統(tǒng)復(fù)雜化的3個(gè)征 88
4.1.3 系統(tǒng)復(fù)雜化的3個(gè)誘因 89
4.1.4 復(fù)雜化應(yīng)對(duì)之道 90
4.2 總體架構(gòu) 91
4.2.1 什么是架構(gòu) 91
4.2.2 架構(gòu)推演 92
4.2.3 設(shè)計(jì)功能域 94
4.2.4 設(shè)計(jì)功能域協(xié)作 95
4.2.5 明確數(shù)據(jù)邊界 96
4.2.6 架構(gòu)約束考量 97
4.2.7 邏輯架構(gòu)粒度 98
4.2.8 小結(jié) 98
4.3 內(nèi)分層 99
4.3.1 什么是分層 99
4.3.2 功能域內(nèi)分層 101
4.3.3 分層原則 103
4.3.4 小結(jié) 105
4.4 詳細(xì)設(shè)計(jì) 106
4.4.1 設(shè)計(jì)內(nèi)容 106
4.4.2 設(shè)計(jì)原則 107
4.4.3 設(shè)計(jì)模式 109
4.4.4 小結(jié) 110
4.5 一圖勝千言 111
4.5.1 繪圖工具 111
4.5.2 “4+1”模型 112
4.5.3 C4模型 112
第5章 數(shù)據(jù)設(shè)計(jì) 117
5.1 數(shù)據(jù)設(shè)計(jì)概述 117
5.1.1 數(shù)據(jù)設(shè)計(jì)的步驟 117
5.1.2 概念數(shù)據(jù)模型 118
5.1.3 邏輯數(shù)據(jù)模型 119
5.1.4 物理數(shù)據(jù)模型 120
5.2 數(shù)據(jù)庫的分類 120
5.2.1 關(guān)系型數(shù)據(jù)庫 121
5.2.2 NoSQL數(shù)據(jù)庫 122
5.2.3 NewSQL數(shù)據(jù)庫 123
5.3 常用數(shù)據(jù)庫及其適用場(chǎng)景 124
5.3.1 常用的關(guān)系型數(shù)據(jù)庫 124
5.3.2 常用的NoSQL數(shù)據(jù)庫 127
5.3.3 存儲(chǔ)選型 130
5.4 存儲(chǔ)架構(gòu)演進(jìn) 131
5.4.1 單機(jī)模式 131
5.4.2 獨(dú)立主機(jī) 131
5.4.3 讀寫分離 132
5.4.4 垂直拆分 132
5.4.5 水平拆分 134
5.4.6 復(fù)合存儲(chǔ)方案 136
5.5 物理數(shù)據(jù)表設(shè)計(jì) 137
5.5.1 表設(shè)計(jì) 137
5.5.2 字段設(shè)計(jì) 139
5.5.3 索引設(shè)計(jì) 140
5.5.4 語句設(shè)計(jì) 142
第6章 非功能性設(shè)計(jì) 145
6.1 穩(wěn)定性設(shè)計(jì) 145
6.1.1 什么是穩(wěn)定性 145
6.1.2 容量評(píng)估 147
6.1.3 壓測(cè)摸底 151
6.1.4 風(fēng)險(xiǎn)識(shí)別 152
6.1.5 限流方案 152
6.1.6 降級(jí)方案 155
6.1.7 監(jiān)控告警 157
6.2 預(yù)案設(shè)計(jì) 158
6.2.1 為什么要做預(yù)案 158
6.2.2 如何做預(yù)案 159
6.3 可測(cè)性設(shè)計(jì) 160
6.3.1 可作 160
6.3.2 可灰度 161
6.3.3 可壓測(cè) 162
6.4 資金設(shè)計(jì) 162
6.4.1 資損風(fēng)險(xiǎn)分析 162
6.4.2 資損控三曲 163
6.4.3 一性 164
6.4.4 冪等 166
6.4.5 數(shù)據(jù)核對(duì) 167
6.4.6 數(shù)據(jù)監(jiān)控 169
6.4.7 應(yīng)急止損 170
6.5 其他非功能性設(shè)計(jì) 170
6.5.1 兼容性 171
6.5.2 異常/補(bǔ)償 172
6.5.3 擴(kuò)展性 174
第二分 解決方案
第7章 高并發(fā)問題及解決方案 176
7.1 高并發(fā)概述 176
7.1.1 并發(fā) 176
7.1.2 CPU密集型與I/O密
集型 177
7.1.3 高并發(fā) 178
7.2 資源擴(kuò)展策略 179
7.2.1 垂直擴(kuò)展 179
7.2.2 水平擴(kuò)展 180
7.2.3 負(fù)載均衡 183
7.3 數(shù)據(jù)緩存策略 187
7.3.1 本地緩存 187
7.3.2 分布式緩存 194
7.3.3 CDN 197
7.3.4 多級(jí)緩存 199
7.3.5 案例解析 200
7.4 流量削峰策略 202
7.4.1 消息隊(duì)列削峰 202
7.4.2 客戶端削峰 205
7.5 服務(wù)降級(jí)策略 206
7.5.1 降級(jí)范圍 207
7.5.2 降級(jí)的分類 207
7.6 限流策略 208
7.7 基本原則 208
第8章 緩存的典型問題及解決
方案 210
8.1 緩存預(yù)熱 210
8.1.1 應(yīng)用啟動(dòng)預(yù)熱策略 210
8.1.2 任務(wù)調(diào)度預(yù)熱策略 211
8.1.3 模擬請(qǐng)求預(yù)熱策略 215
8.1.4 小結(jié) 215
8.2 緩存淘汰 216
8.2.1 LRU 216
8.2.2 LFU 217
8.2.3 ARC 217
8.2.4 FIFO 219
8.3 緩存更新 219
8.3.1 Cache Aside模式 220
8.3.2 Read/Write Through模式 222
8.3.3 Write Behind Caching
模式 223
8.3.4 小結(jié) 224
8.4 緩存雪崩 224
8.4.1 緩存常駐策略 224
8.4.2 多級(jí)緩存策略 224
8.4.3 過期時(shí)間化策略 225
8.4.4 加鎖重建策略 226
8.5 緩存穿透 227
8.5.1 緩存空值策略 227
8.5.2 布隆過濾器策略 227
8.5.3 布谷鳥過濾器策略 231
8.6 緩存熱點(diǎn) 232
8.6.1 前置緩存策略 232
8.6.2 熱點(diǎn)散列策略 233
第9章 緩存數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)一性
問題及解決方案 235
9.1 CAP 理論簡(jiǎn)介 235
9.1.1 CAP定義解讀 235
9.1.2 三個(gè)核心需求不可兼得 236
9.2 緩存數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)不一的
原因 238
9.2.1 作時(shí)序?qū)?shù)據(jù)不一 238
9.2.2 作失敗導(dǎo)數(shù)據(jù)不一 239
9.2.3 不可實(shí)現(xiàn)的對(duì)一性 241
9.3 延時(shí)雙刪 242
9.3.1 原理及實(shí)施步驟 242
9.3.2 如何確定延時(shí) 243
9.3.3 點(diǎn)與不足 244
9.4 基于binlog異步刪除緩存 244
9.4.1 MySQL主從同步原理 244
9.4.2 感知數(shù)據(jù)庫變更 246
9.4.3 客戶端訂閱變更 246
9.4.4 消息隊(duì)列訂閱變更 247
9.4.5 刪除緩存 249
9.5 自動(dòng)過期加失敗補(bǔ)償 250
第10章 分布式系統(tǒng)冪等問題及
解決方案 251
10.1 冪等概述 251
10.1.1 冪等場(chǎng)景舉例 251
10.1.2 什么是冪等 252
10.1.3 為什么需要冪等 253
10.1.4 并發(fā)與冪等 254
10.2 冪等實(shí)現(xiàn)四曲 255
10.2.1 副作用分析 255
10.2.2 冪等號(hào)設(shè)計(jì) 255
10.2.3 冪等數(shù)據(jù)持久化設(shè)計(jì) 258
10.2.4 冪等處理流程設(shè)計(jì) 259
10.3 典型冪等策略 261
10.3.1 索引策略 261
10.3.2 悲觀鎖策略 263
10.3.3 分布式鎖策略 264
10.3.4 其他策略 266
10.4 冪等號(hào)生成 266
10.4.1 客戶端與服務(wù)端冪等 266
10.4.2 服務(wù)端系統(tǒng)間冪等 268
10.5 冪等注意事項(xiàng) 268
第11章 系統(tǒng)關(guān)鍵問題及解決
方案 271
11.1 主要技術(shù)難點(diǎn) 271
11.1.1 高并發(fā) 271
11.1.2 高可用 273
11.1.3 一性 273
11.1.4 反作弊 274
11.2 電商平臺(tái)的運(yùn)作全景圖 275
11.2.1 模型 275
11.2.2 扣減模式 276
11.2.3 扣減執(zhí)行流程 276
11.2.4 查詢 277
11.2.5 核心鏈路 277
11.3 架構(gòu)演進(jìn) 279
11.3.1 獨(dú)立主機(jī) 279
11.3.2 分庫分表 280
11.3.3 熱點(diǎn)處理 280
11.4 單元化 282
11.4.1 中心化烏云 282
11.4.2 化困境 285
11.4.3 單元封閉 285
11.4.4 全局與局 287
11.4.5 回收難點(diǎn) 290
11.4.6 全局可見性 292
第12章 常見性能瓶頸及解決
方案 294
12.1 軟件性能概述 294
12.1.1 如何理解軟件性能 294
12.1.2 軟件性能評(píng)指標(biāo) 295
12.1.3 性能瓶頸與分析要素 296
12.2 CPU 296
12.2.1 線程與進(jìn)程 297
12.2.2 CPU使用率 300
12.2.3 平均負(fù)載 302
12.2.4 CPU使用率與平均負(fù)載的
差異 304
12.2.5 瓶頸表征及解決方案 305
12.3 內(nèi)存 307
12.3.1 內(nèi)存使用率 308
12.3.2 殊內(nèi)存 309
12.3.3 內(nèi)存回收 310
12.3.4 瓶頸表征及解決方案 311
12.4 磁盤 312
12.4.1 Linux I/O?! ?13
12.4.2 磁盤交互 315
12.4.3 主要性能指標(biāo) 318
12.4.4 瓶頸表征及解決方案 319
第13章 高可用問題及解決方案 321
13.1 高可用概述 321
13.1.1 什么是高可用 321
13.1.2 為什么需要高可用 322
13.1.3 穩(wěn)定性與高可用 323
13.2 高可用設(shè)計(jì)原則 324
13.2.1 減少潛在風(fēng)險(xiǎn)的數(shù)量 324
13.2.2 減小故障的影響范圍 324
13.2.3 縮短故障的影響時(shí)間 325
13.3 接入層高可用 326
13.3.1 負(fù)載均衡 326
13.3.2 Keepalived 327
13.3.3 ECMP 328
13.4 業(yè)務(wù)層高可用 329
13.4.1 無狀態(tài)服務(wù) 329
13.4.2 集群署 331
13.4.3 依賴處理 332
13.4.4 重試機(jī)制 333
13.4.5 冪等設(shè)計(jì) 334
13.4.6 服務(wù)降級(jí) 334
13.4.7 服務(wù)限流 335
13.4.8 監(jiān)控預(yù)警 335
13.5 數(shù)據(jù)層高可用 336
13.5.1 副本機(jī)制 337
13.5.2 數(shù)據(jù)復(fù)制模式 337
13.5.3 利用Raft算法實(shí)現(xiàn)數(shù)據(jù)
復(fù)制 338
13.5.4 利用Raft算法實(shí)現(xiàn)故障
轉(zhuǎn)移 345
13.5.5 數(shù)據(jù)分片 347
13.5.6 緩存高可用 348
第14章 服務(wù)端開發(fā)實(shí)用規(guī)范 349
14.1 實(shí)用API設(shè)計(jì)規(guī)范 349
14.1.1 明確邊界 349
14.1.2 “命令,不要去詢問”
原則 351
14.1.3 單一職責(zé)原則 353
14.1.4 不要基于實(shí)現(xiàn)設(shè)計(jì)API 355
14.1.5 異常模式或錯(cuò)誤碼模式 355
14.1.6 避使用帶有標(biāo)識(shí)的
參數(shù) 357
14.1.7 API如其名 358
14.1.8 建立文檔 358
14.1.9 統(tǒng)一風(fēng)格 359
14.2 實(shí)用日志規(guī)范 359
14.2.1 基本規(guī)范 359
14.2.2 級(jí)別規(guī)范 360
14.2.3 格式規(guī)范 360
14.2.4 其他規(guī)范 361
14.3 實(shí)用異常處理規(guī)范 362
14.3.1 異常處理機(jī)制 362
14.3.2 常用處理規(guī)范 363
14.4 實(shí)用代碼編寫規(guī)范 364
14.4.1 大道簡(jiǎn) 364
14.4.2 重復(fù)有度 365
14.4.3 快速失敗原則 367
14.5 實(shí)用注釋規(guī)范 369
14.5.1 復(fù)雜的邏輯 370
14.5.2 晦澀的算法 370
14.5.3 殊的常量 371
14.5.4 非常規(guī)寫法 371
14.5.5 對(duì)外API 372
14.5.6 法律文件 373