《Spring Cloud微服務架構開發實戰》一書由董超,胡熾維編寫,由機械工業出版社出版發行。
基本介紹
- 中文名:Spring Cloud微服務架構開發實戰
- 作者:董超 等
- 類別:計算機/Java
- 出版社:機械工業出版社
- 出版時間:2018年
- 頁數:332 頁
- 定價:79 元
- 開本:16 開
- 裝幀:精裝
- ISBN:9787111604525
內容簡介,圖書目錄,作者簡介,
內容簡介
本書首先從微服務架構興起的背景講起,探討了為何在分散式系統開發中微服務架構將逐漸取代單體架構,然後對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開發的進階讀者閱讀。如果你是運維人員,或者你對微服務架構有興趣,那么本書也非常適合你閱讀。此外,本書也可以作為相關培訓機構的教材使用。
圖書目錄
第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
6.1 API服務網關 138
6.2 Spring Cloud與Netflix Zuul 139
6.3 啟用Zuul路由服務 140
6.3.1 構建Zuul路由伺服器 141
6.3.2 路由測試 142
6.3.3 負載均衡測試 144
6.3.4 Hystrix容錯與監控測試 146
6.4 路由配置規則 146
6.4.1 服務路由默認規則 147
6.4.2 自定義微服務訪問路徑 148
6.4.3 忽略指定微服務 149
6.4.4 設定路由前綴 149
6.4.5 通過靜態URL路徑配置路由映射 150
6.4.6 路由配置順序 151
6.4.7 自定義路由規則 151
6.5 Zuul路由其他設定 151
6.5.1 Header設定 152
6.5.2 HttpClient配置 153
6.5.3 路由配置的動態載入 153
6.6 Zuul容錯與回退 153
6.6.1 實現Zuul的回退 154
6.6.2 服務逾時 156
6.7 Zuul過濾器 157
6.7.1 過濾器特性 158
6.7.2 過濾器類型及生命周期 159
6.7.3 自定義Zuul過濾器 160
6.7.4 禁用Zuul過濾器 161
6.7.5 關於Error過濾器的一點補充 162
6.8 @EnableZuulServer與@EnableZuulProxy比較 164
6.8.1 EnableZuulServer註解的過濾器 164
6.8.2 EnableZuulProxy註解的過濾器 165
第7章 統一配置中心——Config 166
7.1 Spring Cloud Config簡介 166
7.2 快速啟動 168
7.2.1 構建配置伺服器 168
7.2.2 創建套用配置檔案 169
7.2.3 升級微服務配置 172
7.2.4 啟動測試 173
7.2.5 @Value註解 174
7.2.6 關於配置服務的默認配置 174
7.2.7 Spring配置載入順序 175
7.3 配置資源庫 176
7.3.1 配置資源規則詳解 176
7.3.2 集成Git倉庫 177
7.3.3 搜尋目錄 179
7.3.4 本地快取 179
7.3.5 Git訪問配置 180
7.3.6 集成SVN 180
7.3.7 使用檔案系統 181
7.4 配置的加密與解密 181
7.4.1 安裝JCE(Java Cryptography Extension) 181
7.4.2 使用對稱加密 182
7.4.3 加密/解密端點 183
7.4.4 客戶端解密 185
7.4.5 非對稱加密 187
7.5 配置伺服器訪問安全 187
7.6 配置伺服器的高可用 188
7.6.1 整合Eureka 188
7.6.2 快速失敗與回響 189
7.6.3 動態刷新配置 191
第8章 分散式服務跟蹤——Sleuth 192
8.1 Spring Cloud Sleuth簡介 192
8.1.1 快速啟用Sleuth 193
8.1.2 Sleuth與日誌框架 196
8.1.3 有關Span 199
8.2 Sleuth與ELK整合 202
8.2.1 將日誌輸出到Logstash 202
8.2.2 Logstash與Log4j的集成 205
8.3 整合Zipkin服務 206
8.3.1 構建Zipkin伺服器 206
8.3.2 整合微服務 208
8.3.3 Zipkin分析 208
8.3.4 輸出TraceId 211
8.4 Sleuth抽樣採集與採樣率 213
第9章 訊息驅動——Stream 215
9.1 什麼是訊息驅動開發 215
9.1.1 基於訊息中間件開發的優點 216
9.1.2 基於訊息中間件開發的缺點 217
9.2 Spring Cloud Stream簡介 218
9.2.1 套用模型 218
9.2.2 編程模型 220
9.2.3 使用“發布-訂閱”模式 223
9.3 Kafka使用指南 224
9.3.1 Kafka基礎知識 224
9.3.2 搭建Kafka環境 226
9.4 使用訊息對套用重構 228
9.4.1 為商品服務增加快取功能 229
9.4.2 為用戶微服務添加訊息傳送功能 235
9.4.3 為商品微服務添加訊息監聽功能 239
9.4.4 測試 242
9.4.5 自定義訊息通道 245
9.5 Spring Cloud Stream高級主題 246
9.5.1 單元測試 246
9.5.2 錯誤處理 247
9.5.3 訊息處理分發 248
9.5.4 消費者組與訊息分區 249
9.5.5 訊息綁定器 250
9.6 訊息匯流排——Spring Cloud Bus 252
9.6.1 完成配置自動刷新配置 252
9.6.2 發布自定義事件 256
第10章 微服務套用安全——Security 258
10.1 Spring Boot的套用安全 258
10.1.1 實現用戶認證 258
10.1.2 實現用戶鑒權 261
10.2 微服務安全 263
10.3 基於OAuth 2.0的認證 265
10.3.1 OAuth 2.0授權流程 265
10.3.2 客戶端授權模式 266
10.3.3 使用OAuth 2.0完成用戶認證及授權 268
10.3.4 整合API網關服務 274
10.4 基於JWT的認證 275
10.4.1 改造認證服務支持輸出JWT 276
10.4.2 在Zuul中對JWT進行解析 281
10.4.3 改造商品微服務 282
第3篇 微服務與Docker容器技術
第11章 微服務與Docker 288
11.1 Docker簡介 288
11.2 Docker的使用 289
11.2.1 安裝 290
11.2.2 鏡像 293
11.2.3 容器 298
11.2.4 容器實戰:MySQL 299
11.3 Docker與Spring Cloud微服務 301
11.3.1 部署Eureka服務 302
11.3.2 部署套用微服務 304
11.4 微服務與Jenkins 305
11.4.1 安裝Jenkins 306
11.4.2 Jenkins配置 307
11.4.3 構建任務 309
11.5 微服務編排 315
作者簡介
董超 資深程式設計師、架構師。從事軟體研發十多年,擅長移動網際網路和行業套用架構。曾經多次主導大型國有企業系統和移動網際網路平台的研發。現專注於IoT(物聯網)及其套用平台的研發。
胡熾維 全棧工程師。有多年的開發經驗,擅長前端開發技術,並對移動端原生開發技術也有所涉獵。曾經參與過多個網際網路項目的研發和基於Docker的系統運維工作,積累了豐富的一線研發經驗。現主要負責IoT(物聯網)平台前端架構的研發與運維。