第 一部分 動機和基礎知識
第 1章 預備知識 2
1.1 微服務概述 2
1.2 為什么采用微服務 3
1.3 挑戰(zhàn) 5
1.4 總結 6
第 2章 微服務應用案例 7
2.1 遺留電商應用的技術更新 7
2.2 開發(fā)一個新的信號系統(tǒng) 13
2.3 總結 15
第二部分 微服務是什么,用還是不用
第3章 什么是微服務 18
3.1 微服務的大小 18
3.2 康威定律 24
3.3 領域驅動設計與限界上下文 27
3.4 為什么要遠離標準數據模型 32
3.5 微服務要不要包含UI 34
3.6 總結 35
第4章 采用微服務的原因 37
4.1 技術優(yōu)勢 37
4.2 組織上的優(yōu)勢 42
4.3 業(yè)務方面的優(yōu)勢 44
4.4 總結 45
第5章 挑戰(zhàn) 47
5.1 技術挑戰(zhàn) 47
5.2 架構 50
5.3 基礎設施與運維 52
5.4 總結 53
第6章 微服務與SOA 55
6.1 什么是SOA 55
6.2 SOA與微服務的區(qū)別 59
6.3 總結 62
第三部分 微服務的實現
第7章 微服務系統(tǒng)架構 68
7.1 領域架構 68
7.2 架構管理 71
7.3 調整架構的技術 75
7.4 增長的微服務系統(tǒng) 81
7.5 別錯過出口:如何避免微服務的退化 84
7.6 微服務與遺留應用 86
7.7 潛在的依賴 91
7.8 事件驅動架構 92
7.9 技術架構 93
7.10 配置與協(xié)調 95
7.11 服務發(fā)現 97
7.12 負載均衡 99
7.13 可伸縮性 102
7.14 安全性 104
7.15 文檔與元數據 109
7.16 總結 110
第8章 集成與通信 112
8.1 Web與UI 112
8.2 REST 121
8.3 SOAP與RPC 123
8.4 消息 124
8.5 數據復制 126
8.6 內部接口與外部接口 128
8.7 總結 130
第9章 單個微服務架構 133
9.1 領域架構 133
9.2 CQRS 134
9.3 事件溯源 136
9.4 六邊形架構 138
9.5 容錯性和穩(wěn)定性 141
9.6 技術架構 144
9.7 總結 146
第 10章 微服務與微服務系統(tǒng)的測試 148
10.1 為什么需要測試 148
10.2 如何測試 149
10.3 降低部署的風險 153
10.4 系統(tǒng)整體的測試 154
10.5 遺留應用與微服務的測試 157
10.6 各個微服務的測試 159
10.7 消費者驅動的契約測試 160
10.8 技術標準的測試 163
10.9 總結 164
第 11章 微服務的運維及持續(xù)交付 165
11.1 微服務運維的挑戰(zhàn) 165
11.2 日志 167
11.3 監(jiān)控 171
11.4 部署 176
11.5 聯合部署還是獨立部署 179
11.6 控制 180
11.7 基礎設施 180
11.8 總結 184
第 12章 微服務架構的組織效應 186
12.1 微服務的組織效益 186
12.2 康威定律的替代方案 189
12.3 微觀架構與宏觀架構 191
12.4 技術領導力 196
12.5 DevOps 197
12.6 當微服務遇上傳統(tǒng)的IT組織 198
12.7 與客戶的接洽 201
12.8 可復用代碼 202
12.9 能否采用微服務而不改變組織 204
12.10 總結 206
第四部分 技術
第 13章 微服務架構示例 210
13.1 領域架構 210
13.2 基本技術 212
13.3 構建 216
13.4 使用Docker進行部署. 217
13.5 Vagrant 218
13.6 Docker Machine 222
13.7 Docker Compose 223
13.8 服務發(fā)現 226
13.9 通信 228
13.10 容錯性 230
13.11 負載均衡 234
13.12 集成其他技術 235
13.13 測試 236
13.14 基于JVM的微服務在Amazon Cloud中運行的實踐 237
13.15 總結 239
第 14章 納米服務技術 241
14.1 為什么采用納米服務 241
14.2 納米服務:定義 243
14.3 Amazon Lambda 244
14.4 OSGi 245
14.5 Java EE 248
14.6 Vert.x 251
14.7 Erlang 252
14.8 Seneca 255
14.9 總結 257
第 15章 把微服務用起來 259
15.1 為什么選擇微服務 259
15.2 微服務實踐之路 260
15.3 微服務:能否落地 260
15.4 總結 261