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