目錄
第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
· · · · · · (
收起)
評分
☆☆☆☆☆
翻譯質量差: they can limit a developer's ability to move at speed 本書翻譯:“它們可以限製開發人員快速移動的能力。” ---開發人員需要“快速移動”,是對開發人員工作有所誤解麼??原文“to move at speed”,應該是快速行動/快速開發吧。 補充:書看完瞭,翻譯錯誤、隨意、業餘,建議直接看剋裏斯.理查森那本。書的例子很簡單,能學到的不多,而且離最佳實踐很遠吧....豆瓣0評價,亞馬遜14個評價,建議大傢還是不要浪費時間瞭。 補充2:用的是python和go
評分
☆☆☆☆☆
翻譯質量差: they can limit a developer's ability to move at speed 本書翻譯:“它們可以限製開發人員快速移動的能力。” ---開發人員需要“快速移動”,是對開發人員工作有所誤解麼??原文“to move at speed”,應該是快速行動/快速開發吧。 補充:書看完瞭,翻譯錯誤、隨意、業餘,建議直接看剋裏斯.理查森那本。書的例子很簡單,能學到的不多,而且離最佳實踐很遠吧....豆瓣0評價,亞馬遜14個評價,建議大傢還是不要浪費時間瞭。 補充2:用的是python和go
評分
☆☆☆☆☆
翻譯質量差: they can limit a developer's ability to move at speed 本書翻譯:“它們可以限製開發人員快速移動的能力。” ---開發人員需要“快速移動”,是對開發人員工作有所誤解麼??原文“to move at speed”,應該是快速行動/快速開發吧。 補充:書看完瞭,翻譯錯誤、隨意、業餘,建議直接看剋裏斯.理查森那本。書的例子很簡單,能學到的不多,而且離最佳實踐很遠吧....豆瓣0評價,亞馬遜14個評價,建議大傢還是不要浪費時間瞭。 補充2:用的是python和go
評分
☆☆☆☆☆
翻譯質量差: they can limit a developer's ability to move at speed 本書翻譯:“它們可以限製開發人員快速移動的能力。” ---開發人員需要“快速移動”,是對開發人員工作有所誤解麼??原文“to move at speed”,應該是快速行動/快速開發吧。 補充:書看完瞭,翻譯錯誤、隨意、業餘,建議直接看剋裏斯.理查森那本。書的例子很簡單,能學到的不多,而且離最佳實踐很遠吧....豆瓣0評價,亞馬遜14個評價,建議大傢還是不要浪費時間瞭。 補充2:用的是python和go
評分
☆☆☆☆☆
翻譯質量差: they can limit a developer's ability to move at speed 本書翻譯:“它們可以限製開發人員快速移動的能力。” ---開發人員需要“快速移動”,是對開發人員工作有所誤解麼??原文“to move at speed”,應該是快速行動/快速開發吧。 補充:書看完瞭,翻譯錯誤、隨意、業餘,建議直接看剋裏斯.理查森那本。書的例子很簡單,能學到的不多,而且離最佳實踐很遠吧....豆瓣0評價,亞馬遜14個評價,建議大傢還是不要浪費時間瞭。 補充2:用的是python和go