Contents 目錄
前言
第1章微服務(wù)與Spring Cloud1
1.1微服務(wù)架構(gòu)概述1
1.1.1應(yīng)用架構(gòu)的發(fā)展1
1.1.2微服務(wù)架構(gòu)3
1.1.3微服務(wù)解決方案4
1.2Spring Cloud與中間件5
1.2.1中間件概述5
1.2.2什么是Spring Cloud5
1.2.3Spring Cloud項(xiàng)目模塊5
1.2.4Spring Cloud與服務(wù)治理
中間件6
1.2.5Spring Cloud與配置中心
中間件6
1.2.6Spring Cloud與網(wǎng)關(guān)中間件8
1.2.7Spring Cloud與全鏈路監(jiān)控
中間件9
1.3Spring Cloud增強(qiáng)生態(tài)10
1.3.1Spring Cloud分布式事務(wù)10
1.3.2Spring Cloud與領(lǐng)域驅(qū)動(dòng)10
1.3.3Spring Cloud與gRPC11
1.3.4Spring Cloud與Dubbo生態(tài)融合11
1.4本章小結(jié)11
第2章Spring Cloud Eureka上篇12
2.1服務(wù)發(fā)現(xiàn)概述12
2.1.1服務(wù)發(fā)現(xiàn)由來(lái)12
2.1.2Eureka簡(jiǎn)介14
2.1.3服務(wù)發(fā)現(xiàn)技術(shù)選型15
2.2Spring Cloud Eureka入門(mén)案例16
2.3Eureka Server的REST API簡(jiǎn)介20
2.3.1REST API列表20
2.3.2REST API實(shí)例20
2.4本章小結(jié)26
第3章Spring Cloud Eureka下篇27
3.1Eureka的核心類27
3.1.1InstanceInfo27
3.1.2LeaseInfo28
3.1.3ServiceInstance29
3.1.4InstanceStatus29
3.2服務(wù)的核心操作30
3.2.1概述30
3.2.2LeaseManager30
3.2.3LookupService31
3.3Eureka的設(shè)計(jì)理念31
3.3.1概述31
3.3.2AP優(yōu)于CP32
3.3.3Peer to Peer架構(gòu)33
3.3.4Zone及Region設(shè)計(jì)34
3.3.5SELF PRESERVATION設(shè)計(jì)36
3.4Eureka參數(shù)調(diào)優(yōu)及監(jiān)控36
3.4.1核心參數(shù)36
3.4.2參數(shù)調(diào)優(yōu)39
3.4.3指標(biāo)監(jiān)控40
3.5Eureka實(shí)戰(zhàn)41
3.5.1Eureka Server在線擴(kuò)容41
3.5.2構(gòu)建Multi Zone Eureka Server47
3.5.3支持Remote Region52
3.5.4開(kāi)啟HTTP Basic認(rèn)證58
3.5.5啟用https61
3.5.6Eureka Admin66
3.5.7基于metadata路由實(shí)例67
3.6Eureka故障演練69
3.6.1Eureka Server全部不可用69
3.6.2Eureka Server部分不可用71
3.6.3Eureka高可用原理73
3.7本章小結(jié)74
第4章Spring Cloud Feign的
使用擴(kuò)展75
4.1Feign概述75
4.1.1什么是Feign75
4.1.2Feign的入門(mén)案例76
4.1.3Feign的工作原理78
4.2Feign的基礎(chǔ)功能79
4.2.1FeignClient注解剖析79
4.2.2Feign開(kāi)啟GZIP壓縮79
4.2.3Feign支持屬性文件配置80
4.2.4Feign Client開(kāi)啟日志81
4.2.5Feign的超時(shí)設(shè)置82
4.3Feign的實(shí)戰(zhàn)運(yùn)用83
4.3.1Feign默認(rèn)Client的替換83
4.3.2Feign的Post和Get的多
參數(shù)傳遞86
4.3.3Feign的文件上傳90
4.3.4解決Feign首次請(qǐng)求失敗問(wèn)題92
4.3.5Feign返回圖片流處理方式93
4.3.6Feign調(diào)用傳遞Token93
4.4venus-cloud-feign設(shè)計(jì)與使用94
4.4.1venus-cloud-feign的設(shè)計(jì)94
4.4.2venus-cloud-feign的使用96
4.5本章小結(jié)98
第5章Spring Cloud Ribbon
實(shí)戰(zhàn)運(yùn)用99
5.1Spring Cloud Ribbon概述99
5.1.1Ribbon與負(fù)載均衡99
5.1.2入門(mén)案例100
5.2Spring Cloud Ribbon實(shí)戰(zhàn)105
5.2.1Ribbon負(fù)載均衡策略與
自定義配置105
5.2.2Ribbon超時(shí)與重試107
5.2.3Ribbon的饑餓加載108
5.2.4利用配置文件自定義Ribbon
客戶端108
5.2.5Ribbon脫離Eureka的使用108
5.3Spring Cloud Ribbon進(jìn)階109
5.3.1核心工作原理109
5.3.2負(fù)載均衡策略源碼導(dǎo)讀113
5.4本章小結(jié)114
第6章Spring Cloud Hystrix
實(shí)戰(zhàn)運(yùn)用115
6.1Spring Cloud Hystrix概述115
6.1.1解決什么問(wèn)題116
6.1.2設(shè)計(jì)目標(biāo)117
6.2Spring Cloud Hystrix實(shí)戰(zhàn)運(yùn)用118
6.2.1入門(mén)示例118
6.2.2Feign中使用斷路器120
6.2.3Hystrix Dashboard121
6.2.4Turbine聚合Hystrix124
6.2.5Hystrix異常機(jī)制和處理126
6.2.6Hystrix配置說(shuō)明128
6.2.6Hystrix線程調(diào)整和計(jì)算129
6.2.7Hystrix請(qǐng)求緩存130
6.2.8Hystrix Request Collapser134
6.2.9Hystrix線程傳遞及并發(fā)策略137
6.2.10Hystrix命令注解142
6.3本章小結(jié)144
第7章Spring Cloud Zuul基礎(chǔ)篇145
7.1Spring Cloud Zuul概述145
7.2Spring Cloud Zuul入門(mén)案例146
7.3Spring Cloud Zuul典型配置149
7.3.1路由配置149
7.3.2功能配置152
7.4本章小結(jié)154
第8章Spring Cloud Zuul中級(jí)篇155
8.1Spring Cloud Zuul Filter鏈155
8.1.1工作原理155
8.1.2Zuul原生Filter158
8.1.3多級(jí)業(yè)務(wù)處理160
8.1.4使用Groovy編寫(xiě)Filter165
8.2Spring Cloud Zuul權(quán)限集成168
8.2.1應(yīng)用權(quán)限概述168
8.2.2Zuul+OAuth2.0+JWT實(shí)戰(zhàn)169
8.3Spring Cloud Zuul限流176
8.3.1限流算法176
8.3.2限流實(shí)戰(zhàn)177
8.4Spring Cloud Zuul動(dòng)態(tài)路由179
8.4.1動(dòng)態(tài)路由概述179
8.4.2動(dòng)態(tài)路由實(shí)現(xiàn)原理剖析180
8.4.3基于DB的動(dòng)態(tài)路由實(shí)戰(zhàn)182
8.5Spring Cloud Zuul灰度發(fā)布185
8.5.1灰度發(fā)布概述185
8.5.2灰度發(fā)布實(shí)戰(zhàn)之一186
8.6Spring Cloud Zuul文件上傳189
8.6.1文件上傳實(shí)戰(zhàn)189
8.6.2文件上傳亂碼解決191
8.7Spring Cloud Zuul實(shí)用小技巧192
8.7.1饑餓加載192
8.7.2請(qǐng)求體修改192
8.7.3使用OkHttp替換HttpClient193
8.7.4重試機(jī)制194
8.7.5Header傳遞195
8.7.6整合Swagger2調(diào)試源服務(wù)195
8.8本章小結(jié)197
第9章Spring Cloud Zuul高級(jí)篇198
9.1Spring Cloud Zuul多層負(fù)載198
9.1.1痛點(diǎn)場(chǎng)景198
9.1.2解決方案198
9.2Spring Cloud Zuul應(yīng)用優(yōu)化200
9.2.1概述200
9.2.2容器優(yōu)化201
9.2.3組件優(yōu)化202
9.2.4JVM參數(shù)優(yōu)化203
9.2.5內(nèi)部?jī)?yōu)化204
9.3Spring Cloud Zuul原理&核心
源碼解析205
9.3.1工作原理與生命周期205
9.3.2Filter裝載與Filter鏈實(shí)現(xiàn)208
9.3.3核心路由實(shí)現(xiàn)210
9.4本章小結(jié)213
第10章Spring Cloud基礎(chǔ)綜合
案例214
10.1基礎(chǔ)框架214
10.1.1搭建說(shuō)明214
10.1.2技術(shù)方案214
10.1.3具體實(shí)現(xiàn)215
10.2實(shí)戰(zhàn)擴(kuò)展217
10.2.1公共包 (對(duì)象,攔截器,
工具類等)218
10.2.2用戶上下文對(duì)象傳遞218
10.2.3Zuul的Fallback機(jī)制221
10.3生產(chǎn)環(huán)境各組件參考配置222
10.3.1Eureka推薦配置222
10.3.2Ribbon推薦配置223
10.3.3Hystrix推薦配置223
10.3.4Zuul推薦配置223
10.4本章小結(jié)224
第11章Spring Cloud Config上篇225
11.1Spring Cloud Config配置中心
概述225
11.1.1什么是配置中心225
11.1.2Spring Cloud Config227
11.1.3Spring Cloud Config入門(mén)
案例228
11.2刷新配置中心信息234
11.2.1手動(dòng)刷新操作234
11.2.2結(jié)合Spring Cloud Bus
熱刷新237
11.3本章小結(jié)244
第12章Spring Cloud Config下篇245
12.1服務(wù)端git配置詳解與實(shí)戰(zhàn)245
12.1.1Git多種配置詳解概述245
12.1.2Git中URI占位符245
12.1.3模式匹配和多個(gè)存儲(chǔ)庫(kù)250
12.1.4路徑搜索占位符251
12.2關(guān)系型數(shù)據(jù)庫(kù)的配置中心的
實(shí)現(xiàn)251
12.2.1Spring Cloud Config基于
MySQL的配置概述251
12.2.2Spring Cloud Config與MySQL
結(jié)合案例252
12.3非關(guān)系型數(shù)據(jù)庫(kù)的配置中心的
實(shí)現(xiàn)255
12.3.1Spring Cloud Config基于
MongoDB的配置概述255
12.3.2Spring Cloud Config MongoDB
案例256
12.4Spring Cloud Config使用技能259
本地參數(shù)的覆蓋遠(yuǎn)程參數(shù)259
12.5Spring Cloud Config功能擴(kuò)展260
12.5.1客戶端自動(dòng)刷新260
12.5.2客戶端回退功能264
12.5.3客戶端的安全認(rèn)證機(jī)制JWT270
12.6高可用部分285
12.6.1客戶端高可用285
12.6.2服務(wù)端高可用293
12.7Spring Cloud與Apollo配置使用300
12.7.1Apollo簡(jiǎn)介300
12.7.2Apollo具備功能300
12.7.3Apollo總體架構(gòu)模塊300
12.7.4客戶端設(shè)計(jì)301
12.7.5Apollo運(yùn)行環(huán)境方式302
12.8Spring Cloud與Apollo結(jié)合
使用實(shí)戰(zhàn)303
......