Spring Cloud實戰

Spring Cloud實戰

作者: 胡書敏
出版社: 清華大學
出版在: 2019-07-01
ISBN-13: 9787302527220
ISBN-10: 7302527229





內容描述


本書以Spring Cloud微服務架構為主線,依次通過案例講述Spring Cloud的常用組件。看完本書後,大家會比較熟悉基於 Spring Cloud微服務架構的開發技術。 本書分為11章,內容包括Spring Boot微服務入門、Spring Data連接數據庫、Eureka服務治理框架、Ribbon負載均衡組件、HyStrix服務容錯組件、Feign服務調用框架、Zuul網關組件、用Spring Cloud Config搭建配置中心、消息機制與消息驅動框架、微服務健康檢查與服務跟蹤,最後給出一個SpringBoot開發Web的實戰案例。 如果你想瞭解Spring Cloud微服務架構,並想以此進階到架構師,那麽本書是不錯的選擇。而且本書還附帶相關代碼和視頻,視頻里包含了所有案例的配置和運行方式,建議大家在觀看視頻、運行代碼的基礎上閱讀本書的文字,這樣能更高效地掌握Spring Cloud微服務開發技巧。


目錄大綱


第1章通過Spring Boot入門微服務 1
1.1 Spring Boot、Spring Cloud與微服務架構 1
1.1.1通過和傳統架構的對比了解微服務的優勢 1
1.1.2 Spring Boot、Spring Cloud和微服務三者的關係 3
1.1.3基於Netflix OSS的Spring Cloud的常用組件 4
1.2通過Maven開發第一個Spring Boot項目 5
1.2.1 Maven是什麼,能帶來什麼幫助 5
1.2.2通過Maven開發Spring Boot的HelloWorld程序 6
1.2.3 Controller類里處理Restful格式的請求 9
1.2.4 @SpringBootApplication註解等價於其他3個註解 11
1.2.5通過配置文件實現熱部署 12
1.3通過Actuator監控Spring Boot運行情況 12
1.3.1準備待監控的項目 13
1.3.2通過/info查看本站點的自定義信息 14
1.3.3通過/health查看本站點的健康信息 14
1.3.4通過/metrics查看本站點的各項指標信息 14
1.3.5 actuator在項目裡的實際用法 15
1.4本章小結 15
第2章用Spring Data框架連接數據庫 16
2.1 Spring Data框架概述 16
2.2 Spring Data通過JPA連接MySQL  17
2.2.1連接MySQL的案例分析 17
2.2.2使用yml格式的配置文件 22
2.2.3通過profile文件映射到不同的運行環境 23
2.3通過JPA實現各種關聯關係 24
2.3.1一對一關聯 24
2.3.2一對多關聯 28
2.3.3多對多關聯 30
2.4本章小結 34
第3章服務治理框架:Eureka  35
3.1了解Eureka框架 35
3.1.1 Eureka能幹什麼 35
3.1.2 Eureka的框架圖 36
3.2構建基本的Eureka應用 36
3.2.1搭建Eureka服務器 36
3.2.2編寫作為服務提供者的Eureka客戶端 38
3.2.3編寫服務調用者的代碼 40
3.2.4通過服務調用者調用服務 42
3.3實現高可用的Eureka集群 43
3.3.1集群的示意圖 43
3.3.2編寫相互註冊的服務器端代碼 43
3.3.3服務提供者只需向其中一台服務器註冊 44
3.3.4修改服務調用者的代碼 45
3.3.5正常場景下的運行效果 45
3.3.6一台服務器宕機後的運行效果 46
3.4 Eureka的常用配置信息 46
3.4.1查看客戶端和服務器端的配置信息 47
3.4.2設置心跳檢測的時間週期 47
3.4.3設置自我保護模式 47
3.4.4其他常用配置信息 48
3.5本章小結 49
第4章負載均衡組件:Ribbon  50
4.1網絡協議和負載均衡 50
4.1.1基於4層和7層的負載均衡策略 50
4.1.2硬件層和軟件層的負載均衡方案比較 51
4.1.3常見的軟件負載均衡策略 51
4.1.4 Ribbon組件基本介紹 52
4.2編寫基本的負載均衡程序 52
4.2.1編寫服務器端的代碼 53
4.2.2編寫客戶端調用的代碼 53
4.3 Ribbon中重要組件的用法 55
4.3.1 ILoadBalancer:負載均衡器接口 55
4.3.2 IRule:定義負載均衡規則的接口 56
4.3.3 IPing:判斷服務器是否可用的接口 57
4.4 Ribbon整合Eureka組件 58
4.4.1整體框架的說明 59
4.4.2編寫Eureka服務器 60
4.4.3編寫Eureka服務提供者 61
4.4.4在Eureka服務調用者裡引入Ribbon  62
4.4.5重寫IRule和IPing接口 64
4.4.6實現雙服務器多服務提供者的高可用效果 67
4.5配置Ribbon的常用參數 69
4.5.1參數的影響範圍 69
4.5.2歸納常用的參數 69
4.5.3在類裡設置Ribbon參數 70
4.6本章小結 71
第5章服務容錯組件:HyStrix  72
5.1在微服務系統裡引入Hystrix的必要性 72
5.1.1通過一些算術題了解系統發生錯誤的概率 72
5.1.2用通俗方式總結Hystrix的保護措施 73
5.2通過案例了解Hystrix的各種使用方式 74
5.2.1準備服務提供者 74
5.2.2以同步方式調用正常工作的服務 75
5.2.3以異步方式調用服務 77
5.2.4調用不可用服務會啟動保護機制 78
5.2.5調用Hystrix時引入緩存 80
5.2.6歸納Hystrix的基本開發方式 82
5.3通過Hystrix實踐各種容錯保護機制 82
5.3.1強制開啟或關閉斷路器 82
5.3.2根據流量情況按命令組開啟斷路器 83
5.3.3降級服務後的自動恢復嘗試措施 85
5.3.4線程級別的隔離機制 87
5.3.5信號量級別的隔離機制 89
5.3.6通過合併批量處理URL請求 90
5.4 Hystrix與Eureka的整合 94
5.4.1準備Eureka服務器項目 94
5.4.2服務提供者的代碼結構 95
5.4.3在服務提供者項目裡引入斷路器機制 96
5.4.4在服務調用者項目裡引入合併請求機制 97
5.5本章小結 100
第6章服務調用框架:Feign  101
6.1通過案例快速上手Feign  101
6.1.1編寫服務註冊項目和服務提供項目 101
6.1.2通過Feign調用服務 102
6.1.3通過比較其他調用方式來了解Feign的封裝性 104
6.2 Feign的常見使用方式 105
6.2.1通過繼承改善項目架構 105
6.2.2通過註解輸出調用日誌 107
6.2.3壓縮請求和返回以提升訪問效率 108
6.3通過Feign使用Ribbon負載均衡特性 109
6.3.1準備Eureka服務器以及多個服務提供者 109
6.3.2通過Feign以Ribbon負載均衡的方式調用服務 110
6.4 Feign整合Hystrix  111
6.5本章小結 113
第7章微服務架構的網關組件:Zuul  114
7.1通過案例入門Zuul組件的用法 114
7.1.1搭建簡單的基於Zuul組件的網關 114
7.1.2通過運行結果體會Zuul轉發請求的效果 116
7.2 Zuul請求過濾器 116
7.2.1 http請求生命週期和Zuul過濾器 116
7.2.2過濾器的常規用法 117
7.2.3指定過濾器的優先級 119
7.2.4通過error過濾器處理路由時的異常情況 121
7.2.5動態增加過濾器 123
7.3通過Zuul實現路由功能的實踐方案 126
7.3.1簡單路由的做法 126
7.3.2通過forward跳轉到本地頁面 127
7.3.3路由到具體的服務 128
7.3.4定義映射url請求的規則 129
7.3.5配置路由的例外規則 130
7.4 Zuul天然整合了Ribbon和Hystrix  131
7.4.1案例的準備工作 131
7.4.2 Zuul組件包含Ribbon和Hystrix模塊的依賴 132
7.4.3以Ribbon負載均衡的方式實現路由 132
7.4.4在Zuul網關中引入Hystrix  134
7.5本章小結 136
第8章用Spring Cloud Config搭建配置中心 137
8.1通過Spring Cloud Config搭建基於Git的配置中心 137
8.1.1 Spring Cloud Config中服務器和客戶端的體系結構 137
8.1.2在Git上準備配置文件 138
8.1.3在服務器中連接Git倉庫 139
8.1.4在客戶端讀取配置文件 141
8.2搭建基於SVN的配置中心 142
8.2.1準備SVN環境 143
8.2.2編寫基於SVN的配置服務器代碼 144
8.2.3在應用中讀取基於SVN客戶端的配置 145
8.3服務器和客戶端的其他常見用法 146
8.3.1總結配置客戶端和服務器的作用 146
8.3.2在服務端驗證配置倉庫訪問權限 147
8.3.3在服務端配置身份驗證信息 147
8.3.4訪問配置倉庫子目錄中的配置 148
8.3.5在本地備份遠端倉庫中的配置 149
8.3.6用本地屬性覆蓋遠端屬性 150
8.3.7 failFast屬性 151
8.3.8與failFast配套的重試相關參數 151
8.4 Spring Cloud Config與Eureka的整合 153
8.4.1本案例的體系結構和項目說明 153
8.4.2準備數據庫環境和Git配置信息 154
8.4.3配置服務器與Eureka服務器合二為一 154
8.4.4配置客戶端與Eureka客戶端合二為一 156
8.4.5查看運行效果 158
8.5本章小結 158
第9章消息機制與消息驅動框架 159
9.1在微服務中實現模塊間的通信 159
9.1.1消息代理和消息中間件 159
9.1.2 Spring Cloud體系中的消息總線 160
9.1.3 Spring Cloud Stream:消息驅動框架 160
9.2消息中間件的案例 161
9.2.1 RabbitMQ的安裝步驟 161
9.2.2通過RabbitMQ發送和接收消息的案例 162
9.2.3 Kafka的安裝步驟 165
9.2.4通過Kafka發送和接收消息的案例 166
9.3通過消息總線封裝消息中間件 168
9.3.1基於RabbitMQ的消息總線案例 168
9.3.2基於Kafka的消息總線案例 169
9.4 Spring Cloud Stream組件的常見用法 170
9.4.1實現基於RabbitMQ的案例 170
9.4.2通過更換綁定器變更消息中間件 173
9.4.3消費組案例演示 174
9.4.4消息分區實例演示 175
9.5本章小結 177
第10章微服務健康檢查與服務跟踪 178
10.1通過Spring Boot Admin監控微服務 178
10.1.1監控單個服務 178
10.1.2與Eureka的整合 181
10.1.3設置報警郵件 184
10.2通過Sleuth組件跟踪服務調用鏈路 185
10.2.1基於Sleuth案例的總體說明 185
10.2.2關於服務提供者案例的說明 186
10.2.3關於服務調用者案例的說明 186
10.2.4通過運行效果了解Sleuth組件 187
10.2.5通過Sleuth組件分析問題的一般方法 188
10.3整合Zipkin查詢和分析日誌 188
10.3.1搭建Zipkin服務器 188
10.3.2從Zipkin圖表上查看Sleuth發來的日誌 189
10.3.3在MySQL中保存Zipkin數據 191
10.3.4如何根據Zipkin結果觀察調用鏈路 193
10.4本章小結 194
第11章用Spring Boot開發Web案例 195
11.1在Spring Boot中整合JSP及MVC  195
11.1.1以Maven的形式創建Web項目 195
11.1.2在Spring Boot中引入JSP(基於Maven) 197
11.1.3在Spring Boot中引入MVC架構和數據庫服務 198
11.2 Spring Security與Spring Boot的整合 201
11.2.1身份驗證的簡單做法 201
11.2.2進行動態身份驗證的做法 204
11.2.3 Spring Boot Security身份驗證的開發要點 205
11.2.4根據用戶的角色分配不同的資源 205
11.3在Web項目中整合Eureka、Ribbon等組件 210
11.3.1本案例的框架與包含的項目說明 210
11.3.2開發Eureka服務器模塊 211
11.3.3開發前端Web項目 211
11.3.4開發提供用戶驗證的項目 215
11.3.5開發提供賬戶查詢功能的項目(含負載均衡) 216
11.4本章小結 219


作者介紹


胡書敏,在外企和互聯網公司有五年資深架構師工作經驗,博客園知名博主,出版過多本Java方面的書籍,搭建過多個支付和數據分析方面的微服務架構。




相關書籍

The Design and Implementation of Multimedia Software With Examples in Java (Paperback)

作者 David Bernstein

2019-07-01

Beginning ASP.NET for Visual Studio 2015 (Paperback)

作者 William Penberthy

2019-07-01

Beginning Kinect Programming with the Microsoft Kinect SDK (Paperback)

作者 Jarrett Webb James Ashley

2019-07-01