《微服務設計模式和最佳實踐》是2019年清華大學出版社出版的圖書,作者是維尼休斯·弗多薩·帕切科,本書介紹不同階段的微服務中應用程式開發的各種設計模式及其佳實踐。
基本介紹
- 中文名:微服務設計模式和最佳實踐
- 作者:維尼休斯·弗多薩·帕切科
- 譯者:程曉磊
- 出版社:清華大學出版社
- ISBN:9787302520412
內容簡介,圖書目錄,
內容簡介
本書詳細闡述了與微服務相關的基本解決方案,主要包括微服務概念、微服務工具、內部模式、微服務生態環境、共享數據微服務設計模式、聚合器微服務設計模式、代理微服務設計模式、鏈式微服務設計模式、分支微服務設計模式、異步訊息微服務、微服務間的協同工作、微服務測試以及安全監測和部署方案等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
圖書目錄
目 錄
第1章 微服務概念 1
1.1 理解應用程式 2
1.1.1 領域驅動設計 2
1.1.2 單一職責原則 4
1.1.3 顯式發布的接口 5
1.2 獨立部署、更新、擴展以及替換 7
1.2.1 獨立部署 7
1.2.2 更新 7
1.2.3 可擴展性 8
1.3 輕量級通信 12
1.3.1 同步 13
1.3.2 異步 13
1.4 異質/多語言 14
1.5 通信的文檔化 14
1.6 Web應用程式端點 15
1.7 移動應用程式端點 15
1.8 快取客戶端 16
1.9 調節客戶端 17
1.10 確定貧血域 17
1.11 確定fat域 18
1.12 針對業務確定微服務域 18
1.13 從域到實體 19
1.14 本章小結 20
第2章 微服務工具 21
2.1 程式語言 21
2.1.1 熟練程度 22
2.1.2 性能 22
2.1.3 實踐開發 23
2.1.4 生態圈 23
2.1.5 擴展性的開銷 24
2.1.6 選取程式語言 24
2.2 微服務框架 27
2.2.1 Python語言 27
2.2.2 Go語言 29
2.3 二進制通信—服務間的直接通信 31
2.3.1 理解通信方式 31
2.3.2 直接通信間的警示信息 35
2.4 訊息代理—服務間的異步通信 37
2.4.1 ActiveMQ 38
2.4.2 RabbitMQ 39
2.4.3 Kafka 40
2.5 快取工具 40
2.5.1 Memcached 42
2.5.2 Redis 42
2.6 故障警示工具 44
2.6.1 性能 44
2.6.2 構建 45
2.6.3 組件 46
2.6.4 實現鴻溝 47
2.7 資料庫 47
2.8 本地性能度量 48
2.8.1 Apache Benchmark 49
2.8.2 WRK 50
2.8.3 Locust 51
2.9 本章小結 53
第3章 內部模式 55
3.1 開發結構 55
3.1.1 資料庫 55
3.1.2 程式語言和工具 56
3.1.3 項目結構 56
3.2 快取策略 71
3.2.1 快取機制的套用 72
3.2.2 快取優先 78
3.2.3 佇列任務 79
3.2.4 異步機制和worker 81
3.3 CQRS—查詢策略 87
3.3.1 CQRS的概念 87
3.3.2 理解CQRS 88
3.3.3 CQRS的優點和缺陷 90
3.4 事件源—數據完整性 91
3.5 本章小結 92
第4章 微服務生態環境 93
4.1 容器中的分離機制 93
4.1.1 分層服務架構 95
4.1.2 分離UsersService 96
4.2 存儲分布 103
4.2.1 折舊數據 103
4.2.2 區域化數據 103
4.3 隔離—使用生態系統防止故障的出現 104
4.3.1 冗餘設計 104
4.3.2 臨界分區 109
4.3.3 隔離設計 110
4.3.4 快速故障 111
4.4 斷路器 112
4.5 本章小結 113
第5章 共享數據微服務設計模式 115
5.1 理解模式 115
5.2 將單體應用程式劃分為微服務 116
5.2.1 定義優先權 117
5.2.2 設定期限 117
5.2.3 定義應用程式域 117
5.2.4 試驗操作 117
5.2.5 制定標準 118
5.2.6 構建原型 118
5.2.7 傳送產品 118
5.2.8 開發新的微服務 118
5.3 數據編排 130
5.4 回響整合 132
5.5 微服務通信 132
5.6 存儲共享反模式 133
5.7 最佳實踐 133
5.8 測試機制 133
5.9 共享數據模式的利弊 135
5.10 本章小結 136
第6章 聚合器微服務設計模式 137
6.1 理解聚合器設計模式 137
6.2 使用CQRS和事件源 139
6.2.1 分離資料庫 139
6.2.2 重構微服務 140
6.3 微服務通信 153
6.3.1 創建編排器 154
6.3.2 使用訊息代理 159
6.4 模式擴展 163
6.5 瓶頸反模式 164
6.6 最佳實踐 166
6.7 測試 167
6.7.1 功能測試 167
6.7.2 集成測試 168
6.8 聚合器設計模式的優缺點 170
6.8.1 聚合器設計模式的優點 170
6.8.2 聚合器設計模式的缺點 170
6.9 本章小結 170
第7章 代理微服務設計模式 171
7.1 代理方案 171
7.1.1 啞代理 172
7.1.2 智慧型代理 172
7.1.3 理解當前代理 173
7.2 編排器的代理策略 175
7.3 微服務通信 176
7.4 模式擴展性 176
7.5 最佳實踐 177
7.5.1 純粹的模式 177
7.5.2 瓶頸問題 178
7.5.3 代理制的快取機制 178
7.5.4 簡單的回響 178
7.6 代理設計模式的優缺點 179
7.7 本章小結 179
第8章 鏈式微服務設計模式 181
8.1 理解模式 181
8.2 數據編排和回響整合 184
8.3 微服務通信 185
8.4 模式擴展性 185
8.5 “大泥球”反模式 186
8.6 最佳實踐方案 188
8.6.1 純微服務 188
8.6.2 請求一致性數據 188
8.6.3 深入理解鏈式設計模式 189
8.6.4 關注通信層 189
8.7 鏈式設計模式的優缺點 189
8.8 本章小結 190
第9章 分支微服務設計模式 191
9.1 理解模式 191
9.2 數據編排和回響整合 194
9.3 微服務通信 195
9.4 模式擴展 197
9.5 最佳實踐方案 198
9.5.1 域定義 198
9.5.2 遵守規則 198
9.5.3 關注物理組件 198
9.5.4 簡化行為 199
9.6 分支設計模式的優缺點 199
9.7 本章小結 199
第10章 異步訊息微服務 201
10.1 理解當前模式 201
10.2 域定義—RecommendationService 203
10.3 域定義—RecommendationService 204
10.4 微服務編碼 204
10.5 微服務通信 211
10.5.1 使用訊息代理和佇列 211
10.5.2 準備pub/sub結構 212
10.6 模式的可擴展性 214
10.7 進程式列反模式 214
10.8 最佳實踐方案 215
10.8.1 應用程式定義 215
10.8.2 不要嘗試創建回響 216
10.8.3 保持簡單性 216
10.9 異步訊息傳遞設計模式的優缺點 216
10.10 本章小結 217
第11章 微服務間的協同工作 219
11.1 理解當前應用程式狀態 219
11.1.1 公共飾面層 220
11.1.2 內部層 222
11.1.3 理解通用工具 223
11.2 通信層和服務間的委託 224
11.2.1 理解服務間的數據契約 225
11.2.2 使用二進制通信 228
11.3 模式分布 235
11.4 故障策略 236
11.5 API集成 237
11.6 本章小結 239
第12章 微服務測試 241
12.1 單元測試 241
12.2 針對集成測試配置容器 249
12.3 集成測試 251
12.4 端到端測試 253
12.5 發布管線 259
12.6 簽名測試 259
12.7 Monkey測試 260
12.8 Chaos Monkey 260
12.9 本章小結 262
第13章 安全監測和部署方案 263
13.1 監測微服務 263
13.1.1 監測單一服務 264
13.1.2 監測多項服務 266
13.1.3 查看日誌 267
13.1.4 應用程式中的錯誤 268
13.1.5 度量方法 271
13.2 安全問題 272
13.2.1 理解JWT 272
13.2.2 單點登錄 275
13.2.3 數據安全 276
13.2.4 預防惡意攻擊—識別攻擊行為 277
13.2.5 攔截器 277
13.2.6 容器 278
13.2.7 API網關 279
13.3 部署 279
13.3.1 持續集成和持續交付/持續部署 280
13.3.2 藍/綠部署模式和Canary發布 281
13.3.3 每台主機包含多個服務實例 282
13.3.4 每台主機的服務實例 283
13.4 本章小結 285