本書聚焦于SpringCloud生態(tài)中相關框架的源碼分析,包括注冊中心、配置中心、網(wǎng)關、遠程調(diào)用 及負載均衡。通過閱讀本書,讀者能夠迅速了解上述框架的核心處理流程。源碼分析在大多數(shù)情況下遵循測試用例優(yōu)先的原則,以確保源碼的可復現(xiàn)性。
本書適合對Spring Framework 框架有一定實踐經(jīng)驗,并具備Spring Boot 框架和SpringCloud 生態(tài)基礎開發(fā)能力的讀者。
本書從源碼入手,由淺入深,系統(tǒng)講解Spring Cloud框架,結合理論和實踐,幫助讀者更好地理解、掌握相關知識點
在當前微服務盛行的環(huán)境中,Java語言體系中的Spring Cloud生態(tài)是一個相對完善的微服務開發(fā)解決方案。作為Spring Cloud生態(tài)的活躍使用者,筆者對其實現(xiàn)細節(jié)十分感興趣,通過實踐記錄了一些源碼流程,并決定將這些見解分享給更多的讀者,因此產(chǎn)生了這本書。
1. 本書的組織結構和主要內(nèi)容
本書共分為30章。
第1~3章主要圍繞注冊中心(Spring Cloud Consul)進行分析,內(nèi)容如下。
第1章說明Spring Cloud Consul源碼環(huán)境的搭建。
第2章分析Spring Cloud Consul的服務注冊。
第3章分析Spring Cloud Consul的服務發(fā)現(xiàn)。
第4~9章主要圍繞配置中心(Spring Cloud Config)進行分析,內(nèi)容如下。
第4章說明Spring Cloud Config源碼環(huán)境的搭建。
第5章分析Spring Cloud Config服務器端的Factories的相關內(nèi)容。
第6章分析Spring Cloud Config服務器端的加密內(nèi)容。
第7章分析Spring Cloud Config服務器端的環(huán)境操作。
第8章分析Spring Cloud Config客戶端的Factories的相關內(nèi)容。
第9章分析Spring Cloud Config客戶端的啟動流程。
第10~17章主要圍繞網(wǎng)關(Spring Cloud Gateway)進行分析,內(nèi)容如下。
第10章說明Spring Cloud Gateway源碼環(huán)境的搭建。
第11章分析Spring Cloud Gateway中的 Factories。
第12章分析Spring Cloud Gateway中的Event。
第13章分析Spring Cloud Gateway中的Endpoint。
第14章分析Spring Cloud Gateway中的Route。
第15章分析Spring Cloud Gateway中的Filter。
第16章分析Spring Cloud Gateway中的Predicate。
第17章分析Spring Cloud Gateway中的請求處理流程。
第18~23章主要圍繞遠程調(diào)用(Spring Cloud OpenFeign)進行分析,內(nèi)容如下。
第18章說明Spring Cloud OpenFeign源碼環(huán)境的搭建。
第19章分析Feign 項目中的核心類。
第20章分析Spring Cloud OpenFeign中的Client。
第21章分析Spring Cloud OpenFeign中的Factories。
第22章分析Spring Cloud OpenFeign中的@EnableFeignClients。
第23章分析Spring Cloud OpenFeign中的SpringMvcContract。
第24~30章主要圍繞負載均衡(Spring Cloud Loadbalancer、Spring Retry、resilience4j)相關項目進行分析,內(nèi)容如下。
第24章介紹Spring Cloud Loadbalancer。
第25章介紹Spring Cloud Loadbalancer中的負載均衡客戶端與請求。
第26章介紹Spring Retry。
第27章介紹Spring Retry中的RetryContext與RetryPolicy。
第28章介紹Spring Retry中的RetryOperations。
第29章分析Spring Retry與AOP的相關內(nèi)容。
第30章介紹resilience4j。
2. 本書面向的讀者
本書適合對Spring Framework框架有一定實踐經(jīng)驗,并具備Spring Boot框架和Spring Cloud生態(tài)基礎開發(fā)能力的讀者。通過本書,讀者將學到Spring Cloud生態(tài)框架的使用及核心實現(xiàn)邏輯。
3. 致謝
在此,誠摯地感謝所有Spring Cloud生態(tài)的創(chuàng)建者和開發(fā)者,感謝他們杰出的工作和對開源項目的熱情,沒有他們就沒有本書的誕生。
由于編者水平有限,書中不當之處在所難免,歡迎廣大同行和讀者批評指正。
王 濤
2024年12月
第1章 Spring Cloud Consul 初識 1
1.1 構建Spring Cloud Consul源碼環(huán)境 1
1.2 驗證Spring Cloud Consul源碼環(huán)境 3
本章小結 9
第2章 Spring Cloud Consul的服務注冊 10
2.1 Spring Cloud Commons中的服務注冊 10
2.2 Spring Cloud Consul中的服務注冊 14
本章小結 22
第3章 Spring Cloud Consul的服務發(fā)現(xiàn) 24
3.1 @EnableDiscoveryClient 24
3.1.1 SpringFactoryImportSelector工作原理 25
3.1.2 EnableDiscoveryClientImportSelector工作原理 26
3.2 DiscoveryClient 27
3.3 ServiceInstance 29
本章小結 30
第4章 Spring Cloud Config 初識 31
4.1 構建Spring Cloud Config 源碼環(huán)境 31
4.2 驗證Spring Cloud Config源碼環(huán)境 33
4.3 EnvironmentController 34
4.4 EncryptionController 39
本章小結 40
第5章 Spring Cloud Config服務器端的Factories 41
5.1 Spring Cloud Config 服務器端的BootstrapConfiguration 41
5.1.1 ConfigServerBootstrapConfiguration 41
5.1.2 EncryptionAutoConfiguration 45
5.2 Spring Cloud Config 服務器端的ApplicationListener 48
5.3 Spring Cloud Config服務器端的EnableAutoConfiguration 注解 48
5.3.1 ConfigServerAutoConfiguration 49
5.3.2 VaultEncryptionAutoConfiguration 52
5.4 Spring Cloud Config 服務器端的FailureAnalyzer 53
本章小結 53
第6章 Spring Cloud Config服務器端的加密 54
6.1 Spring Cloud Config 加密解密示例 54
6.2 TextEncryptor 57
6.3 TextEncryptorLocator 57
6.3.1 SingleTextEncryptorLocator 57
6.3.2 KeyStoreTextEncryptorLocator 58
6.4 EnvironmentEncryptor 59
6.4.1 VaultEnvironmentEncryptor 60
6.4.2 CipherEnvironmentEncryptor 61
6.4.3 CipherEnvironmentEncryptor的應用示例 63
6.5 ResourceEncryptor 65
本章小結 69
第7章 Spring Cloud Config服務器端的環(huán)境操作 70
7.1 EnvironmentRepository 70
7.1.1 AbstractVaultEnvironmentRepository 71
7.1.2 RedisEnvironmentRepository 75
7.1.3 PassthruEnvironmentRepository 76
7.1.4 NativeEnvironmentRepository 78
7.1.5 AbstractScmEnvironmentRepository 83
7.1.6 SvnKitEnvironmentRepository 85
7.1.7 JGitEnvironmentRepository 87
7.1.8 JdbcEnvironmentRepository 90
7.1.9 CompositeEnvironmentRepository 92
7.1.10 CredhubEnvironmentRepository 93
7.2 EnvironmentRepositoryProperties和EnvironmentRepositoryFactory 94
本章小結 95
第8章 Spring Cloud Config客戶端的Factories 96
8.1 Spring Cloud Config 客戶端的EnableAutoConfiguration 96
8.2 Spring Cloud Config 客戶端的BootstrapConfiguration 98
8.2.1 ConfigServiceBootstrapConfiguration 99
8.2.2 DiscoveryClientConfigServiceBootstrapConfiguration 100
8.3 Spring Cloud Config 客戶端的EnvironmentPostProcessor 101
8.4 Spring Cloud Config 客戶端的 FailureAnalyzer 102
8.5 Spring Cloud Config 客戶端的ConfigDataLocationResolver 102
8.6 Spring Cloud Config 客戶端的 ConfigDataLoader 106
8.7 Spring Cloud Config 客戶端的 BootstrapRegistryInitializer 112
本章小結 113
第9章 Spring Cloud Config客戶端的啟動流程 114
9.1 編寫和執(zhí)行Spring Cloud Config 客戶端測試用例 114
9.2 Spring Cloud Config 客戶端的啟動過程 115
9.3 Spring Cloud Config 客戶端的刷新機制 122
9.4 Spring Cloud Config 客戶端的服務實例監(jiān)控器 123
本章小結 126
第10章 Spring Cloud Gateway 初識 127
10.1 構建Spring Cloud Gateway 源碼環(huán)境 127
10.2 Spring Cloud Gateway 基本認知 129
本章小結 130
第11章 Spring Cloud Gateway 中的 Factories 131
11.1 Spring Cloud Gateway中的Factories詳解 131
11.2 Spring Cloud Gateway 自動裝配 132
11.2.1 GatewayClassPathWarningAutoConfiguration 132
11.2.2 GatewayResilience4JCircuitBreakerAutoConfiguration 133
11.2.3 GatewayNoLoadBalancerClientAutoConfiguration 134
11.2.4 GatewayMetricsAutoConfiguration 136
11.2.5 GatewayRedisAutoConfiguration 139
11.2.6 GatewayDiscoveryClientAutoConfiguration 140
11.2.7 SimpleUrlHandlerMappingGlobalCorsAutoConfiguration 141
11.2.8 GatewayReactiveLoadBalancerClientAutoConfiguration 142
11.2.9 GatewayReactiveOAuth2AutoConfiguration 143
11.2.10 GatewayAutoConfiguration 143
11.3 Spring Cloud Gateway 環(huán)境處理 144
11.4 Spring Cloud Gateway 異常分析器 145
本章小結 145
第12章 Spring Cloud Gateway 中的Event 146
12.1 EnableBodyCachingEvent 146
12.2 FilterArgsEvent 147
12.3 PredicateArgsEvent 148
12.4 RefreshRoutesEvent 148
12.5 WeightDefinedEvent 149
本章小結 151
第13章 Spring Cloud Gateway 中的Endpoint 152
13.1 AbstractGatewayControllerEndpoint 152
13.2 GatewayControllerEndpoint 154
13.3 GatewayLegacyControllerEndpoint 156
本章小結 158
第14章 Spring Cloud Gateway 中的 Route 159
14.1 路由基礎 159
14.2 RouteDefinitionLocator 160
14.3 RouteLocator 164
本章小結 169
第15章 Spring Cloud Gateway中的Filter 170
15.1 過濾器概述 170
15.2 GatewayFilter 171
15.2.1 ModifyResponseGatewayFilter 172
15.2.2 ThrottleGatewayFilter 175
15.2.3 ModifyRequestBodyGatewayFilterFactory 176
15.2.4 RewriteResponseHeaderGatewayFilterFactory 178
15.2.5 RewritePathGatewayFilterFactory 178
15.2.6 StripPrefixGatewayFilterFactory 179
15.3 GlobalFilter 181
15.3.1 NettyWriteResponseFilter 182
15.3.2 GatewayMetricsFilter 183
15.3.3 WebClientHttpRoutingFilter 184
15.3.4 NoLoadBalancerClientFilter 185
15.3.5 WebClientWriteResponseFilter 186
15.3.6 ForwardRoutingFilter 187
15.3.7 ForwardPathFilter 187
15.3.8 AdaptCachedBodyGlobalFilter 188
15.3.9 RouteToRequestUrlFilter 189
15.3.10 RemoveCachedBodyFilter 190
15.3.11 NettyRoutingFilter 190
15.3.12 ReactiveLoadBalancerClientFilter 194
15.3.13 WebsocketRoutingFilter 197
15.3.14 LoadBalancerServiceInstanceCookieFilter 198
本章小結 199
第16章 Spring Cloud Gateway中的Predicate 200
16.1 謂詞概述 200
16.1.1 GatewayPredicate 201
16.1.2 RoutePredicateFactory 202
16.2 AfterRoutePredicateFactory 203
16.3 BeforeRoutePredicateFactory 204
16.4 BetweenRoutePredicateFactory 205
16.5 CookieRoutePredicateFactory 205
16.6 HeaderRoutePredicateFactory 206
16.7 HostRoutePredicateFactory 207
16.8 MethodRoutePredicateFactory 208
16.9 PathRoutePredicateFactory 209
16.10 QueryRoutePredicateFactory 211
16.11 RemoteAddrRoutePredicateFactory 212
16.12 WeightRoutePredicateFactory 213
本章小結 214
第17章 Spring Cloud Gateway中的請求處理流程 215
17.1 流程概述 215
17.2 RoutePredicateHandlerMapping 217
17.3 FilteringWebHandler 220
17.4 請求處理流程調(diào)試 221
本章小結 226
第18章 Spring Cloud OpenFeign 初識 227
18.1 構建Spring Cloud OpenFeign源碼環(huán)境 227
18.2 構建Feign源碼環(huán)境 228
18.3 Feign使用說明 230
本章小結 231
第19章 Feign 核心分析 232
19.1 Feign Builder 232
19.2 Feign中的MethodHandler 238
19.3 Contract 243
19.3.1 Headers注解在類上的處理 244
19.3.2 RequestLine注解在方法上的處理 245
19.3.3 Body注解在方法上的處理 245
19.3.4 Headers注解在方法上的處理 246
19.3.5 Param注解在方法參數(shù)上的處理 246
19.3.6 QueryMap注解在方法參數(shù)上的處理 247
19.3.7 HeaderMap注解在方法參數(shù)上的處理 248
19.3.8 parseAndValidateMetadata 248
19.4 ParseHandlersByName 252
19.5 Feign請求處理流程 254
本章小結 255
第20章 Spring Cloud OpenFeign中的Client 256
20.1 Spring Cloud OpenFeign Client分析 256
20.2 RetryableFeignBlockingLoadBalancerClient 257
20.3 FeignBlockingLoadBalancerClient 261
20.4 Spring Cloud OpenFeign Client 自動裝配 263
本章小結 264
第21章 Spring Cloud OpenFeign中的Factories 265
21.1 Spring Cloud OpenFeign Factories 概述 265
21.2 FeignHalAutoConfiguration 266
21.3 FeignAutoConfiguration 267
21.3.1 FeignClientProperties 267
21.3.2 DefaultGzipDecoderConfiguration 268
21.3.3 FeignAutoConfiguration中的Bean定義 269
21.4 FeignAcceptGzipEncodingAutoConfiguration 和
FeignContentGzipEncodingAutoConfiguration 271
21.5 FeignLoadBalancerAutoConfiguration 273
本章小結 275
第22章 Spring Cloud OpenFeign 中的@EnableFeignClients 276
22.1 @EnableFeignClients 276
22.2 FeignClientsRegistrar 277
22.3 FeignClientFactoryBean 283
22.4 Targeter 288
22.5 FeignCircuitBreakerInvocationHandler 290
本章小結 292
第23章 Spring Cloud OpenFeign 中的SpringMvcContract 293
23.1 SpringMvcContract 293
23.1.1 parseAndValidateMetadata 294
23.1.2 processAnnotationOnClass 296
23.1.3 processAnnotationOnMethod 297
23.1.4 processAnnotationsOnParamete 299
23.2 AnnotatedParameterProcessor 301
本章小結 307
第24章 Spring Cloud Loadbalancer 初識 308
24.1 構建Spring Cloud Loadbalancer 源碼環(huán)境 308
24.2 Spring Cloud Loadbalancer 簡單案例 310
本章小結 313
第25章 Spring Cloud Loadbalancer中的負載均衡客戶端與請求 314
25.1 ServiceInstanceChooser與LoadBalancerClient 314
25.2 BlockingLoadBalancerClient分析 315
25.2.1 ServiceInstanceChooser 315
25.2.2 BlockingLoadBalancerClient 317
25.3 負載均衡請求相關分析 320
25.4 LoadBalancerLifecycle 322
本章小結 324
第26章 Spring Retry 初識 325
26.1 構建Spring Retry 源碼環(huán)境 325
26.2 Spring Retry 簡單案例 326
26.3 Spring Retry 核心接口 328
26.4 RetryConfiguration 329
本章小結 331
第27章 Spring Retry中的RetryContext與RetryPolicy分析 332
27.1 RetryContext 概述 332
27.2 RetryPolicy 概述 333
27.3 ExceptionClassifierRetryPolicy 334
27.4 SimpleRetryPolicy 336
27.5 CircuitBreakerRetryPolicy 337
27.6 NeverRetryPolicy 339
27.7 MaxAttemptsRetryPolicy 340
27.8 TimeoutRetryPolicy 340
27.9 CompositeRetryPolicy 341
27.10 RetryContextCache 343
本章小結 344
第28章 Spring Retry 中的RetryOperations 345
28.1 RetryTemplate 345
28.1.1 RetryListener 346
28.1.2 BackOffPolicy 347
28.2 doExecute 分析 348
本章小結 353
第29章 Spring Retry 與AOP相關分析 354
29.1 AnnotationAwareRetryOperationsInterceptor 354
29.2 MethodInterceptor 363
29.2.1 StatefulRetryOperationsInterceptor 363
29.2.2 RetryOperationsInterceptor 366
29.3 MethodInvocationRecoverer 368
本章小結 372
第30章 resilience4j 373
30.1 構建resilience4j 源碼環(huán)境搭建 373
30.2 resilience4j 中的熔斷機制 375
30.3 RateLimiterRegistry 378
30.4 RateLimiter 380
30.5 resilience4j中的隔離機制 385
30.5.1 SemaphoreBulkhead 386
30.5.2 FixedThreadPoolBulkhead 387
本章小結 388