3dwoo大學簡體電腦書店
微服務架構原理與開發實戰
( 簡體 字)
作者:張剛類別:1. -> 程式設計 -> 綜合
出版社:電子工業出版社微服務架構原理與開發實戰 3dWoo書號: 54476
詢問書籍請說出此書號!
有庫存
NT售價: 475
出版日:4/1/2021
頁數:352
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121408601 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第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
最近幾年軟件開發方法層出不窮,微服務作為一種主流的架構模式一直熱度不減。為了幫助廣大程序員們更好更快地理解微服務的概念,學習微服務在項目中的實踐,本書全面闡述了微服務架構模式的特點、架構思路、設計理念、技術框架及具體的代碼實戰,以軟件開發過程中遇到的各種疑難問題為切入點,逐步解析微服務架構是如何設計及解決這些問題的。書中使用主流技術框架進行演示,采用通俗易懂的圖例和真實的項目事例來闡述遇到問題時的解決思路和做法,并附有具體的實踐演示,讀者可以跟隨本書進行代碼試驗,理解并運用微服務技術架構的理解和運用,了解微服務的適應場景和優勢。本書實用性強,是目前市面上關于微服務實踐方面介紹得較為全面的書籍之一,適合想要了解和學習微服務的初、高級程序員和架構師等不同水平的讀者閱讀。


微服務是一種架構模式,但也不僅僅是一種架構模式,還涵蓋了眾多的軟件開發方法和技術,又代表著敏捷的開發體系,提倡重構和持續演進,對于開發、測試、運維等有著不同的要求。同時,它可能還需要更加復雜的設計方法,更加輕量的協議,甚至還會影響組織或團隊的規模和結構,可能給團隊帶來技術棧的“爆炸”。在這個技術浮躁的年代,對于已經成為主流的微服務架構,我們應該如何面對?
微服務到底是什么,一直眾說紛紜,我們只知道各大企業紛紛追捧和實踐微服務架構,有的項目可能使用了Spring Cloud就算是使用微服務了,然后說微服務就是Spring Cloud,有的系統可能越做越像SOA,然后說微服務就是SOA的一種,還有的把自己的應用拆分,然后覺得把應用拆分成小塊就是微服務。并不是說以上說法都是錯的,但行業里確實還沒有一個標準的試金石來驗證微服務的好與壞,微服務的“酸甜苦辣”可能只有用過了才知道。
其實,每個新概念的出現都填補了一些空白領域,每個新技術的產生都有它擅長解決的問題,每個語言的發明都有它專注處理的場景。軟件開發的世界就是這樣,我們會遇到各式各樣的麻煩,會蹚過數不清的坑,會學習學不完的框架,甚至有的技術還沒有搞清楚原理就已經被淘汰了,但我們仍然樂此不疲。
很多年前筆者就聽說過“微服務”的概念,但一直沒有合適的機會和方法去系統地學習微服務,好在根據多年工作經驗的積累,從不同的項目實踐中慢慢總結了一些微服務的經驗。不敢說全部都是絕對的權威理論,但大多都是從真實的實戰場景出發,以解決問題為導向慢慢推演出的架構模式。本書旨在為廣大讀者介紹一個較為全面的微服務開發體系。
受作者水平和成書時間所限,本書難免存有疏漏和不當之處,敬請指正。
本書特色
1.內容實用、詳略得當,講授符合初學者的認知規律
本書多采用圖例與案例分析,行文深入淺出、圖文并茂,以通俗易懂的語言來講解各種軟件知識,每講到新的概念或有關聯的概念時,都會做出解釋,軟件基礎知識薄弱的讀者也能夠跟隨本書的節奏,快速地理解和掌握微服務的相關知識。
2.不只是開發技術,還包括軟件設計、測試及運維等全面的微服務領域的解析
書中除講解具體的微服務核心開發架構和技術框架以外,還特別強調軟件設計、測試及運維等知識點,如契約測試、領域驅動設計、容器化技術、持續集成和持續交付等理論和實戰知識,因此特別適合擁有一定基礎的中、高級程序員閱讀,可以學習和了解到更多純開發以外需要掌握的知識。
3.以解決問題為導向,引發架構思考
本書更加注重解決問題的思路引導,通過實際的場景分析,不只是解釋了框架和技術概念,還展現了相關技術的由來,正所謂知其然知其所以然,本書也十分適合已經從事架構工作的架構師閱讀,能夠幫助架構師更好地梳理解決問題的思路和方法。
本書內容及體系結構
第1章 微服務概述
微服務并不是一個新的概念,但從提出至今一直熱度不減,而且隨著技術的不斷創新,不同的技術團隊會產生不同的理解,這也導致了好像大家都在做微服務,也都想做好微服務,但具體的軟件設計或架構實踐會有很多的不同,本章就深入探討到底什么是微服務。
第2章 微服務架構設計
微服務架構有兩個難點:一是微服務架構本身核心組件的落地設計,即技術實現;二是微服務在物理上的層次結構和拆分設計。這兩點是實現微服務架構設計成功的關鍵因素,本章將詳細介紹微服務架構的核心架構。
第3章 Spring Cloud相關組件
很多人都覺得使用了Spring Cloud就是用了微服務,雖然Spring Cloud并不能代表微服務的全部,但是通過學習Spring Cloud,確實可以更加深入地了解微服務的理念和實踐,如海量服務的容錯問題、雪崩問題、配置和監控問題、日志追蹤問題等,本章將介紹Spring Cloud的相關微服務組件,學習使用Spring Cloud解決這些問題的方法。
第4章 契約測試
微服務架構中最常見的就是遠程調用,如服務和服務之間的遠程調用,前端和后端的遠程調用,BFF和服務的遠程調用,等等。當系統體量越來越大時,如何保證服務間調用關系的正確性?哪個接口會影響到哪個調用者?這就需要一個自動的方法來幫助人們測試接口的可靠性,這就是契約測試。
第5章 API網關
網關的英文是Gateway,翻譯為門、方法、通道、途徑。網關就是接口的通道或接口的大門,要想訪問API,就必須通過API網關,那為什么要有API網關,這么做有什么作用呢?本章將詳細介紹微服務架構中API網關的作用和具體用法。
第6章 BFF用于前端的后端
隨著前端技術的大爆發,面對逐漸復雜化的前端工程體系,越來越多的企業開始采用前后端分離的開發模式。隨著微服務模式的流行,前后端的交互也變得越來越復雜,如大量接口的組合、復雜的配置、重復的代碼等問題使前后端的開發者飽受折磨。于是,一個新的模式誕生了,BFF用于前端的后端。越來越多的項目開始采用BFF模式,本章將詳細介紹BFF模式的具體實踐用法。
第7章 領域驅動設計
近幾年來,隨著微服務的流行,一個新的軟件設計方法逐漸流行起來,這就是領域驅動設計。當我們有了眾多的技術框架和架構模式時,具體去落地實施一個微服務項目的難處似乎并不僅僅體現在軟件技術上,例如,我們該如何設計微服務的軟件模型和劃分服務職責?本章將介紹領域驅動設計這一新興的科學設計方法。
第8章 Docker和K8s
提到微服務,首先想到的是服務很小、職責很小,那如果是一個龐大復雜的系統,我們必然會建立很多的微服務,而且服務都是可以水平擴展的,在一些大型的互聯網企業,一個服務的數量可能是成百上千的,那么部署和管理這些服務就成了一個難題。本章將介紹服務容器化部署的相關知識。
第9章 持續集成、部署與交付
雖然第8章中提到了使用容器化技術的部署方式,但似乎和微服務定義中的自動化沒什么關系,本章將介紹自動化部署和快速交付的相關概念與方法案例,同時思考微服務項目中需要自動化部署機制的原因。
第10章 任務管理
在軟件開發過程中,無論是項目還是產品都有著自己的獨特性,不可能所有的項目都千篇一律,我們會遇到各種各樣的場景,除了一些宏觀的架構和設計,微服務架構在技術細節上也有很多需要注意的地方,如任務管理,當然這可能是一些分布式架構的特性,而不僅限于微服務架構,本章將介紹一些微服務架構下任務管理的實踐。
第11章 事務管理
事務管理一直都是軟件開發中的難點,即使很多優秀的框架能夠幫助我們處理一些簡單的邏輯,如在單體式架構中使用AOP的事務管理框架來管理事務,但在微服務架構下,事務管理的需求與復雜度都比單體式架構更高。那么,在微服務中應該如何管理事務呢?本章將介紹事務管理的方式和方法。
第12章 傳統架構的微服務轉型之路
雖然微服務的浪潮越來越熱,但是軟件工程這么多年來,還是產生了大量傳統架構的系統,面對已經存在了多年的老項目,系統性能越來越差,想要擴展又顯得捉襟見肘,想要做微服務架構轉型也處處受限,很多項目團隊甚至直接選擇丟棄老的系統,重新開發新的系統。那么,當我們面對技術陳舊、業務龐雜、技術債眾多的老舊系統時,該如何實現微服務的轉型呢?本章將告訴大家從現有傳統架構向微服務架構轉型的思路和過程。
本書讀者對象
? 想要學習和了解微服務的人
? 已經了解微服務想要查漏補缺的人
? 初、中、高級程序員
? 軟件架構師
? 對軟件架構有興趣的各類人員
pagetop