第1章 Spring Cloud概述 1
1.1 傳統的應用 2
1.1.1 單體應用 2
1.1.2 架構演進 3
1.1.3 架構要求 4
1.2 微服務與Spring Cloud 5
1.2.1 什麼是微服務 5
1.2.2 關於Netflix OSS 6
1.2.3 Spring Cloud與Netflix 6
1.2.4 Spring Cloud的主要模塊 6
1.3 學習方麵的準備工作 7
1.3.1 下載本書的軟件及源碼 7
1.3.2 導入本書的案例 7
1.4 本章小結 8
第2章 搭建開發環境 9
2.1 安裝與配置Maven 10
2.1.1 關於Maven 10
2.1.2 下載與安裝Maven 11
2.1.3 配置遠程倉庫 11
2.2 安裝Eclipse 12
2.2.1 Eclipse版本 12
2.2.2 在Eclipse中配置Maven 12
2.3 Spring Boot 13
2.3.1 Spring Boot簡介 13
2.3.2 新建Maven項目 14
2.3.3 編寫啓動類 15
2.3.4 編寫控製器 16
2.3.5 發布REST WebService 17
2.4 Spring Boot配置文件 18
2.4.1 默認配置文件 18
2.4.2 指定配置文件位置 19
2.4.3 yml文件 19
2.4.4 運行時指定profiles配置 20
2.4.5 熱部署 20
2.5 Spring Cloud的版本 21
2.6 本章小結 21
第3章 微服務發布與調用 22
3.1 Eureka介紹 23
3.1.1 關於Eureka 23
3.1.2 Eureka架構 23
3.1.3 服務器端 24
3.1.4 服務提供者 24
3.1.5 服務調用者 24
3.2 第一個Eureka應用 24
3.2.1 構建服務器 24
3.2.2 服務器注冊開關 27
3.2.3 編寫服務提供者 27
3.2.4 編寫服務調用者 29
3.2.5 程序結構 32
3.3 Eureka集群搭建 33
3.3.1 本例集群結構圖 33
3.3.2 改造服務器端 34
3.3.3 改造服務提供者 35
3.3.4 改造服務調用者 37
3.3.5 編寫REST客戶端進行測試 37
3.4 服務實例的健康自檢 38
3.4.1 程序結構 39
3.4.2 使用Spring Boot Actuator 39
3.4.3 實現應用健康自檢 39
3.4.4 服務查詢 42
3.5 Eureka的常用配置 44
3.5.1 心跳檢測配置 44
3.5.2 注冊錶抓取間隔 44
3.5.3 配置與使用元數據 45
3.5.4 自我保護模式 45
3.6 本章小結 46
第4章 負載均衡 47
4.1 Ribbon介紹 48
4.1.1 Ribbon簡介 48
4.1.2 Ribbon子模塊 48
4.1.3 負載均衡器組件 48
4.2 第一個Ribbon程序 49
4.2.1 編寫服務 49
4.2.2 編寫請求客戶端 51
4.2.3 Ribbon的配置 52
4.3 Ribbon的負載均衡機製 53
4.3.1 負載均衡器 53
4.3.2 自定義負載規則 54
4.3.3 Ribbon自帶的負載規則 56
4.3.4 Ping機製 57
4.3.5 自定義Ping 59
4.3.6 其他配置 59
4.4 在Spring Cloud中使用Ribbon 60
4.4.1 準備工作 60
4.4.2 使用代碼配置Ribbon 61
4.4.3 使用配置文件設置Ribbon 63
4.4.4 Spring使用Ribbon的API 64
4.5 RestTemplate負載均衡 66
4.5.1 @LoadBalanced注解概述 66
4.5.2 編寫自定義注解以及攔截器 66
4.5.3 使用自定義攔截器以及注解 68
4.5.4 在控製器中使用RestTemplate 69
4.6 本章小結 71
第5章 REST客戶端Feign 72
5.1 REST客戶端 73
5.1.1 使用CXF調用REST服務 73
5.1.2 使用Restlet調用REST服務 74
5.1.3 Feign框架介紹 75
5.1.4 第一個Feign程序 76
5.1.5 請求參數與返迴對象 77
5.2 使用Feign 78
5.2.1 編碼器 79
5.2.2 解碼器 80
5.2.3 XML的編碼與解碼 80
5.2.4 自定義編碼器與解碼器 83
5.2.5 自定義Feign客戶端 83
5.2.6 使用第三方注解 85
5.2.7 Feign解析第三方注解 86
5.2.8 請求攔截器 89
5.2.9 接口日誌 89
5.3 在Spring Cloud中使用Feign 90
5.3.1 Spring Cloud整閤Feign 91
5.3.2 Feign負載均衡 93
5.3.3 默認配置 93
5.3.4 自定義配置 94
5.3.5 可選配置 97
5.3.6 壓縮配置 98
5.4 本章小結 98
第6章 Spring Cloud的保護機製 99
6.1 概述 100
6.1.1 實際問題 100
6.1.2 傳統的解決方式 101
6.1.3 集群容錯框架Hystrix 101
6.1.4 Hystrix的功能 102
6.2 第一個Hystrix程序 103
6.2.1 準備工作 103
6.2.2 客戶端使用Hystrix 103
6.2.3 調用錯誤服務 105
6.2.4 Hystrix的運作流程 106
6.3 Hystrix的使用 108
6.3.1 命令執行 108
6.3.2 屬性配置 110
6.3.3 迴退 111
6.3.4 迴退的模式 112
6.3.5 斷路器開啓 113
6.3.6 斷路器關閉 116
6.3.7 隔離機製 118
6.3.8 閤並請求 121
6.3.9 請求緩存 125
6.4 在Spring Cloud中使用Hystrix 127
6.4.1 整閤Hystrix 128
6.4.2 命令配置 130
6.4.3 默認配置 131
6.4.4 緩存注解 132
6.4.5 閤並請求注解 134
6.4.6 Feign與Hystrix整閤 136
6.4.7 Hystrix監控 140
6.5 本章小結 142
第7章 微服務集群網關 143
7.1 Zuul框架介紹 144
7.1.1 關於Zuul 144
7.1.2 Zuul的功能 144
7.2 在Web項目中使用Zuul 145
7.2.1 Web項目整閤Zuul 145
7.2.2 測試路由功能 145
7.2.3 過濾器運行機製 147
7.3 在微服務集群中初試Zuul 148
7.3.1 集群搭建 149
7.3.2 路由到集群服務 150
7.3.3 Zuul Http客戶端 153
7.4 路由配置 153
7.4.1 簡單路由 154
7.4.2 跳轉路由 155
7.4.3 Ribbon路由 155
7.4.4 自定義路由規則 156
7.4.5 忽略路由 157
7.5 Zuul的其他配置 157
7.5.1 請求頭配置 157
7.5.2 路由端點 158
7.5.3 Zuul與Hystrix 158
7.5.4 在Zuul中預加載Ribbon 161
7.6 Zuul功能進階 161
7.6.1 過濾器優先級 161
7.6.2 自定義過濾器 162
7.6.3 動態加載過濾器 163
7.6.4 禁用過濾器 165
7.6.5 請求上下文 166
7.6.6 @EnableZuulServer注解 168
7.6.7 error過濾器 169
7.6.8 動態路由 171
7.7 本章小結 172
第8章 微服務與消息驅動 173
8.1 Spring Cloud Stream介紹 174
8.1.1 關於Stream框架 174
8.1.2 Stream框架的組成部分 174
8.1.3 消息代理中間件 174
8.2 RabbitMQ框架 175
8.2.1 RabbitMQ和AMQP 175
8.2.2 下載與運行 176
8.2.3 編寫生産者 177
8.2.4 編寫消費者 179
8.2.5 交換器、綁定與隊列 180
8.3 Apache Kafka框架 181
8.3.1 關於Kafka 181
8.3.2 運行Kafka服務器 182
8.3.3 編寫生産者 182
8.3.4 編寫消費者 184
8.3.5 消費者組 185
8.4 開發消息微服務 185
8.4.1 準備工作 186
8.4.2 編寫生産者 187
8.4.3 編寫消費者 188
8.4.4 更換綁定器 189
8.4.5 Sink、Source與Processor 190
8.4.6 消費者組 191
8.5 本章小結 192
第9章 集群配置中心 193
9.1 概述 194
9.1.1 關於Spring Cloud Config 194
9.1.2 應用結構 195
9.1.3 引導程序簡介 195
9.1.4 搭建SVN環境 196
9.2 構建第一個例子 196
9.2.1 創建服務器 196
9.2.2 配置SVN倉庫 197
9.2.3 創建客戶端 199
9.2.4 從客戶端讀取SVN配置 200
9.2.5 目錄配置總結 201
9.2.6 刷新配置 202
9.2.7 刷新Bean 203
9.3 配置的加密和解密 205
9.3.1 為服務器安裝JCE 205
9.3.2 加密和解密端點 205
9.3.3 SVN存儲加密數據 206
9.3.4 非對稱加密 207
9.4 其他配置 207
9.4.1 服務器健康指示器 207
9.4.2 客戶端的錯誤提前與重試機製 208
9.4.3 安全配置 209
9.4.4 訪問服務器配置 210
9.5 整閤使用 210
9.5.1 準備工作 210
9.5.2 配置服務器、客戶端整閤Eureka 212
9.5.3 整閤Zuul 214
9.5.4 整閤Spring Cloud Bus刷新配置 216
9.5.5 刷新單個節點配置 217
9.6 本章小結 217
第10章 微服務跟蹤 219
10.1 概述 220
10.1.1 實際問題與Sleuth 220
10.1.2 服務跟蹤係統 220
10.1.3 Sleuth的基本概念 220
10.1.4 項目準備 221
10.2 Sleuth整閤Zipkin 222
10.2.1 Zipkin簡介 222
10.2.2 構建Zipkin服務器項目 223
10.2.3 配置微服務 224
10.2.4 查看數據 225
10.2.5 使用MySQL保存數據 228
10.2.6 使用消息采集數據 230
10.3 Sleuth整閤ELK 232
10.3.1 關於ELK 232
10.3.2 下載ELK 233
10.3.3 運行Elasticsearch 233
10.3.4 使用Logstash讀取JSON 234
10.3.5 使用Kibana展示數據 235
10.3.6 使用Logback轉換JSON 237
10.4 本章小結 240
第11章 微服務數據庫實戰 241
11.1 概述 242
11.1.1 關於Spring Data 242
11.1.2 Spring Data的功能 243
11.1.3 Spring Data的模塊 243
11.2 Spring Data與JPA 243
11.2.1 構建項目 244
11.2.2 數據訪問層與業務層 245
11.2.3 自定義數據存儲邏輯 247
11.2.4 方法名查詢 248
11.2.5 使用@Query注解 249
11.3 Spring Data與MongoDB 250
11.3.1 安裝MongoDB 250
11.3.2 配置權限 251
11.3.3 MongoDB的概念 252
11.3.4 構建項目 252
11.3.5 數據訪問層與業務層 253
11.3.6 自定義數據存儲邏輯 254
11.3.7 方法名查詢 256
11.3.8 使用@Query注解 258
11.4 Spring Data與Redis 258
11.4.1 Redis的安裝與配置 258
11.4.2 Redis的數據類型 259
11.4.3 使用Jedis 260
11.4.4 構建Spring Data項目 262
11.4.5 數據訪問層與業務層 263
11.4.6 自定義數據存儲邏輯 265
11.4.7 方法名查詢 267
11.5 本章小結 268
第12章 案例實戰 269
12.1 概述 270
12.1.1 錶現層技術 270
12.1.2 案例概述 270
12.1.3 案例技術選型 270
12.2 Spring Boot與JSP 271
12.2.1 構建項目 271
12.2.2 配置 272
12.2.3 打包部署 273
12.3 模闆引擎Thymeleaf 274
12.3.1 關於Thymeleaf 274
12.3.2 Spring Boot整閤Thymeleaf 274
12.3.3 加載資源 275
12.3.4 獲取請求數據 276
12.3.5 調用Bean方法 276
12.3.6 遍曆集閤 277
12.3.7 錶單提交 277
12.4 圖書管理案例 278
12.4.1 運行案例 278
12.4.2 案例模塊 279
12.4.3 案例架構 279
12.4.4 數據庫 280
12.4.5 用戶登錄 280
12.4.6 新建圖書 284
12.4.7 圖書展示 286
12.5 本章小結 287
· · · · · · (
收起)