1 Spring Cloud與微服務概述 10
1.1傳統的單體老項目 10
1.1.1單體應用 10
1.1.2改進單體應用的架構 10
1.1.3向微服務靠攏 11
1.2什麼是微服務 12
1.2.1 微服務介紹 12
1.2.2 使用微服務架構的好處 12
1.2.3 使用微服務架構的害處 13
1.2.4 重構前的準備工做 13
1.3什麼是Spring Cloud 14
1.3.1 Spring Cloud介紹 14
1.3.2 Spring Cloud模塊介紹 14
1.3.3 Spring Cloud版本介紹 14
1.4 關於本書 18
1.4.1 本書源碼 18
1.4.2 做者介紹 18
1.5本章小結 18
2實戰前的準備工做 18
2.1開發環境的準備 18
2.1.1 JDK 18
2.1.2 Maven 19
2.1.3 Eclipse 19
2.2 Spring Boot入門 19
2.2.1 Spring Boot簡介 19
2.2.2 搭建Spring Boot項目 20
2.2.3 編寫第一個REST接口 21
2.2.4 讀取配置文件 22
2.2.5 profiles多環境配置 24
2.2.6 熱部署 24
2.2.7 actuator監控 26
2.2.8統一異常處理 29
2.2.9異步執行 31
2.2.10隨機端口 34
2.3本章小結 36算法
3 Eureka 註冊中心 36
3.1 Eureka 37
3.1.1 Eureka介紹 37
3.1.2 Eureka與Zookeeper的對比 37
3.2 使用Eureka編寫註冊中心服務 38
3.3 編寫服務提供者 40
3.3.1 建立項目註冊到Eureka 40
3.3.2 編寫提供接口 42
3.4 編寫服務消費者 43
3.4.1 直接消費接口 43
3.4.2 經過Eureka來消費接口 44
3.5 開啓Eureka認證 45
3.5.1 Eureka服務開啓認證 45
3.5.2 客戶端註冊配置修改 46
3.6 Eureka高可用搭建 46
3.6.1 高可用原理 46
3.6.2 搭建步驟 46
3.6.3 客戶端配置修改 47
3.7 經常使用配置講解 48
3.7.1 關閉自我保護 48
3.7.2 自定義Eureka的Instance ID 48
3.7.3 自定義實例跳轉連接 50
3.7.4 快速移除已經失效的服務信息 50
3.8 擴展使用 51
3.8.1 Eureka REST API 51
3.8.2 元數據使用 54
3.8.3 EurekaClient使用 55
3.8.4 健康檢查 57
3.9 本章小結 59
4 客戶端負載均衡Ribbon 60
4.1 Ribbon 60
4.1.1 Ribbon介紹 60
4.1.2 Ribbon模塊 60
4.1.3 Ribbon使用 60
4.2 RestTemplate結合Ribbon使用 62
4.2.1 RestTemplate 使用 62
4.2.2整合Ribbon 65
4.2.3 RestTemplate負載均衡示例 65
4.2.4 @LoadBalanced註解原理 67
4.2.5 Ribbon API使用 72
4.2.6 Ribbon飢餓加載 73
4.3 負載均衡策略介紹 74
4.4 自定義負載策略 76
4.4.1 自定義負載策略 76
4.4.2 使用自定義負載策略 76
4.5 配置講解 77
4.5.1 經常使用配置 77
4.5.2 代碼配置Ribbon 78
4.6 重試機制 79
4.6.1 RetryRule重試 79
4.6.2 Spring Retry重試 80
4.7 本章小結 80
5 聲明式REST客戶端Feign 80
5.1 使用Feign調用服務接口 81
5.1.1 Feign介紹 81
5.1.2 Spring Cloud中集成Feign 81
5.1.3 使用Feign調用接口 82
5.2 自定義Feign的配置 83
5.2.1 配置日誌 83
5.2.2 契約配置 85
5.2.3 Basic認證配置 86
5.2.4 超時時間配置 87
5.2.5 客戶端組件配置 87
5.2.6 GZIP壓縮配置 89
5.2.7 編碼器解碼器配置 90
5.4 脫離Spring Cloud 使用Feign 90
5.4.1 原生註解方式 90
5.4.2 構建Feign對象 92
5.4.3 代碼示例 92
5.4.4 其餘配置 93
5.5 本章小結 94
6 Hystrix 服務容錯處理 94
6.1 Hystrix 95
6.1.1 Hystrix簡介 95
6.1.2 Hystrix簡單使用 95
6.1.3 回退支持 96
6.1.4 信號量策略配置 97
6.1.5 線程隔離策略配置 98
6.1.6 結果緩存 98
6.1.7 緩存清除 100
6.1.8 合併請求 101
6.2 Spring Cloud中使用Hystrix 104
6.2.1 簡單使用 104
6.2.2 配置詳解 105
6.2.3 Feign整合Hystrix服務容錯 109
6.2.4 Feign中禁用Hystrix 112
6.3 Hystrix監控 112
6.4 整合Dashboard查看監控數據 113
6.5 Turbine聚合集羣數據 116
6.5.1 Turbine使用 116
6.5.2 context-path致使監控失敗 117
6.6 本章小結 117
7 API 網關 117
7.1 Zuul 簡介 118
7.2 使用Zuul構建微服務網關 118
7.2.1 簡單使用 118
7.2.2 集成Eureka 119
7.3 Zuul路由配置 120
7.3.1服務默認路由 120
7.3.2指定具體服務路由 120
7.3.3路由前綴 120
7.3.4本地跳轉 121
7.4 Zuul過濾器講解 121
7.4.1 過濾器類型 122
7.4.2 請求生命週期 122
7.4.3 使用過濾器 124
7.4.4 過濾器禁用 126
7.4.5 過濾器中傳遞數據 127
7.4.6 過濾器攔截請求 128
7.4.7 過濾器中異常處理 130
7.5 Zuul容錯和回退 133
7.5.1 容錯機制 133
7.5.2 回退機制 134
7.6 Zuul高可用 136
7.7 本章小結 137sql
8 分佈式配置管理 137
8.1 Spring Cloud Config 137
8.2 自研配置管理框架Smconf 137
8.2.1 Smconf介紹 137
8.2.2爲何選擇自研框架 138
8.2.3 Smconf功能介紹 138
8.3 Smconf 原理 139
8.3.1 架構圖 139
8.3.2 基本概念 139
8.3.3 客戶端講解 140
8.3.4 服務端講解 140
8.4 Smconf 部署 140
8.4.1 Mongodb安裝 140
8.4.2 Zookeeper安裝 141
8.4.3 Smconf Server部署 142
8.5項目中集成Smconf 143
8.5.1 集成Smconf 143
8.5.2 使用Smconf 145
8.5.3 配置更新回調 146
8.6 Smconf詳細使用 147
8.6.1 源碼編譯問題 147
8.6.2 後臺帳號管理 147
8.6.3 REST API 148
8.7 Smconf源碼解析 151
8.7.1 Client啓動 151
8.7.2啓動加載配置 153
8.7.3 配置修改推送原理 155
8.8 本章小結 156
9 Sleuth 服務跟蹤 156
9.1 Spring Cloud集成Sleuth 156
9.2 整合Logstash 157
9.2.1 ELK簡介 157
9.2.2 輸出JSON格式日誌 158
9.3 整合Zipkin 159
9.3.1 建立Zipkin數據收集服務 160
9.3.2 項目集成Zipkin發送調用鏈數據 161
9.3.3 抽樣採集數據 162
9.3.4 用RabbitMq代替Http發送調用鏈數據 163
9.3.5 用Elasticsearch存儲調用鏈數據 164
9.4 本章小結 165
10 微服務之間調用的安全認證 165
10.1 什麼是JWT 165
10.2 建立統一的認證服務 166
10.2.1 表結構 166
10.2.2 JWT工具類封裝 167
10.2.3 認證接口 168
10.3 服務提供方進行調用認證 169
10.3.1 編寫驗證Filter 169
10.3.2 註冊Filter進行驗證 171
10.4 服務消費方申請Token 172
10.4.1 調用前獲取Token 172
10.4.2 緩存Token信息 172
10.4.3 採用定時器刷新Token 173
10.5 Feign調用前統一申請Token傳遞到調用的服務中 174
10.5.1 定義請求攔截器 174
10.5.2 配置攔截器 175
10.6 Zuul中統一申請Token傳遞到路由的服務中 176
10.7 本章小結 177
11 Spring Boot Admin 177
11.1 Spring Boot Admin使用 177
11.1.1 建立Spring Boot Admin項目 177
11.1.2 將服務註冊到Spring Boot Admin 179
11.1.3 如何在Admin中查看各個服務的日誌 180
11.2 開啓認證 181
11.2.1 Spring Boot Admin服務開啓認證 181
11.2.2 開啓認證後註冊不上問題 182
11.3 集成Eureka 182
11.3.1 集成Eureka的好處 182
11.3.2 集成步驟 183
11.4 集成Turbine 184
11.4.1 集成Turbine的好處 184
11.4.2 集成步驟 184
11.5 監控服務 185
11.5.1 郵件警報 185
11.5.2 自定義釘釘警報 186
11.6 本章小結 190
12 服務的API文檔管理 190
12.1 Swagger簡介 190
12.1.1 Swagger介紹 190
12.1.2 Swagger的優點 190
12.2 集成Swagger管理API文檔 191
12.2.1 封裝Swagger starter 191
12.2.2 項目中集成Swagger starter 192
12.2.3 使用Swagger生成文檔 193
12.2.4 在線測試接口 194
12.3 Swagger註解 196
12.3.1 Api 196
12.3.2 ApiModel 197
12.3.3 ApiModelProperty 198
12.3.4 ApiParam 198
12.3.5 ApiOperation 199
12.3.6 ApiResponse和ApiResponses 199
12.3.7 ApiImplicitParam和ApiImplicitParams 200
12.4 Eureka 控制檯快速查看Swagger文檔 201
12.5 本章小結 202緩存
13 API網關擴展 202
13.1 用戶認證 202
13.1.1 動態管理不須要攔截的API請求 202
13.1.2 建立認證的用戶服務 205
13.1.3 路由以前的認證 206
13.1.4 傳遞認證以後的用戶信息到下游微服務中 207
13.1.5 內部服務間的用戶信息傳遞 208
13.2 服務限流 210
13.2.1 限流算法 210
13.2.2 單節點限流 211
13.2.3 集羣限流 216
13.2.4 具體服務限流 220
13.2.5 具體接口限流 221
13.3 服務降級 228
13.3.1 利用配置中心動態降級 228
13.4 灰度發佈 230
13.4.1原理講解 231
13.4.2根據用戶作灰度發佈 231
13.4.3根據IP作灰度發佈 235
13.5 本章小結 236
14 微服務之緩存 236
14.1 Guava Cache本地緩存 236
14.1.1 Guava Cache簡介 236
14.1.2 代碼示例 236
14.1.3 回收策略 237
14.2 Redis緩存 238
14.2.1 Redistemplate 操做Redis 238
14.2.2 Repository方式操做Redis 239
14.2.3 Spring Cache 緩存數據 242
14.2.4擴展Spring Cache支持對每一個緩存的時間配置 248
14.2.5緩存異常處理 250
14.2.6自定義緩存工具類 251
14.3 防止緩存穿透方案 254
14.3.1 什麼是緩存穿透 254
14.3.2 緩存穿透的危害 254
14.3.3 解決方案 255
14.3.4 布隆過濾器介紹 255
14.3.5 代碼示例 255
14.4 防止緩存雪崩方案 257
14.4.1 什麼是緩存雪崩 257
14.4.2 緩存雪崩的危害 257
14.4.3 解決方案 257
14.4.4 代碼示例 258
14.4.5 分佈式鎖方式 258
14.5 本章小結 259
15 微服務之存儲 260
15.1 存儲選型 260
15.2 Mongodb 261
15.2.1 集成Spring Data Mongodb 261
15.2.2 添加數據操做 261
15.2.3 索引使用 263
15.2.4 修改數據操做 265
15.2.5 刪除數據操做 267
15.2.6 查詢數據操做 268
15.2.7 GridFS操做 269
15.2.8 Repository方式操做數據 271
15.2.9 自增ID實現 276
15.2.10 批量更新擴展 278
15.3 Mysql 282
15.3.1集成Spring JdbcTemplate 282
15.3.2 JdbcTemplate代碼示例 283
15.3.3封裝JdbcTemplate 使用更簡單 284
15.3.4擴展JdbcTemplate使用方式 284
15.3.5常見問題 288
15.4 Elasticsearch 291
15.4.1集成Spring Data Elasticsearch 291
15.4.2 Repository示例 292
15.4.3 ElasticsearchTemplate示例 295
15.4.4 索引構建方式 299
15.5 本章小結 300
16 微服務之分佈式事物解決方案 301
16.1 兩階段型 301
16.2 TCC補償型 301
16.3 最終一致性 302
16.3.1 原理講解 302
16.3.2 建立可靠性消息服務 306
16.3.3 消息存儲表設計 307
16.3.4 提供服務接口 309
16.3.5 建立消息發送系統 314
16.3.6 消費消息邏輯 318
16.3.7 消息管理系統 321
16.4 最大努力通知型 321
16.4.1 介紹 321
16.4.2 原理 321
16.5 本章小結 322
17 分佈式任務調度 322
17.1 Elastic Job 322
17.1.1 Elastic-Job介紹 322
17.1.2 任務調度目前存在的問題 322
17.1.3 爲何選擇Elastic-Job 323
17.2 快速集成 324
17.3 任務使用 325
17.3.1 簡單任務 325
17.3.2 數據流任務 326
17.3.3 腳本任務 327
17.4 配置參數講解 328
17.4.1 註冊中心配置 328
17.4.2 做業配置 329
17.4.3 dataflow獨有配置 331
17.4.4 script獨有配置 331
17.5 多節點並行調度 331
17.5.1 分片概念 331
17.5.2 任務節點分片策略 332
17.5.3 業務數據分片處理 333
17.6 事件追蹤 336
17.7 擴展功能 337
17.7.1 自定義監聽器 337
17.7.2 定義異常處理 338
17.8 運維平臺 339
17.8.1功能列表 340
17.8.2部署運維平臺 340
17.8.3運維平臺使用 340
17.9 使用經驗分享 345
17.9.1任務的劃分 345
17.9.2任務的監控 345
17.9.3任務的擴展性 345
17.9.4任務的節點數量 346
17.9.5任務的重複執行 346
17.9.6 overwrite覆蓋問題 347
17.9.7 流水式任務 347
17.10 本章小結 348
18 分庫分表解決方案 348
18.1 Sharding-JDBC 348
18.1.1介紹 348
18.1.2功能列表 348
18.1.3概念介紹 349
18.2 快速集成 350
18.3 讀寫分離實戰 352
18.3.1準備好數據 352
18.3.2 配置讀寫分離 353
18.3.3 驗證讀從庫 354
18.3.4 驗證寫主庫 356
18.3.5 Hint強制路由主庫 358
18.4 分庫分表實戰 359
18.4.1 經常使用分片算法 359
18.4.2 使用分片算法 359
18.4.3 不分庫只分表實戰 360
18.4.4 既分庫又分表實戰 364
18.5 分佈式主鍵 368
18.6 本章小結 370安全
購買請查看原文,京東有貨,我本身的微店不能售賣,被下架了。架構
尹吉歡
我不差錢啊負載均衡