本書以一個名為EagleEye的項目為主綫,介紹雲、微服務等概念以及Spring Boot和Spring Cloud等諸多Spring項目,並介紹如何將EagleEye項目一步一步地從單體架構重構成微服務架構,進而將這個項目拆分成眾多微服務,讓它們運行在各自的Docker容器中,實現持續集成/持續部署,並*終自動部署到雲環境中。針對在重構過程中遇到的各種微服務開發會麵臨的典型問題(包括開發、測試和運維等問題),本書介紹瞭解決這些問題的核心模式,以及在實戰中如何選擇特定Spring Cloud子項目或其他工具解決這些問題。 本書適閤擁有構建分布式應用程序的經驗、擁有Spring的知識背景以及對學習構建基於微服務的應用程序感興趣的Java開發人員閱讀。對於希望使用微服務構建基於雲的應用程序,以及希望瞭解如何將基於微服務的應用部署到雲上的開發人員,本書也具有很好的學習參考價值。
目錄
第 1章 歡迎邁入雲世界,Spring 1
1.1 什麼是微服務 1
1.2 什麼是Spring,為什麼它與微服務有關 4
1.3 在本書中讀者會學到什麼 5
1.4 為什麼本書與你有關 6
1.5 使用Spring Boot來構建微服務 6
1.6 為什麼要改變構建應用的方式 10
1.7 雲到底是什麼 11
1.8 為什麼是雲和微服務 13
1.9 微服務不隻是編寫代碼 14
1.9.1 核心微服務開發模式 15
1.9.2 微服務路由模式 16
1.9.3 微服務客戶端彈性模式 17
1.9.4 微服務安全模式 18
1.9.5 微服務日誌記錄和跟蹤模式 19
1.9.6 微服務構建和部署模式 20
1.10 使用Spring Cloud構建微服務 22
1.10.1 Spring Boot 23
1.10.2 Spring Cloud Config 23
1.10.3 Spring Cloud服務發現 24
1.10.4 Spring Cloud與Netflix Hystrix和Netflix Ribbon 24
1.10.5 Spring Cloud與Netflix Zuul 24
1.10.6 Spring Cloud Stream 24
1.10.7 Spring Cloud Sleuth 24
1.10.8 Spring Cloud Security 25
1.10.9 代碼供應 25
1.11 通過示例來介紹Spring Cloud 25
1.12 確保本書的示例是有意義的 27
1.13 小結 28
第 2章 使用Spring Boot構建微服務 29
2.1 架構師的故事:設計微服務架構 31
2.1.1 分解業務問題 31
2.1.2 建立服務粒度 32
2.1.3 互相交流:定義服務接口 35
2.2 何時不應該使用微服務 36
2.2.1 構建分布式係統的復雜性 36
2.2.2 服務器散亂 36
2.2.3 應用程序的類型 36
2.2.4 數據事務和一緻性 37
2.3 開發人員的故事:用SpringBoot和Java構建微服務 37
2.3.1 從骨架項目開始 37
2.3.2 引導Spring Boot應用程序:編寫引導類 39
2.3.3 構建微服務的入口:Spring Boot控製器 40
2.4 DevOps工程師的故事:構建運行時的嚴謹性 44
2.4.1 服務裝配:打包和部署微服務 46
2.4.2 服務引導:管理微服務的配置 47
2.4.3 服務注冊和發現:客戶端如何與微服務通信 48
2.4.4 傳達微服務的“健康狀況” 49
2.5 將視角綜閤起來 51
2.6 小結 52
第3章 使用Spring Cloud配置服務器控製配置 53
3.1 管理配置(和復雜性) 54
3.1.1 配置管理架構 55
3.1.2 實施選擇 56
3.2 構建Spring Cloud配置服務器 58
3.2.1 創建Spring Cloud Config引導類 61
3.2.2 使用帶有文件係統的Spring Cloud配置服務器 62
3.3 將Spring Cloud Config與Spring Boot客戶端集成 64
3.3.1 建立許可證服務對Spring Cloud Config服務器的依賴 65
3.3.2 配置許可證服務以使用Spring Cloud Config 66
3.3.3 使用Spring Cloud配置服務器連接數據源 69
3.3.4 使用@Value注解直接讀取屬性 72
3.3.5 使用Spring Cloud配置服務器和Git 73
3.3.6 使用Spring Cloud配置服務器刷新屬性 73
3.4 保護敏感的配置信息 75
3.4.1 下載並安裝加密所需的Oracle JCE jar 75
3.4.2 創建加密密鑰 76
3.4.3 加密和解密屬性 76
3.4.4 配置微服務以在客戶端使用加密 78
3.5 *後的想法 79
3.6 小結 80
第4章 服務發現 81
4.1 我的服務在哪裏 82
4.2 雲中的服務發現 84
4.2.1 服務發現架構 84
4.2.2 使用Spring和Netflix Eureka進行服務發現實戰 87
4.3 構建Spring Eureka服務 88
4.4 通過Spring Eureka注冊服務 90
4.5 使用服務發現來查找服務 93
4.5.1 使用Spring DiscoveryClient查找服務實例 95
4.5.2 使用帶有Ribbon功能的Spring RestTemplate調用服務 97
4.5.3 使用Netflix Feign客戶端調用服務 98
4.6 小結 100
第5章 使用Spring Cloud和NetflixHystrix的客戶端彈性模式 101
5.1 什麼是客戶端彈性模式 102
5.1.1 客戶端負載均衡模式 103
5.1.2 斷路器模式 103
5.1.3 後備模式 103
5.1.4 艙壁模式 104
5.2 為什麼客戶端彈性很重要 104
5.3 進入Hystrix 107
5.4 搭建許可服務器以使用Spring Cloud和Hystrix 107
5.5 使用Hystrix實現斷路器 109
5.5.1 對組織微服務的調用超時 111
5.5.2 定製斷路器的超時時間 112
5.6 後備處理 113
5.7 實現艙壁模式 115
5.8 基礎進階—微調Hystrix 118
5.9 綫程上下文和Hystrix 122
5.9.1 ThreadLocal與Hystrix 122
5.9.2 HystrixConcurrencyStrategy實戰 125
5.10 小結 129
第6章 使用Spring Cloud和Zuul進行服務路由 131
6.1 什麼是服務網關 132
6.2 Spring Cloud和Netflix Zuul簡介 133
6.2.1 建立一個Zuul Spring Boot項目 134
6.2.2 為Zuul服務使用Spring Cloud注解 134
6.2.3 配置Zuul與Eureka進行通信 135
6.3 在Zuul中配置路由 135
6.3.1 通過服務發現自動映射路由 136
6.3.2 使用服務發現手動映射路由 137
6.3.3 使用靜態URL手動映射路由 140
6.3.4 動態重新加載路由配置 142
6.3.5 Zuul和服務超時 143
6.4 Zuul的真正威力:過濾器 144
6.5 構建* 一個生成關聯ID的Zuul前置過濾器 147
6.6 構建接收關聯ID的後置過濾器 155
6.7 構建動態路由過濾器 157
6.7.1 構建路由過濾器的骨架 159
6.7.2 實現run()方法 159
6.7.3 轉發路由 161
6.7.4 整閤 162
6.8 小結 163
第7章 保護微服務 164
7.1 OAuth2簡介 165
7.2 從小事做起:使用Spring和OAuth2來保護單個端點 167
7.2.1 建立EagleEye OAuth2驗證服務 167
7.2.2 使用OAuth2服務注冊客戶端應用程序 168
7.2.3 配置EagleEye用戶 171
7.2.4 驗證用戶 172
7.3 使用OAuth2保護組織服務 175
7.3.1 將Spring Security和OAuth2 jar添加到各個服務 176
7.3.2 配置服務以指嚮OAuth2驗證服務 176
7.3.3 定義誰可以訪問服務 177
7.3.4 傳播OAuth2訪問令牌 180
7.4 JSON Web Token與OAuth2 183
7.4.1 修改驗證服務以頒發JWT令牌 184
7.4.2 在微服務中使用JWT 188
7.4.3 擴展JWT令牌 189
7.4.4 從JWT令牌中解析自定義字段 191
7.5 關於微服務安全的總結 193
7.6 小結 195
第8章 使用Spring Cloud Stream的事件驅動架構 196
8.1 為什麼使用消息傳遞、EDA和微服務 197
8.1.1 使用同步請求-響應方式來傳達狀態變化 198
8.1.2 使用消息傳遞在服務之間傳達狀態更改 199
8.1.3 消息傳遞架構的缺點 201
8.2 Spring Cloud Stream簡介 202
8.3 編寫簡單的消息生産者和消費者 205
8.3.1 在組織服務中編寫消息生産者 205
8.3.2 在許可證服務中編寫消息消費者 210
8.3.3 在實際操作中查看消息服務 213
8.4 Spring Cloud Stream用例:分布式緩存 214
8.4.1 使用Redis來緩存查找 215
8.4.2 定義自定義通道 221
8.4.3 將其全部匯集在一起:在收到消息時清除緩存 222
8.5 小結 223
第9章 使用Spring Cloud Sleuth和Zipkin進行分布式跟蹤 224
9.1 Spring Cloud Sleuth與關聯ID 225
9.1.1 將Spring Cloud Sleuth添加到許可證服務和組織服務中 226
9.1.2 剖析Spring Cloud Sleuth跟蹤 226
9.2 日誌聚閤與Spring Cloud Sleuth 227
9.2.1 Spring Cloud Sleuth與Papertrail實現實戰 229
9.2.2 創建Papertrail賬戶並配置syslog連接器 230
9.2.3 將Docker輸齣重定嚮到Papertrail 232
9.2.4 在Papertrail中搜索Spring Cloud Sleuth的跟蹤ID 234
9.2.5 使用Zuul將關聯ID添加到HTTP響應 235
9.3 使用Open Zipkin進行分布式跟蹤 237
9.3.1 添加Spring Cloud Sleuth和Zipkin依賴項 238
9.3.2 配置服務以指嚮Zipkin 238
9.3.3 安裝和配置Zipkin服務器 239
9.3.4 設置跟蹤級彆 240
9.3.5 使用Zipkin跟蹤事務 241
9.3.6 可視化更復雜的事務 243
9.3.7 捕獲消息傳遞跟蹤 244
9.3.8 添加自定義跨度 246
9.4 小結 248
第 10章 部署微服務 250
10.1 EagleEye:在雲中建立核心基礎設施 251
10.1.1 使用* 的RDS創建PostgreSQL數據庫 253
10.1.2 在AWS中創建Redis集群 257
10.1.3 創建ECS集群 258
10.2 * 越基礎設施:部署EagleEye 262
10.3 構建和部署管道的架構 265
10.4 構建和部署管道實戰 268
10.5 開始構建和部署管道:GitHub和Travis CI 270
10.6 使服務能夠在Travis CI中構建 270
10.6.1 構建的核心運行時配置 273
10.6.2 安裝預構建工具 275
10.6.3 執行構建 277
10.6.4 標記源代碼 277
10.6.5 構建微服務並創建Docker鏡像 279
10.6.6 將鏡像推送到Docker Hub 279
10.6.7 在* ECS中啓動服務 280
10.6.8 啓動平颱測試 280
10.7 關於構建和部署管道的總結 282
10.8 小結 282
附錄A 在桌麵運行雲服務 283
附錄B OAuth2授權類型 291
這本書真的讓我對 Spring 微服務的理解提升到瞭一個全新的高度。我之前嘗試過一些微服務相關的零散資料,但總是感覺碎片化,難以形成係統性的認知。這本書的結構非常清晰,從基礎概念的講解,到核心組件(如 Spring Cloud、Eureka、Config、Gateway、Sleuth 等)的詳細剖析,再到實際案例的落地,循序漸進,邏輯嚴謹。讓我印象最深刻的是書中關於服務拆分、API 網關設計、服務注冊與發現、配置中心管理以及分布式鏈路追蹤等方麵的講解,不僅理論紮實,更提供瞭大量的代碼示例和實踐建議,讓我能夠快速上手,並在實際工作中進行參考。特彆是對於熔斷、限流、降級這些高可用方麵的處理,書中給齣瞭非常實用的方案和代碼實現,讓我對構建穩定可靠的微服務係統有瞭更深的信心。這本書不僅僅是技術的堆砌,它更注重設計思想的傳達,讓我明白“為什麼”要這麼做,而不是僅僅“怎麼”做。讀完之後,感覺自己真的掌握瞭一套完整的微服務開發方法論,對未來的項目開發充滿瞭期待。
評分我之前對雲計算和Java開發都有一定的瞭解,但一直想學習如何將這些技術結閤起來構建現代化的微服務應用。這本書正好滿足瞭我的需求。它將 Spring Boot、Spring Cloud 以及雲計算的一些核心概念融會貫通,提供瞭一個非常全麵的學習路徑。從基礎的 Spring Boot 配置,到 Spring Cloud 的各個組件的使用,再到如何將這些微服務部署到雲平颱上,書中的講解都非常詳細和到位。我印象深刻的是書中關於“分布式配置管理”的講解,讓我明白瞭如何集中管理不同服務的配置信息,避免瞭手動修改配置文件的麻煩。而且,書中關於“服務熔斷降級”的策略和實現,對於提升微服務的健壯性非常有幫助。我之前對這些概念隻是有所耳聞,這本書讓我真正理解瞭它們的原理和應用場景。總體來說,這本書是學習 Spring 微服務和雲計算Java開發的絕佳參考資料,它讓我能夠係統地掌握構建現代化、高可用、可擴展的微服務係統的核心技術和設計理念。
評分這本《Spring微服務實戰》真的像一本寶藏!我之前一直用 Spring Boot 來構建單體應用,雖然也很方便,但隨著業務的增長,單體應用的管理和部署越來越吃力,性能瓶頸也逐漸顯現。讀瞭這本書,我纔真正理解瞭微服務架構的優勢所在,以及如何通過 Spring Cloud 來優雅地實現服務拆分和解耦。書中提供的“雲原生Java開發教程書”的視角,讓我明白微服務與雲計算技術的融閤是未來的大勢所趨。我特彆喜歡書中關於“如何選擇閤適的微服務通信方式”的分析,以及對於不同技術棧(如 Eureka、Nacos、Consul)的比較,讓我能夠根據實際需求做齣更明智的技術選型。書中對於“微服務設計的開發指南”部分,更是讓我受益匪淺,它不僅僅是教我如何寫代碼,更教我如何去思考,如何去設計一個麵嚮未來的微服務係統。這本書的語言風格也很接地氣,沒有太多晦澀難懂的術語,讀起來輕鬆愉快,但內容卻十分有料。
評分這本書的深度和廣度都超齣瞭我的預期。我本來以為它會停留在 Spring Cloud 的基礎應用層麵,但沒想到它深入探討瞭微服務架構的一些更深層次的設計原則和最佳實踐。書中關於領域驅動設計(DDD)在微服務中的應用,以及如何進行服務邊界的劃分,讓我對如何構建一個可維護、可擴展的微服務係統有瞭全新的認識。它不像一些教程那樣隻是羅列 API,而是引導讀者去思考微服務的設計哲學,比如如何處理分布式事務,如何實現最終一緻性,如何在服務間進行高效的通信(RESTful、RPC、消息隊列等),以及如何構建彈性的微服務係統。書中對一些高級特性的講解,如服務網格(Service Mesh)的初步介紹,也讓我對微服務技術的未來發展有瞭更清晰的洞察。我尤其欣賞書中對於“運維”這個環節的重視,很多微服務教程都會忽略這一點,但這本書卻花瞭不少篇幅講解如何進行日誌收集、監控告警、灰度發布等,這對於真正落地微服務至關重要。
評分這本書簡直是為我量身定製的!我一直覺得微服務聽起來很美好,但實際落地的時候總會遇到各種各樣的問題,比如服務間的通信、數據一緻性、部署和運維的復雜性等等,讓我頭疼不已。這本書把這些難點都一一拆解開來,用非常通俗易懂的語言進行解釋,並且提供瞭大量具體的操作指南。我特彆喜歡其中關於“服務治理”和“服務安全”章節的講解,讓我明白瞭如何有效地管理和保護大量的微服務實例,避免瞭許多潛在的安全隱患。書中關於 Kubernetes 在微服務中的應用也讓我大開眼界,讓我看到瞭微服務與容器化技術結閤的強大威力,為我未來的容器化部署之路指明瞭方嚮。最重要的是,這本書的案例非常貼閤實際業務場景,讓我能夠將學到的知識直接應用到我的工作中,解決瞭很多之前懸而未決的問題。讀這本書的過程中,我感覺自己就像在和一個經驗豐富的架構師在交流,他把所有復雜的概念都講得明明白白,讓我茅塞頓開。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有