第 1章 微服務簡介1
1.1 單體架構及其存在的不足 1
1.1.1 單體架構簡介 1
1.1.2 單體架構存在的不足 2
1.1.3 單體架構使用服務器集群及存在的不足 2
1.2 微服務 3
1.2.1 什麼是微服務 4
1.2.2 微服務的優勢 8
1.3 微服務的不足 9
1.3.1 微服務的復雜度 9
1.3.2 分布式事務 9
1.3.3 服務的劃分 11
1.3.4 服務的部署 11
1.4 微服務和SOA的關係 12
1.5 微服務的設計原則 12
第 2章 Spring Cloud簡介 14
2.1 微服務應該具備的功能 14
2.1.1 服務的注冊與發現 15
2.1.2 服務的負載均衡 15
2.1.3 服務的容錯 16
2.1.4 服務網關 18
2.1.5 服務配置的統一管理 19
2.1.6 服務鏈路追蹤 20
2.2 Spring Cloud 20
2.2.1 簡介 20
2.2.2 常用組件 21
2.2.3 項目一覽 22
2.3 Dubbo簡介 23
2.4 Spring Cloud與Dubbo比較 24
2.5 Kubernetes簡介 25
2.6 Spring Could與Kubernetes比較 27
2.7 總結 28
第3章 構建微服務的準備 29
3.1 JDK的安裝 29
3.1.1 JDK的下載和安裝 29
3.1.2 環境變量的配置 29
3.2 IDEA的安裝 30
3.2.1 IDEA的下載 30
3.2.2 用IDEA創建一個Spring Boot工程 31
3.2.3 用IDEA啓動多個Spring Boot工程實例 33
3.3 構建工具Maven的使用 34
3.3.1 Maven簡介 34
3.3.2 Maven的安裝 34
3.3.3 Maven的核心概念 36
3.3.4 編寫Pom文件 36
3.3.5 Maven構建項目的生命周期 38
3.3.6 常用的Maven命令 39
第4章 開發框架Spring Boot 41
4.1 Spring Boot簡介 41
4.1.1 Spring Boot的特點 41
4.1.2 Spring Boot的優點 42
4.2 用IDEA構建Spring Boot工程 42
4.2.1 項目結構 42
4.2.2 在Spring Boot工程中構建Web程序 43
4.2.3 Spring Boot的測試 44
4.3 Spring Boot配置文件詳解 45
4.3.1 自定義屬性 45
4.3.2 將配置文件的屬性賦給實體類 46
4.3.3 自定義配置文件 47
4.3.4 多個環境的配置文件 48
4.4 運行狀態監控Actuator 48
4.4.1 查看運行程序的健康狀態 50
4.4.2 查看運行程序的Bean 51
4.4.3 使用Actuator關閉應用程序 53
4.4.4 使用shell連接Actuator 54
4.5 Spring Boot整閤JPA 55
4.6 Spring Boot整閤Redis 58
4.6.1 Redis簡介 58
4.6.2 Redis的安裝 58
4.6.3 在Spring Boot中使用Redis 58
4.7 Spring Boot整閤Swagger2,搭建Restful API在綫文檔 60
第5章 服務注冊和發現Eureka 64
5.1 Eureka簡介 64
5.1.1 什麼是Eureka 64
5.1.2 為什麼選擇Eureka 64
5.1.3 Eureka的基本架構 65
5.2 編寫Eureka Server 65
5.3 編寫Eureka Client 68
5.4 源碼解析Eureka 71
5.4.1 Eureka的一些概念 71
5.4.2 Eureka的高可用架構 72
5.4.3 Register服務注冊 72
5.4.4 Renew服務續約 76
5.4.5 為什麼Eureka Client獲取服務實例這麼慢 77
5.4.6 Eureka 的自我保護模式 78
5.5 構建高可用的Eureka Server集群 79
5.6 總結 81
第6章 負載均衡Ribbon 82
6.1 RestTemplate簡介 82
6.2 Ribbon簡介 83
6.3 使用RestTemplate和Ribbon來消費服務 83
6.4 LoadBalancerClient簡介 86
6.5 源碼解析Ribbon 88
第7章 聲明式調用Feign 99
7.1 寫一個Feign客戶端 99
7.2 FeignClient詳解 103
7.3 FeignClient的配置 104
7.4 從源碼的角度講解Feign的工作原理 105
7.5 在Feign中使用HttpClient和OkHttp 108
7.6 Feign是如何實現負載均衡的 110
7.7 總結 112
第8章 熔斷器Hystrix 113
8.1 Hystrix簡介 113
8.2 Hystrix解決的問題 113
8.3 Hystrix的設計原則 115
8.4 Hystrix的工作機製 115
8.5 在RestTemplate和Ribbon上使用熔斷器 116
8.6 在Feign上使用熔斷器 117
8.7 使用Hystrix Dashboard監控熔斷器的狀態 118
8.7.1 在RestTemplate中使用Hystrix Dashboard 118
8.7.2 在Feign中使用Hystrix Dashboard 121
8.8 使用Turbine聚閤監控 122
第9章 路由網關Spring Cloud Zuul 124
9.1 為什麼需要Zuul 124
9.2 Zuul的工作原理 124
9.3 案例實戰 126
9.3.1 搭建Zuul服務 126
9.3.2 在Zuul上配置API接口的版本號 129
9.3.3 在Zuul上配置熔斷器 130
9.3.4 在Zuul中使用過濾器 131
9.3.5 Zuul的常見使用方式 133
第 10章 服務網關 135
10.1 服務網關的實現原理 135
10.2 斷言工廠 136
10.2.1 After路由斷言工廠 136
10.2.2 Header斷言工廠 138
10.2.3 Cookie路由斷言工廠 139
10.2.4 Host路由斷言工廠 140
10.2.5 Method路由斷言工廠 140
10.2.6 Path 路由斷言工廠 141
10.2.7 Query 路由斷言工廠 141
10.3 過濾器 142
10.3.1 過濾器的作用 143
10.3.2 過濾器的生命周期 144
10.3.3 網關過濾器 144
10.3.4 全局過濾器 151
10.4 限流 153
10.4.1 常見的限流算法 153
10.4.2 服務網關的限流 154
10.5 服務化 156
10.5.1 工程介紹 156
10.5.2 service-gateway工程詳細介紹 157
10.6 總結 159
第 11章 服務注冊和發現Consul 160
11.1 什麼是Consul 160
11.1.1 基本術語 160
11.1.2 Consul的特點和功能 161
11.1.3 Consul的原理 161
11.1.4 Consul的基本架構 161
11.1.5 Consul服務注冊發現流程 163
11.2 Consul與Eureka比較 163
11.3 下載和安裝Consul 164
11.4 使用Spring Cloud Consul進行服務注冊和發現 165
11.4.1 服務提供者consul-provider 165
11.4.2 服務消費者consul-provider 167
11.5 使用Spring Cloud Consul Config做服務配置中心 168
11.6 動態刷新配置 170
11.7 總結 171
第 12章 配置中心Spring Cloud Config 172
12.1 Config Server從本地讀取配置文件 172
12.1.1 構建Config Server 172
12.1.2 構建Config Client 174
12.2 Config Server從遠程Git倉庫讀取配置文件 175
12.3 構建高可用的Config Server 176
12.3.1 構建Eureka Server 177
12.3.2 改造Config Server 178
12.3.3 改造Config Client 178
12.4 使用Spring Cloud Bus刷新配置 180
12.5 將配置存儲在MySQL數據庫中 182
12.5.1 改造config-server工程 182
12.5.2 初始化數據庫 183
第 13章 服務鏈路追蹤Spring Cloud Sleuth 184
13.1 為什麼需要Spring Cloud Sleuth 184
13.2 基本術語 184
13.3 案例講解 186
13.3.1 啓動Zipkin Server 187
13.3.2 構建服務提供者 187
13.3.3 構建服務消費者 189
13.3.4 項目演示 191
13.4 在鏈路數據中添加自定義數據 192
13.5 使用RabbitMQ 傳輸鏈路數據 192
13.6 在MySQL數據庫中存儲鏈路數據 194
13.7 在ElasticSearch中存儲鏈路數據 195
13.8 用Kibana展示鏈路數據 196
第 14章 微服務監控Spring Boot Admin 198
14.1 使用Spring Boot Admin監控Spring Boot應用程序 199
14.1.1 創建Spring Boot Admin Server 199
14.1.2 創建Spring Boot Admin Client 200
14.2 使用Spring Boot Admin監控Spring Cloud微服務 202
14.2.1 構建Admin Server 202
14.2.2 構建Admin Client 204
14.3 在Spring Boot Admin中添加Security和Mail組件 205
14.3.1 Spring Boot Admin集成Security組件 206
14.3.2 Spring Boot Admin集成Mail組件 208
第 15章 Spring Boot Security詳解 209
15.1 Spring Security簡介 209
15.1.1 什麼是Spring Security 209
15.1.2 為什麼選擇Spring Security 209
15.1.3 Spring Security提供的安全模塊 210
15.2 Spring Boot Security與Spring Security的關係 211
15.3 Spring Boot Security案例詳解 211
15.3.1 構建Spring Boot Security工程 211
15.3.2 配置Spring Security 213
15.3.3 編寫相關界麵 215
15.3.4 Spring Security方法級彆上的保護 220
15.3.5 從數據庫中讀取用戶的認證信息 223
15.4 總結 228
第 16章 使用Spring Cloud OAuth2保護微服務係統 230
16.1 什麼是OAuth2 230
16.2 如何使用Spring OAuth2 231
16.2.1 OAuth2 Provider 231
16.2.2 OAuth2 Client 235
16.3 案例分析 236
16.3.1 編寫Eureka Server 237
16.3.2 編寫Uaa授權服務 237
16.3.3 編寫service-hi資源服務 244
16.4 總結 250
第 17章 使用Spring Security OAuth2和JWT保護微服務係統 251
17.1 JWT簡介 251
17.1.1 什麼是JWT 251
17.1.2 JWT的結構 252
17.1.3 JWT的應用場景 253
17.1.4 如何使用JWT 253
17.2 案例分析 253
17.2.1 案例架構設計 253
17.2.2 編寫主Maven工程 254
17.2.3 編寫Eureka Server 256
17.2.4 編寫Uaa授權服務 256
17.2.5 編寫user-service資源服務 262
17.3 總結 270
第 18章 使用Spring Cloud構建微服務綜閤案例 271
18.1 案例介紹 271
18.1.1 工程結構 271
18.1.2 使用的技術棧 271
18.1.3 工程架構 272
18.1.4 功能展示 274
18.2 案例詳解 277
18.2.1 準備工作 278
18.2.2 構建主Maven工程 278
18.2.3 構建eureka-server工程 279
18.2.4 構建config-server工程 280
18.2.5 構建Zipkin工程 281
18.2.6 構建monitoring-service工程 282
18.2.7 構建uaa-service工程 284
18.2.8 構建gateway-service工程 286
18.2.9 構建admin-service工程 287
18.2.10 構建user-service工程 287
18.2.11 構建blog-service工程 290
18.2.12 構建log-service工程 291
18.3 啓動源碼工程 294
18.4 項目演示 295
18.5 總結 296
· · · · · · (
收起)