SpringCloud微服務架構開發實戰
網站
更多書籍點選進入>> 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
相關文章
- 【分散式微服務企業快速架構】SpringCloud分散式、微服務、雲架構快速開發平臺分散式微服務架構SpringGCCloud
- SpringCloud(1) ——回顧微服務和微服務架構SpringGCCloud微服務架構
- SpringCloud 微服務最佳開發實踐SpringGCCloud微服務
- springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- SpringCloud構建微服務架構-Hystrix服務降級SpringGCCloud微服務架構
- 一. SpringCloud簡介與微服務架構SpringGCCloud微服務架構
- Java開發架構篇:領域驅動設計架構基於SpringCloud搭建微服務Java架構SpringGCCloud微服務
- (一)springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- 微服務開發攻略之淺析微服務架構微服務架構
- 基於SpringCloud的微服務架構設計SpringGCCloud微服務架構
- springcloud微服務分散式雲架構簡介SpringGCCloud微服務分散式架構
- 微服務架構大型電商專案開發流程及技術實戰微服務架構
- SpringCloud微服務實戰——搭建企業級開發框架(九):使用Nacos發現、配置和管理微服務SpringGCCloud微服務框架
- SpringCloud企業分散式微服務雲架構快速開發平臺原始碼SpringGCCloud分散式微服務架構原始碼
- SpringCloud微服務實戰——搭建企業級開發框架(十一):整合OpenFeign用於微服務間呼叫SpringGCCloud微服務框架
- (三)springcloud微服務分散式雲架構-SpringCloud整合專案簡介SpringGCCloud微服務分散式架構
- SpingCloud Alibaba實戰(1:微服務與SpringCloud Alibaba)GCCloud微服務Spring
- 基於SpringCloud的Microservices架構實戰案例-架構拆解SpringGCCloudROS架構
- SpringCloud微服務實戰——搭建企業級開發框架(十九):Gateway使用knife4j聚合微服務文件SpringGCCloud微服務框架Gateway
- SpringCloud微服務實戰——搭建企業級開發框架(三十七):微服務日誌系統設計與實現SpringGCCloud微服務框架
- 微服務架構最佳實踐微服務架構
- SpringCloud微服務實戰——搭建企業級開發框架(三十四):SpringCloud + Docker + k8s實現微服務叢集打包部署-Maven打包配置SpringGCCloud微服務框架DockerK8SMaven
- 乾貨篇:超多內容微服務架構實戰微服務架構
- .Net微服務實戰之技術架構分層篇微服務架構
- 微服務架構中的“參天大樹”:SpringBoot+SpringCloud+Docker微服務架構Spring BootGCCloudDocker
- Java開發微服務實現分散式架構應用總結Java微服務分散式架構
- 微服務實戰(九):落地微服務架構到直銷系統(回顧總結)微服務架構
- 微服務2:微服務全景架構微服務架構
- SpringCloud微服務實戰——搭建企業級開發框架(三十五):SpringCloud + Docker + k8s實現微服務叢集打包部署-叢集環境部署SpringGCCloud微服務框架DockerK8S
- SpringCloud微服務實戰——搭建企業級開發框架(十):使用Nacos分散式配置中心SpringGCCloud微服務框架分散式
- 微服務架構實戰160講-楊波-極客時間微服務架構
- 微服務架構Day04-SpringBoot之web開發微服務架構Spring BootWeb
- SpringCloud微服務實戰——搭建企業級開發框架(十二):OpenFeign+Ribbon實現負載均衡SpringGCCloud微服務框架負載
- 微服務實戰SpringCloud之Spring Cloud Feign替代HTTP Client微服務SpringGCCloudHTTPclient
- 微服務實戰系列(四)-註冊中心springcloud alibaba nacos微服務SpringGCCloud
- SpringCloud Alibaba實戰(7:nacos註冊中心管理微服務)SpringGCCloud微服務
- 微服務架構:構建PHP微服務生態微服務架構PHP
- 微服務架構初探微服務架構