微服務架構實戰 -- 基於 Spring Boot、Spring Cloud、Docker

鄭天民

買這商品的人也買了...

商品描述

本書主要包含微服務架構實現過程中所應具備的技術體系和工程實踐,圍繞實現微服務架構的基礎組件和關鍵要素,我們將討論使用Spring Boot構建服務、服務治理、負載均衡、服務容錯、API網關、配置中心、事件驅動、服務安全、服務監控、服務測試和Docker與服務部署等核心主題,並基於這些核心主題給出具體的案例分析。

作者簡介

鄭天民
網名天涯蘭,日本足利工業大學信息工程學碩士。10年軟件行業從業經驗,在醫療、安防和電商行業都有所涉及,前後擔任系統分析架構師、部門經理、技術總監等職務,對架構設計和技術管理有豐富的經驗和深入的理解。主持過十餘個面向研發人員的技術和管理類培訓課程,著有《系統架構設計:程序員向架構師轉型之路》、《向技術管理者轉型:軟件開發人員跨越行業、技術、管理的轉型思維與實踐》、《微服務設計原理與架構》等書籍。

目錄大綱

第1章微服務架構設計1 
1.1直面微服務架構1 
1.1.1分佈式系統與微服務架構1 
1.1.2微服務架構的優勢與挑戰3 
1.1.3實施微服務架構5 
1.2服務建模方法6 
1.2.1服務的模型6 
1.2.2服務的邊界7 
1.2.3服務的數據7 
1.3服務拆分與集成8 
1.3.1服務拆分8 
1.3.2服務集成9 
1.4微服務架構的基礎組件和關鍵要素10 
1.4.1微服務架構的基礎組件11 
1.4.2微服務架構的關鍵元素11 
1.5實現微服務架構13 
1.5.1微服務架構技術體系13 
1.5.2微服務架構實現技術選型14 
1.6案例分析17 
1.7全書架構18 
1.8本章小結19 

第2章使用Spring Boot構建服務21 
2.1引入Spring Boot 21 
2.2基於Spring Boot的第一個服務23 
2.2.1環境準備23 
2.2.2實現RESTful服務24 
2.3 Spring Boot常見功能28
2.3.1集成Spring Data 28 
2.3.2集成消息中間件37 
2.3.3系統監控39 
2.4 Spring Boot基本原理44 
2.5本章小結46 

第3章Spring Cloud Netflix Eureka與服務治理47 
3.1服務治理解決方案48 
3.1. 1服務治理的需求和模型48 
3.1.2服務治理的基本方案49 
3.2構建Eureka服務52 
3.2.1構建單個Eureka服務器52 
3.2.2構建Eureka服務器集群55 
3.3使用Eureka註冊和發現服務57 
3.3.1通過配置實現服務註冊58 
3.3.2獲取服務註冊信息59 
3.4 Eureka基本架構61 
3.4.1 Eureka服務註冊和發現架構61 
3.4.2 Eureka高可用架構64 
3.4.3 Eureka區域親和性65 
3.5本章小結66 

第4章Spring Cloud Netflix Ribbon 與負載均衡67 
4.1負載均衡68 
4.1.1負載均衡的類型68 
4.1.2負載均衡的算法70 
4.2使用Ribbon實現客戶端負載均衡71
4.2.1 Spring Cloud Netflix Ribbon 簡介71 
4.2.2使用DiscoveryClient查找服務72 
4.2.3通過RestTemplate調用服務74 
4.3 Ribbon基本架構78 
4.3.1 Ribbon核心機制79 
4.3.2 Ribbon負載均衡策略81 
4.3.3 @LoadBalanced註解與RestTemplate 82 
4.3.4 @RibbonClient註解與自定義負載均衡策略83 
4.4本章小結85 

第5章Spring Cloud Netflix Hystrix與服務容錯86 
5.1服務消費者容錯思想和模式87 
5.1.1服務消費者容錯的需求87 
5.1.2服務隔離88 
5.1.3服務熔斷90 
5.1.4服務回退91 
5.2使用Hystrix實現服務容錯91 
5.2.1引入Hystrix 92 
5.2.2使用Hystrix實現服務隔離93 
5.2.3使用Hystrix實現服務熔斷96 
5.2.4使用Hystrix實現服務回退99 
5.3 Hystrix基本原理101 
5.3.1服務隔離101 
5.3.2服務熔斷103
5.3.3 Hystrix配置項105 
5.4本章小結109
 
第6章Spring Cloud Netflix Zuul 與API網關110 
6.1服務網關的設計理念111 
6.1.1服務網關的作用111 
6.1.2服務網關的結構和功能112 
6.2使用Zuul構建服務網關113 
6.2.1構建Zuul服務器113 
6.2.2配置Zuul服務路由115 
6.3 Zuul基本架構120 
6.3.1 ZuulFilter組件架構120 
6.3.2使用Zuul過濾器124 
6.4本章小結129 

第7章Spring Cloud Config 與配置中心130 
7.1分佈式配置中心方案131 
7.1.1分佈式配置模型131 
7.1.2配置中心實現工具133 
7.2構建配置中心服務器134 
7.2.1引入Spring Cloud Config 134 
7.2.2實現基於本地文件系統的配置方案135 
7.2.3實現基於Git的配置方案139 
7.3使用配置服務140 
7.3.1訪問配置項141 
7.3.2配置數據安全性145
7.4 Spring Cloud Config特性148 
7.4.1 Spring Cloud Config對比Zookeeper 148 
7.4.2 Spring Cloud Config高可用149 
7.5本章小結150 

第8章Spring Cloud Stream與事件驅動151 
8.1事件驅動架構與模型152 
8.1.1基本事件驅動架構與實現機制152 
8.1.2事件驅動與領域模型155 
8.2引入Spring Cloud Stream 157 
8.2.1 Spring Cloud Stream基本架構157 
8.2.2 Spring Cloud Stream與Spring Integration 159 
8.2.3 Spring Cloud Stream與消息中間件162 
8.3實現消息發布者165 
8.3.1消息發送場景與實現流程165 
8.3.2在服務中添加消息發布者166 
8.4實現消息消費者170 
8.4.1消息消費場景與實現流程170 
8.4.2在服務中添加消息消費者172 
8.5本章小結177 

第9章Spring Cloud Security與服務安全178
9.1服務訪問安全性與OAuth協議178 
9.1.1微服務架構中的安全性設計179 
9.1.2 OAuth協議180 
9.2構建OAuth認證服務器184 
9.2.1引入Spring Cloud Security 185 
9.2.2初始化用戶與客戶端186 
9.2.3生成Token 191 
9.3使用OAuth保護服務訪問195 
9.3.1集成OAuth認證服務195 
9.3.2創建服務訪問策略196 
9.3.3使用OAuth2RestTemplate 傳播Token 201 
9.4本章小結206 

第10章Spring Cloud Sleuth與服務監控207 
10.1服務監控與Spring Cloud Sleuth 207 
10.1.1服務監控基本原理207 
10.1.2引入Spring Cloud Sleuth 209 
10.2整合Spring Cloud Sleuth與Zipkin 215 
10.2.1 Zipkin基本結構215 
10.2.2引入Zipkin 216 
10.2.3使用Zipkin跟踪服務調用鏈路218 
10.2.4使用Zipkin實現自定義跟踪226
10.3本章小結228 

第11章Spring Test與服務測試230 
11.1微服務測試的方法231 
11.1.1單元測試231 
11.1.2集成測試233 
11.1.3端到端測試233 
11.2測試Spring Boot應用程序234 
11.2.1初始化測試環境234 
11.2.2執行單元測試237 
11.3使用Mock和註解實施集成測試241 
11.3.1使用@JsonTest註解測試JSON數據242 
11.3.2使用@DataJpaTest註解測試Repository層244 
11.3.3使用Mock測試Service層248 
11.3.4使用Mock和@WebMvcTest 註解測試Controller層252 
11.4消費者驅動的契約測試254 
11.4.1面向契約的端對端測試254 
11.4.2實現面向契約的端對端測試257 
11.5本章小結266 

第12章Docker與服務部署267 
12.1 Docker與微服務架構267 
12.1.1 Docker的優勢268 
12.1.2 Docker組件與命令268
12.2使用Dockerfile構建服務鏡像272 
12.2.1 Dockerfile命令272 
12.2.2使用Dockerfile命令構建鏡像273 
12.3使用Docker Compose編排服務276 
12.3.1 Docker Compose組件與命令276 
12.3.2使用Docker Compose 279 
12.3.3 Docker Compose案例分析281 
12.4本章小結283 
參考文獻284