圖書內容
本書以Spring Cloud微服務架構為主線,依次通過案例講述Spring Cloud的常用組件。看完本書後,大家會比較熟悉基於 Spring Cloud微服務架構的開發技術。 本書分為11章,內容包括Spring Boot微服務入門、Spring Data連線資料庫、Eureka服務治理框架、Ribbon負載均衡組件、HyStrix服務容錯組件、Feign服務調用框架、Zuul網關組件、用Spring Cloud Config搭建配置中心、訊息機制與訊息驅動框架、微服務健康檢查與服務跟蹤,最後給出一個SpringBoot開發Web的實戰案例。 如果你想了解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的案例分析 ...
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.1Eureka能幹什麼 35
3.1.2Eureka的框架圖 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.4Eureka的常用配置信息 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.4Ribbon組件基本介紹 52
4.2編寫基本的負載均衡程式 52
4.2.1編寫伺服器端的代碼 53
4.2.2編寫客戶端調用的代碼 53
4.3Ribbon中重要組件的用法 55
4.3.1ILoadBalancer:負載均衡器接口 55
4.3.2IRule:定義負載均衡規則的接口 56
4.3.3IPing:判斷伺服器是否可用的接口 57
4.4Ribbon整合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.4Hystrix與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.2Feign的常見使用方式 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.4Feign整合Hystrix 111
6.5本章小結 113
第7章微服務架構的網關組件:Zuul 114
7.1通過案例入門Zuul組件的用法 114
7.1.1搭建簡單的基於Zuul組件的網關 114
7.1.2通過運行結果體會Zuul轉發請求的效果 116
7.2Zuul請求過濾器 116
7.2.1http請求生命周期和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.4Zuul天然整合了Ribbon和Hystrix 131
7.4.1案例的準備工作 131
7.4.2Zuul組件包含Ribbon和Hystrix模組的依賴 132
7.4.3以Ribbon負載均衡的方式實現路由 132
7.4.4在Zuul網關中引入Hystrix 134
7.5本章小結 136
第8章用SpringCloudConfig搭建配置中心 137
8.1通過SpringCloudConfig搭建基於Git的配置中心 137
8.1.1SpringCloudConfig中伺服器和客戶端的體系結構 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.7failFast屬性 151
8.3.8與failFast配套的重試相關參數 151
8.4SpringCloudConfig與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.2SpringCloud體系中的訊息匯流排 160
9.1.3SpringCloudStream:訊息驅動框架 160
9.2訊息中間件的案例 161
9.2.1RabbitMQ的安裝步驟 161
9.2.2通過RabbitMQ傳送和接收訊息的案例 162
9.2.3Kafka的安裝步驟 165
9.2.4通過Kafka傳送和接收訊息的案例 166
9.3通過訊息匯流排封裝訊息中間件 168
9.3.1基於RabbitMQ的訊息匯流排案例 168
9.3.2基於Kafka的訊息匯流排案例 169
9.4SpringCloudStream組件的常見用法 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通過SpringBootAdmin監控微服務 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章用SpringBoot開發Web案例 195
11.1在SpringBoot中整合JSP及MVC 195
11.1.1以Maven的形式創建Web項目 195
11.1.2在SpringBoot中引入JSP(基於Maven) 197
11.1.3在SpringBoot中引入MVC架構和資料庫服務 198
11.2SpringSecurity與SpringBoot的整合 201
11.2.1身份驗證的簡單做法 201
11.2.2進行動態身份驗證的做法 204
11.2.3SpringBootSecurity身份驗證的開發要點 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