SpringCloud微服務架構開發實戰

CiCi島發表於2018-12-04

網站

更多書籍點選進入>> CiCi島

下載

電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支援正版,喜歡的請購買正版書籍

封頁

封頁

編輯推薦

詳解Spring Cloud所提供的微服務架構核心元件

詳解微服務架構從設計、開發、部署到運維的一站式解決方案

通過大量易於構建、執行和測試的開發示例,帶領讀者實戰微服務架構

詳解Spring Cloud核心元件:服務發現、客戶端負載均衡、API閘道器、微服務容錯、統一配置中心、訊息匯流排及微服務呼叫監控等

手把手帶領讀者使用Spring Boot進行微服務應用開發

手把手帶領讀者使用Config元件實現統一配置管理及加密處理

手把手帶領讀者使用Kafka和Redis構建基於訊息驅動的應用

手把手帶領讀者使用OAuth 2.0和JWT構建安全解決方案

手把手帶領讀者使用Docker和Jenkins實現微服務應用的自動化部署

30秒極速瞭解本書精華內容:

為何採用微服務架構

Spring Boot微服務開發基礎

Spring Cloud與微服務

實現服務治理——Eureka

客戶端負載均衡——Ribbon

簡化微服務呼叫——Feign

微服務容錯保護與降級——Hystrix

構建API服務閘道器——Zuul

搭建統一配置中心——Config

微服務分散式跟蹤與監控——Sleuth

在微服務中整合ELK

Spring Cloud與Kafka整合

使用Redis實現微服務資料快取

基於OAuth 2.0搭建統一認證伺服器

使用JWT實現單點登入處理

使用Docker部署微服務應用

通過Jenkins實現自動釋出

 

內容簡介

本書首先從微服務架構興起的背景講起,探討了為何在分散式系統開發中微服務架構將逐漸取代單體架構,然後對Spring Cloud所提供的微服務元件及解決方案進行了一一講解,從而讓讀者不但可以系統地學習Spring Cloud的相關知識,而且還可以全面掌握微服務架構應用的設計、開發、部署和運維等知識。 本書共11章,分為3篇。第1篇為微服務開發基礎——Spring Boot框架及使用;第2篇為Spring Cloud元件實戰;第3篇為微服務與Docker容器技術。其中第2篇為全書的核心,涵蓋了構建微服務架構所需要的服務治理(Eureka)、客戶端負載均衡(Ribbon)、微服務容錯與降級處理(Hystrix)、微服務API統一閘道器(Zuul)、分散式配置中心(Config)、微服務呼叫鏈追蹤(Sleuth)、微服務訊息驅動開發(Stream)及微服務安全(OAuth及JWT)等相關知識。 本書內容通俗易懂,每章都結合例項進行講解,特別適合Spring Cloud的入門讀者閱讀,也適合致力於網際網路開發和Java開發的進階讀者閱讀。如果你是運維人員,或者你對微服務架構有興趣,那麼本書也非常適合你閱讀。此外,本書也可以作為相關培訓機構的教材使用。

作者簡介

董超 資深程式設計師、架構師。從事軟體研發十多年,擅長移動網際網路和行業應用架構。曾經多次主導大型國有企業系統和移動網際網路平臺的研發。現專注於IoT(物聯網)及其應用平臺的研發。 胡熾維 全棧工程師。有多年的開發經驗,擅長前端開發技術,並對移動端原生開發技術也有所涉獵。曾經參與過多個網際網路專案的研發和基於Docker的系統運維工作,積累了豐富的一線研發經驗。現主要負責IoT(物聯網)平臺前端架構的研發與運維。

目 錄

第1篇  微服務開發基礎——Spring Boot框架及使用

第1章  微服務架構開發    2

1.1  單體架構應用的困境   2

1.2  微服務架構   3

1.2.1  如何定義微服務架構       4

1.2.2  微服務架構的優點   5

1.2.3  微服務架構的缺點   6

1.3  微服務架構設計   7

1.3.1  微服務粒度       7

1.3.2  微服務拆分原則       8

1.3.3  微服務自治原則       9

1.3.4  微服務互動原則       10

1.3.5  微服務架構遷移       10

1.4  不應使用微服務架構的情形      11

第2章  微服務基礎——Spring Boot 12

2.1  Spring與Spring Boot  12

2.2  快速啟動Spring Boot  13

2.2.1  編寫pom.xml檔案   14

2.2.2  編寫應用引導類       16

2.2.3  編寫配置檔案   17

2.2.4  執行專案   17

2.3  使用Spring Boot構建示例專案 19

2.3.1  經典三層應用架構   19

2.3.2  設計領域物件   20

2.3.3  實現資料管理   23

2.3.4  編寫業務邏輯層       29

2.3.5  編寫RESTful API     31

2.3.6  資料庫初始化   35

2.3.7  啟動測試   36

2.4  Spring Boot特性  37

2.4.1  Spring Boot自動配置機制      37

2.4.2  Spring Boot擴充套件屬性配置      38

2.4.3  Spring Boot日誌配置      39

2.5  關於敏捷開發      40

2.6  關於RESTful API設計       41

2.6.1  以資源為中心進行URL設計  42

2.6.2  正確使用HTTP方法及狀態碼       42

2.6.3  查詢及分頁處理原則       43

2.6.4  其他指導原則   43

第2篇  Spring Cloud元件實戰

第3章  Spring Cloud簡介  46

3.1  微服務架構的核心關鍵點   46

3.2  Spring Cloud技術概覽       49

3.2.1  Spring Cloud子專案 50

3.2.2  為何選擇Spring Cloud     53

3.3  Spring Cloud版Hello World示例      54

第4章  服務治理與負載均衡    58

4.1  什麼是服務治理   58

4.2  構建服務治理——Eureka   59

4.2.1  搭建微服務Parent工程   60

4.2.2  搭建服務治理伺服器——Eureka伺服器       62

4.2.3  搭建服務提供者——註冊服務       64

4.2.4  搭建服務消費者——獲取服務       68

4.3  使用客戶端負載均衡——Ribbon      72

4.3.1  什麼是客戶端負載均衡   72

4.3.2  啟用Ribbon      74

4.3.3  負載均衡測試   75

4.4  使用Feign簡化微服務呼叫       77

4.5  深入Eureka  80

4.5.1  服務註冊及相關原理       80

4.5.2  Eureka自我保護模式       82

4.5.3  註冊一個服務例項需要的時間       84

4.5.4  Eureka高可用叢集及示例       84

4.5.5  多網路卡及IP指定      88

4.5.6  Eureka服務訪問安全       89

4.6  深入Ribbon  90

4.6.1  Ribbon客戶端負載均衡原理   90

4.6.2  Ribbon負載均衡策略及配置   92

4.6.3  直接使用Ribbon API       94

4.7  深入Feign    96

4.7.1  Feign的引數繫結     96

4.7.2  Feign中的繼承  97

4.7.3  Feign與Swagger的衝突  98

4.8  微服務健康監控   99

4.9  異構服務解決方案——Sidecar   101

第5章  微服務容錯保護——Hystrix       102

5.1  什麼是微服務容錯保護      102

5.2  快速啟動Hystrix  103

5.2.1  引入Hystrix依賴     104

5.2.2  開啟Hystrix支援     104

5.2.3  修改UserService實現      104

5.2.4  容錯測試   105

5.2.5  服務降級的兩種實現方式       107

5.2.6  在Feign中使用Hystrix回退   109

5.3  Hystrix容錯機制分析  110

5.3.1  Hystrix整體處理流程      111

5.3.2  HystrixCommand與HystrixObservableCommand   113

5.3.3  斷路器原理分析       115

5.3.4  Hystrix異常——HystrixBadRequestException       117

5.4  服務隔離      117

5.4.1  執行緒池隔離與訊號量隔離       118

5.4.2  服務隔離的顆粒度   119

5.4.3  服務隔離配置   119

5.4.4  小結   120

5.5  服務降級模式      121

5.5.1  快速失敗   121

5.5.2  靜默失敗   121

5.5.3  返回預設值       122

5.5.4  返回組裝的值   122

5.5.5  返回遠端快取   123

5.5.6  主/從降級模式  124

5.6  請求快取      127

5.7  請求合併      128

5.8  Hystrix監控  130

5.8.1  Hystrix儀表盤   131

5.8.2  Turbine儀表盤叢集監控  133

5.8.3  Turbine與訊息伺服器整合      136

……

第6章  API服務閘道器——Zuul 137

第7章  統一配置中心——Config     166

第8章  分散式服務跟蹤——Sleuth  192

第9章  訊息驅動——Stream    215

第10章  微服務應用安全——Security    258

第3篇  微服務與Docker容器技術

第11章  微服務與Docker  288

11.1  Docker簡介 288

11.2  Docker的使用    289

11.3  Docker與Spring Cloud微服務 301

11.4  微服務與Jenkins       305

11.5  微服務編排 315

前 言

前言  2014年3月,Martin Fowler在其部落格上發表了Microservices(微服務)一文,對過去幾年逐漸開始流行的微服務架構開發模式給出了正式的定義。同年,Netflix OSS將自己多年來在實際開發中所使用的微服務基礎元件開源。隨後,Pivotal在Netflix OSS的基礎上對這些元件進行了封裝和整合,推出了Spring Cloud。到如今,微服務架構已逐漸普及,在技術生態上也得到了不斷完善和更新,其在容器、應用框架、釋出管理及監控等方面都有了長足進步。微服務在日常開發中也嶄露頭角,逐漸得到了開發者的認同。與此同時,Spring Cloud在過去幾年中快速發展,不斷迭代和更新,已經形成了微服務開發“全家桶”式的解決方案,逐漸在微服務開發領域奠定了堅實的基礎。
  當我第一次接觸微服務的概念時,以為這又是一個“新瓶裝舊酒”的把戲。就像當年一些大公司為解決分散式大型應用所提出的COBRA、EJB、DCOM和ESB等概念一樣難以使用,它們甚至還沒有來得及等使用者完全掌握就退出了歷史的舞臺。當我再次注意到微服務時,是因為Spring Cloud的推出。在大致閱讀了相關文件之後順便“跑”了一下示例專案,我就被其深深吸引了。正是這次接觸,使我改變了對微服務的看法。正巧接下來的一段時間,公司內部正在做架構調整,也發現了微服務有其可用之處,所以便在架構調整中引入了Spring Cloud,並最終在專案中取得了不錯的效果。這加深了我對微服務的好感,所以後續對Spring Cloud進行了更加深入和系統的學習與研究。
  不過話又說回來,雖然公司的第一次微服務架構實踐取得了不錯的效果,但在實踐中也出現了很多問題。感受最深的是,微服務架構不再僅僅是編寫程式碼。單體架構應用開發,一般在完成程式碼編寫之後部署上線就可以了。但在微服務架構下,專案的部署和運維等都面臨著新的考驗。幸好,Spring Cloud本身提供了一系列開箱即用的功能,可以幫助開發人員降低微服務實踐的難度。
  這兩年,圖書市場上雖然已經有了一些與微服務相關的圖書,但卻鮮見一本比較系統、實用,能夠真正解決開發人員實際問題的微服務架構圖書。基於此原因,我下定決心寫一本書,通過講解Spring Cloud為微服務開發所提供的核心元件,帶領讀者進入微服務開發的世界,並將Spring Cloud中涉及的微服務核心解決方案及微服務模式通過示例的方式一一呈現給讀者,以期解決開發人員的實際問題。
本書特色* 本書內容豐富,不僅涵蓋了Spring Cloud的核心元件,而且還介紹瞭如何通過Spring Boot來搭建微服務,並介紹了Kafka、ELK和Redis等流行技術。
* 書中對微服務架構中的“痛點”,比如安全和訊息應用等,都有非常詳細的講解,可以讓讀者快速掌握如何通過OAuth 2.0和JWT構建單點登入安全解決方案。另外,本書還詳細介紹瞭如何使用Kafka和Redis構建基於訊息驅動的應用。
* 本書在講解時給出了大量的開發示例,這些示例通俗易懂,且易於構建、執行和測試,能夠讓讀者在學習微服務架構時快速進入實戰,從而對Spring Cloud所提供的元件有直觀認知。
* 本書通過例項來講解微服務自動化部署解決方案,可以讓讀者不僅能夠掌握微服務開發的知識,還可以學習微服務部署和運維的知識,從而全面理解微服務架構之道。
本書內容  本書共11章,分為3篇。書中首先從開發微服務所使用的基礎框架Spring Boot開始講起,然後重點講述了Spring Cloud中的核心元件,最後介紹了微服務部署的相關技術。
  第1篇 微服務開發基礎——Spring Boot框架及使用(第1、2章)  第1章介紹了微服務架構開發的基礎概念,並對比傳統單體架構開發,總結了微服務架構的優缺點,以及如何將傳統的應用拆分和遷移到微服務架構體系下,並列出了微服務架構的開發原則。
  第2章講述了微服務架構開發的基礎——Spring Boot,並通過Spring Boot技術構建了貫穿本書的一個專案案例——電子商城的單體應用案例。通過對該專案案例的構建,講解了開發時需要的基礎知識,如RestController、JPA和API文件自動生成等技術。此外,本章還講解了Spring Boot的一些特性,如自動配置機制和擴充套件機制等,這些特性在應用開發中都非常有用。
  第2篇 Spring Cloud元件實戰(第3~10章)  第3章探討了微服務架構開發需要關心的關鍵特性及業界的解決方案,並給出了Spring Cloud子專案。本章的最後一節給出了Hello World經典示例程式,讀者可以感受一下通過Spring Cloud構建微服務的威力。
  第4章介紹了微服務架構最重要的一個服務支援元件:服務治理(Eureka)。通過介紹Eureka服務治理,可以讓讀者瞭解服務提供者如何將微服務註冊到服務治理伺服器中,以及服務消費者如何通過服務治理伺服器來呼叫服務。在服務治理技術的基礎上,本章還講解了客戶端負載均衡的實現方式及如何通過Feign實現宣告式服務呼叫。
  第5章講解了當微服務遠端呼叫失敗時如何啟動服務應急預案——服務降級處理(Hystrix)。通過服務降級處理可以避免因呼叫失敗而引起的“雪崩效應”。本章首先講解了如何使用Spring Cloud Hystrix實現服務降級處理;然後對Hy

相關文章