微服務架構原理與開發實戰

微服務架構原理與開發實戰

作者: 張剛
出版社: 電子工業
出版在: 2021-04-01
ISBN-13: 9787121408601
ISBN-10: 7121408600
裝訂格式: 平裝
總頁數: 352 頁





內容描述


最近幾年軟件開發方法層出不窮,微服務作為一種主流的架構模式一直熱度不減。為了幫助廣大程序員們更好更快地理解微服務的概念,學習微服務在項目中的實踐,本書全面闡述了微服務架構模式的特點、架構思路、設計理念、技術框架及具體的代碼實戰,以軟件開發過程中遇到的各種疑難問題為切入點,逐步解析微服務架構是如何設計及解決這些問題的。書中使用主流技術框架進行演示,採用通俗易懂的圖例和真實的項目事例來闡述遇到問題時的解決思路和做法,並附有具體的實踐演示,讀者可以跟隨本書進行代碼試驗,理解並運用微服務技術架構的理解和運用,瞭解微服務的適應場景和優勢。本書實用性強,是目前市面上關於微服務實踐方面介紹得較為全面的書籍之一,適合想要瞭解和學習微服務的初、高級程序員和架構師等不同水平的讀者閱讀。


目錄大綱


第1章微服務概述001
1.1微服務的概念002
1.2微服務與SOA 003
1.2.1 SOA的定義003
1.2.2微服務與SOA的異同點004
1.2. 3服務調用設計005
1.3單體式架構007
1.3.1單體式架構概述007
1.3.2單體式架構的痛點008
1.3.3經典的MVC架構模式010
1.4微服務架構概述012
1.4.1微服務能解決的問題012
1.4.2微服務架構的特點013
1.4.3微服務架構的優勢016
1.5微服務的挑戰017
1.5 .1使用微服務的難點018
1.5.2微服務不是銀彈019
第2章微服務架構設計020
2.1微服務架構的難點021
2.2架構設計022
2.2.1了解什麼才是架構022
2.2.2軟件設計的3個階段023
2.2.3軟件架構的目的與方法024
2.3微服務的核心組件028
2.3.1微服務的遠程調用方式028
2. 3.2 HTTP通信方法031
2.3.3服務的註冊與發現037
2.3.4負載均衡044
第3章Spring Cloud相關組件050
3.1統一配置中心051
3.1.1配置中心的難點051
3.1.2 Spring Cloud Config框架053
3.1.3集成消息總線058
3.2斷路器060
3.2.1服務熔斷060
3.2.2服務降級064
3.2.3線程隔離065
3.2.4請求合併068
3.2.5請求緩存073
3. 2.6 Hystrix註解075
3.2.7 Hystrix控制台078
3.3健康監控080
3.4分佈式鏈路跟踪084
3.4.1設計要素和術語084
3.4.2 Spring Cloud Sleuth鏈路監控085
第4章契約測試088
4.1契約測試概述089
4.2契約測試與TDD 091
4.2.1 TDD的定義091
4.2.2 TDD的價值094
4.2.3 TDD的種類095
4.2.4契約測試也是TDD 096
4.3契約測試與獨立交付097
4.3.1獨立交付097
4.3.2集成測試098
4.3.3真正的獨立交付100
4.4契約測試的相關技術與用法實戰102
4.4.1 Mock測試102
4.4.2消費者驅動的契約測試Pact 106
4.4.3 Spring家族契約測試Spring Cloud Contract 122
4.4.4服務提供者的契約測試Moscow 129
第5章API網關133
5.1 API網關的意義134
5.2 API網關的職責137
5 .2.1請求路由137
5.2.2請求過濾138
5.2.3服務治理139
5.3 API網關的缺點141
5.4使用API網關認證身份141
5.4.1分清認證與授權141
5.4.2 API網關是否需要管理授權142
5.4.3傳統的Cookie和Session認證143
5.4.4基於JSON的令牌JWT 148
5.5 API網關技術實戰151
5.5.1 Zuul網關151
5.5.2 Spring Cloud Gateway 159
5.5.3 Spring Security 166
5.5.4 Java-JWT 178
第6章BFF用於前端的後端183
6.1回顧前後端分離發展史184
6.1.1日漸臃腫的前端184
6.1.2前端技術棧大爆發185
6.1.3前後端分離的必然性185
6.1.4分離後的挑戰186
6.2 BFF誕生187
6.2.1 BFF的概念187
6.2.2 BFF的適用場景188
6.2.3 BFF模式189
6.3基於RESTful的BFF 190
6.4基於GraphQL的BFF 193
6.4.1 GraphQL的概念193
6.4.2 GraphQL在客戶端的基本用法197
6.4.3 GraphQL與Java集成204
6.4.4 GraphQL與WebFlux集成215
第7章領域驅動設計220
7 .1如何劃分微服務221
7.1.1微服務的劃分方式221
7.1.2 DDD與服務劃分222
7.2領域驅動設計概述223
7.2.1 DDD的概念223
7.2.2 DDD解決了什麼問題224
7.2.3 DDD適合小項目嗎226
7.2.4為了統一語言227
7.3領域和子域229
7.4領域事件230
7.4.1領域事件的定義230
7.4.2事件風暴230
7.4.3用戶旅程與事件風暴232
7.5聚合和聚合根233
7.6限界上下文234
7.7六邊形架構236
7.8 DDD的挑戰237
第8章Docker和K8s 239
8.1虛擬化技術240
8.2 Docker容器化241
8.2.1 Docker的概念241
8.2.2容器的概念242
8.3學習使用Docker 244
8.3.1 Docker的安裝方法244
8.3.2構建Docker鏡像246
8.3.3運行Docker容器250
8.3.4了解Docker的網絡252
8.3.5日誌監控的利器ELK 253
8.4容器編排258
8.4.1容器為什麼需要編排258
8.4.2 Kubernetes的概念259
8.4.3 K8s的設計理念260
8.4.4 K8s的命名空間264
8. 4.5 K8s與Docker 265
8.4.6 K8s與Docker Swarm 266
8.5雲商的支持267
第9章持續集成、部署與交付270
9.1持續集成(CI) 271
9.1.1傳統的系統集成271
9.1.2持續集成的概念273
9.1.3微服務的CI 275
9.2持續交付(CD) 275
9. 2.1 CD的概念276
9.2.2 DevOps與持續交付277
9.2.3軟件質量門277
9.3持續部署(CD) 279
9.3.1生產環境部署的難點280
9.3. 2藍綠部署281
9.3.3滾動部署282
9.3.4灰度發布283
9.4 CI/CD工具284
9.4.1 Jenkins 284
9.4.2 GoCD概述291
9.4.3 DevOps概述300
第10章任務管理302
10.1任務管理概述303
10.1.1如何解決任務互斥303
10.1.2任務調度平台304
10.2實戰演練305
10.2.1 Quartz 306
10 .2.2 XXL-JOB 310
第11章事務管理318
11.1事務概述319
11.2 CAP理論320
11.3 BASE理論321
11.4解決方案322
11.4.1基於可靠消息的事務管理322
11.4.2兩段提交事務325
11.4.3 TCC模式事務管理326
11.5對賬是最後的屏障328
第12章傳統架構的微服務轉型之路329
12.1傳統架構轉型的難點330
12.2識別領域與界限332
12.3分塊重構法334
12.4代理隔離法336
12.5轉型不是一蹴而就的338


作者介紹


張剛,多年軟件開發經驗,從事過開發、項目經理、架構師等多種角色擅長後端開發,熟悉微服務架構模式,熟悉領域驅動設計理念推崇敏捷開發,極限編程和TDD等開發方式喜歡研究新技術,探索新的領域,擅長總結軟件開發的各種思路




相關書籍

JavaScript 錦囊妙計, 2/e (JavaScript Cookbook, 2/e)

作者 Shelley Powers 吳勇慶 譯

2021-04-01

Ruby in Practice (Paperback)

作者 Jeremy McAnally Assaf Arkin

2021-04-01

水滴架站什麼都賣-用Drupal打造我的網路商城

作者 陳琨和

2021-04-01