√ 微服務旨在化大而復雜為小而簡單,用快速交付支撐持續(xù)創(chuàng)新
√ 被谷歌等一線IT企業(yè)采用,與容器|云計算|持續(xù)交付等熱點實踐密不可分
√ 從架構(gòu)演進到原理剖析,覆蓋開發(fā)、測試、部署、運維、組織變化等微服務各方面
√ 代碼靜態(tài)檢查、云基礎設施構(gòu)建、 Docker映像構(gòu)建及部署、持續(xù)交付流水線、服務日志全程實戰(zhàn)
隨著RESTful、云計算、DevOps、持續(xù)交付等概念的深入人心,微服務架構(gòu)逐漸成為系統(tǒng)架構(gòu)的一個代名詞。本書首先從理論出發(fā),介紹了微服務架構(gòu)的概念、誕生背景、本質(zhì)特征以及優(yōu)缺點;然后基于實踐,探討了如何從零開始構(gòu)建微服務,包括Hello World API、Docker 映像構(gòu)建與部署、日志聚合、監(jiān)控告警、持續(xù)交付流水線等;最后,在進階部分討論了微服務的輕量級通信、消費者驅(qū)動的契約測試,并通過一個真實的案例描述了如何使用微服務架構(gòu)改造遺留系統(tǒng)。全書內(nèi)容豐富,條理清晰,通俗易懂,是一本理論結(jié)合實踐的微服務架構(gòu)的實用書籍。
本書不僅適合架構(gòu)師、開發(fā)人員、測試人員以及運維人員閱讀,也適合正在嘗試使用微服務架構(gòu)解耦歷史遺留系統(tǒng)的團隊或者個人參考,希望本書能在實際工作中對讀者有所幫助。
請關注重磅升級的《微服務架構(gòu)與實踐(第2版)》
ThoughtWorks的首席咨詢師王磊是國內(nèi)較早倡導和實踐微服務的先行者。王磊是開源軟件的愛好者和貢獻者,社區(qū)活動的參與者,《Ruby Gems開發(fā)實戰(zhàn)》(Practical RubyGems)一書的譯者,GDCR西安的組織者。他于2012年加入ThoughtWorks,為國內(nèi)外諸多客戶提供項目交付和咨詢服務;在加入ThoughtWorks之前,曾就職過多家知名外企,具有豐富的敏捷項目實戰(zhàn)經(jīng)驗。目前致力于微服務架構(gòu)、高可用的Web應用以及DevOps的研究與實踐。
第 1部分 基礎篇
第 1章 單塊架構(gòu)及其面臨的挑戰(zhàn) . 3
1.1三層應用架構(gòu) . 4
1.1.1三層應用架構(gòu)的發(fā)展 4
1.1.2什么是三層架構(gòu) . 5
1.1.3三層架構(gòu)的優(yōu)勢 . 6
1.2單塊架構(gòu) . 6
1.2.1什么是單塊架構(gòu) . 6
1.2.2單塊架構(gòu)的優(yōu)勢 . 7
1.2.3單塊架構(gòu)面臨的挑戰(zhàn) 8
1.3 小結(jié) . 12
第 2章 微服務架構(gòu)綜述 13
2.1什么是微服務架構(gòu) . 13
2.1.1多微才夠微 . 14
2.1.2 單一職責 . 17
2.1.3 輕量級通信 . 17
2.1.4 獨立性 . 19
2.1.5 進程隔離 . 20
2.2 微服務的誕生背景 . 22
2.2.1 互聯(lián)網(wǎng)行業(yè)的快速發(fā)展 23
2.2.2 敏捷、精益方法論的深入人心 23
2.2.3 單塊架構(gòu)系統(tǒng)面臨的挑戰(zhàn) 23
2.2.4 容器虛擬化技術(shù) . 23
2.3 微服務架構(gòu)與 SOA 24
2.3.1 SOA概述 24
2.3.2 微服務與 SOA 25
2.4 微服務的本質(zhì) . 26
2.4.1服務作為組件 . 27
2.4.2 圍繞業(yè)務組織團隊 . 28
2.4.3 關注產(chǎn)品而非項目 . 29
2.4.4 技術(shù)多樣性 . 31
2.4.5 業(yè)務數(shù)據(jù)獨立 . 32
2.4.6 基礎設施自動化 . 33
2.4.7 演進式架構(gòu) . 33
2.5 微服務不是銀彈 . 34
2.5.1 分布式系統(tǒng)的復雜度 35
2.5.2 運維成本 . 36
2.5.3 部署自動化 . 36
2.5.4 DevOps與組織架構(gòu) . 37
2.5.5 服務間的依賴測試 . 37
2.5.6 服務間的依賴管理 . 37
2.6 小結(jié) . 38
第 2部分 實踐篇
第 3章 構(gòu)建第一個服務 41
3.1場景分析 . 41
3.2任務拆分 . 43
第 4章 Hello World API 45
4.1 API實現(xiàn) 45
4.1.1 開發(fā)語言 ――Ruby . 45
4.1.2 Web框架――Grape . 46
4.1.3 API的具體實現(xiàn) 47
4.2代碼測試與靜態(tài)檢查 . 50
4.2.1代碼測試 . 50
4.2.2測試覆蓋率統(tǒng)計 . 53
4.2.3靜態(tài)檢查 . 54
4.2.4代碼復雜度檢查 . 57
第 5章 構(gòu)建 Docker映像 . 61
5.1 定義 Dockerfile . 61
5.2 配置 Docker主機 63
5.3 構(gòu)建 Docker映像 64
5.4 運行 Docker容器 64
5.5 發(fā)布 Docker映像 65
5.6 小結(jié) . 69
第 6章 部署 Docker映像 . 71
6.1基礎設施 AWS 71
6.2基礎設施自動化 . 73
6.3 部署 Docker映像 80
6.4自動化部署 . 81
6.5 小結(jié) . 84
第 7章 持續(xù)交付流水線 85
7.1持續(xù)集成環(huán)境 . 85
7.2提交階段 . 87
7.3驗證階段 . 91
7.4構(gòu)建階段 . 91
7.5發(fā)布階段 . 94
7.6 小結(jié) . 96
第 8章 日志聚合 97
8.1 日志聚合工具簡介 . 97
8.2 Splunk的核心 . 99
8.3 安裝 Splunk索引器 100
8.4 安裝 Splunk轉(zhuǎn)發(fā)器 101
8.5日志查找 . 102
8.6告警設置 . 103
8.7 小結(jié) . 104
第 9章 監(jiān)控與告警 . 105
9.1 Nagios簡介. 105
9.2 Nagios的工作原理 . 107
9.3 Nagios安裝. 108
9.4 Nagios的配置 . 109
9.5 監(jiān)控 products-service 111
9.6 告警 . 113
9.7 小結(jié) . 114
第 10章 功能迭代 115
10.1定義模型 . 116
10.2持久化模型 . 117
10.3定義表現(xiàn)形式 . 119
10.4 實現(xiàn) API 122
10.5服務描述文件 . 125
10.6 小結(jié) . 127
第 3部分 進階篇
第 11章 微服務與持續(xù)交付 131
11.1持續(xù)交付的核心 132
11.2微服務架構(gòu)與持續(xù)交付 133
11.2.1 開發(fā) . 133
11.2.2 測試 . 137
11.2.3持續(xù)集成 139
11.2.4 構(gòu)建 . 139
11.2.5 部署 . 140
11.2.6 運維 . 143
11.3 小結(jié) . 144
第 12章 微服務與輕量級通信機制 . 145
12.1同步通信與異步通信 . 145
12.1.1 概述 . 145
12.1.2同步通信與異步通信的選擇 146
12.2遠程調(diào)用 RPC . 147
12.2.1遠程過程調(diào)用的核心 147
12.2.2遠程方法調(diào)用 . 148
12.2.3遠程過程調(diào)用的弊端 148
12.3 REST . 149
12.3.1 概述 . 149
12.3.2 REST的核心 . 150
12.3.3 REST的優(yōu)勢 . 152
12.3.4 REST的不足 . 152
12.3.5 本節(jié)小結(jié) . 155
12.4 HAL . 155
12.4.1 概述 . 155
12.4.2 HAL的核心 156
12.4.3 HAL瀏覽器 160
12.5消息隊列 . 161
12.5.1 核心部分 . 162
12.5.2 訪問方式 . 163
12.5.3消息隊列的優(yōu)缺點 . 164
12.6后臺任務處理系統(tǒng) . 165
12.6.1 核心部分 . 165
12.6.2 服務回調(diào) . 166
12.6.3 一個例子 . 167
12.6.4后臺任務與微服務 . 169
12.7 小結(jié) . 170
第 13章 微服務與測試 . 171
13.1微服務的結(jié)構(gòu) . 171
13.2微服務的測試策略 . 173
13.3微服務的單元測試 . 175
13.3.1單元測試綜述 . 175
13.3.2單元測試的內(nèi)容 . 176
13.4微服務的集成測試 . 179
13.4.1集成測試綜述 . 179
13.4.2集成測試的實施方法 179
13.4.3集成測試的內(nèi)容 . 180
13.5基于消費者驅(qū)動的契約測試 181
13.5.1集成測試存在的弊端 181
13.5.2什么是契約 . 183
13.5.3什么是契約測試 . 184
13.5.4契約測試的方法 . 185
13.5.5 Pact實現(xiàn)契約測試 187
13.5.6 一個例子 . 192
13.5.7 本節(jié)小結(jié) . 205
13.6微服務的組件測試 . 205
13.6.1組件測試概述 . 205
13.6.2組件測試的方法 . 206
13.6.3 本節(jié)小結(jié) . 207
13.7微服務的端到端測試 . 208
13.7.1端到端測試概述 . 208
13.7.2端到端測試的內(nèi)容 . 208
13.7.3 本節(jié)小結(jié) . 209
13.8 小結(jié) . 210
第 14章 使用微服務架構(gòu)改造遺留系統(tǒng) 211
14.1背景與挑戰(zhàn) . 211
14.2改造策略 . 212
14.2.1 昀小修改 . 212
14.2.2 功能剝離 . 212
14.2.3 數(shù)據(jù)解耦 . 213
14.2.4 數(shù)據(jù)同步 . 213
14.2.5 迭代替換 . 214
14.3快速開發(fā)實踐 . 215
14.3.1快速開發(fā)模板 . 215
14.3.2代碼生成工具 . 217
14.3.3持續(xù)集成模板 . 217
14.3.4一鍵部署工具 . 217
14.4微服務架構(gòu)下的新系統(tǒng) . 218
14.5 小結(jié) . 220