重新定義Spring Cloud實戰

重新定義Spring Cloud實戰

《重新定義Spring Cloud實戰》是機械工業出版社出版的圖書,作者是許進,葉志遠,鐘尊發,蔡波斯 等

基本介紹

  • 作者:許進、葉志遠、鐘尊發、蔡波斯 等
  • 出版時間:2018年10月1日
  • 出版社:機械工業出版社
  • ISBN:9787111609391
  • 叢書:雲計算與虛擬化技術叢書
內容簡介,圖書目錄,

內容簡介

這是一本實踐與理論並重、廣度與深度兼顧的Spring Cloud生產實踐開發指南,由SpringCloud中國社區傾力打造,作者來自阿里、螞蟻金服、*金融等企業,本書針對SpringCloud在國內的使用情況,結合國內企業使用Spring Cloud落地微服務架構遇到的問題,提出可落地的解決方案。
本書內容有3大特色:
足夠廣:詳細講解了Spring Cloud的核心常用組件以及Spring Cloud的增強生態,針對生產實踐中常見問題給出可落地的*實踐方案,無論您是初學者還是開發人員,還是架構師,都能從此書獲益。
有深度:本書對涉及的Spring Cloud組件按照從入門、進階、實戰、擴展增強的順序循序漸進進行剖析和講解,幫助作者知其然並知其所以然,授之以漁。
重實踐:注重生產實踐,通過案例驅動,給出優秀的生產實踐方案和優秀的生產配置,幫助讀者快速落地企業微服務架構。
全書共25章,分為三個部分:
*部分核心組件篇(第1~10章)
主要講解SpringCloud的核心組件。首先從套用架構的發展歷程講起,介紹了微服務出現的背景,並對微服務架構的落地提出了相應的解決方案;然後分別詳細介紹了Spring Cloud微服務體系中的核心常用組件,如Eureka、Feign、Ribbon、Hystrix、Zuul等;*後通過一個綜合案例將前面介紹的組件連線起來,幫助大家融會貫通。
第二部分進階實戰篇(第11~18章)
在核心組件的基礎上,對Config、Consul、認證和鑒權、全鏈路監控以及對Spring Cloud生態圈中第二代網關Spring Cloud Gateway進行了詳細闡述,循序漸進、案例驅動,幫助讀者加深對組件的理解和運用,更好地掌握相關內容運用於生產實踐。
第三部分解決方案篇(第19~25章)
主要從解決方案著手,內容包括Spring Cloud與gRPC的整合方式、版本控制與灰度發布、Spring Cloud容器化、Dubbo向Spring Cloud的遷移、分散式事務、領域驅動等生產級實用解決方案,為企業IT架構微服務化和變革保駕護航。

圖書目錄

Contents 目錄
前言
第1章 微服務與SpringCloud1
1.1 微服務架構概述1
1.1.1 套用架構的發展1
1.1.2 微服務架構3
1.1.3 微服務解決方案4
1.2 Spring Cloud與中間件5
1.2.1 中間件概述5
1.2.2 什麼是Spring Cloud5
1.2.3 Spring Cloud項目模組5
1.2.4 Spring Cloud與服務治理
中間件6
1.2.5 Spring Cloud與配置中心
中間件6
1.2.6 Spring Cloud與網關中間件8
1.2.7 Spring Cloud與全鏈路監控
中間件9
1.3 Spring Cloud增強生態10
1.3.1 Spring Cloud分散式事務10
1.3.2 Spring Cloud與領域驅動10
1.3.3 Spring Cloud與gRPC11
1.3.4 Spring Cloud與Dubbo生態融合11
1.4 本章小結11
第2章 Spring CloudEureka上篇12
2.1 服務發現概述12
2.1.1 服務發現由來12
2.1.2 Eureka簡介14
2.1.3 服務發現技術選型15
2.2 Spring Cloud Eureka入門案例16
2.3 Eureka Server的REST API簡介20
2.3.1 REST API列表20
2.3.2 REST API實例20
2.4 本章小結26
第3章 Spring CloudEureka下篇27
3.1 Eureka的核心類27
3.1.1 InstanceInfo27
3.1.2 LeaseInfo28
3.1.3 ServiceInstance29
3.1.4 InstanceStatus29
3.2 服務的核心操作30
3.2.1 概述30
3.2.2 LeaseManager30
3.2.3 LookupService31
3.3 Eureka的設計理念31
3.3.1 概述31
3.3.2 AP優於CP32
3.3.3 Peer to Peer架構33
3.3.4 Zone及Region設計34
3.3.5 SELF PRESERVATION設計36
3.4 Eureka參數調優及監控36
3.4.1 核心參數36
3.4.2 參數調優39
3.4.3 指標監控40
3.5 Eureka實戰41
3.5.1 Eureka Server線上擴容41
3.5.2 構建Multi Zone Eureka Server47
3.5.3 支持Remote Region52
3.5.4 開啟HTTP Basic認證58
3.5.5 啟用https61
3.5.6 Eureka Admin66
3.5.7 基於metadata路由實例67
3.6 Eureka故障演練69
3.6.1 Eureka Server全部不可用69
3.6.2 Eureka Server部分不可用71
3.6.3 Eureka高可用原理73
3.7 本章小結74
第4章 Spring CloudFeign的
  使用擴展75
4.1 Feign概述75
4.1.1 什麼是Feign75
4.1.2 Feign的入門案例76
4.1.3 Feign的工作原理78
4.2 Feign的基礎功能79
4.2.1 FeignClient註解剖析79
4.2.2 Feign開啟GZIP壓縮79
4.2.3 Feign支持屬性檔案配置80
4.2.4 Feign Client開啟日誌81
4.2.5 Feign的逾時設定82
4.3 Feign的實戰運用83
4.3.1 Feign默認Client的替換83
4.3.2 Feign的Post和Get的多
參數傳遞86
4.3.3 Feign的檔案上傳90
4.3.4 解決Feign首次請求失敗問題92
4.3.5 Feign返回圖片流處理方式93
4.3.6 Feign調用傳遞Token93
4.4 venus-cloud-feign設計與使用94
4.4.1 venus-cloud-feign的設計94
4.4.2 venus-cloud-feign的使用96
4.5 本章小結98
第5章 Spring CloudRibbon
實戰運用99
5.1 Spring Cloud Ribbon概述99
5.1.1 Ribbon與負載均衡99
5.1.2 入門案例100
5.2 Spring Cloud Ribbon實戰105
5.2.1 Ribbon負載均衡策略與
自定義配置105
5.2.2 Ribbon逾時與重試107
5.2.3 Ribbon的飢餓載入108
5.2.4 利用配置檔案自定義Ribbon
客戶端108
5.2.5 Ribbon脫離Eureka的使用108
5.3 Spring Cloud Ribbon進階109
5.3.1 核心工作原理109
5.3.2 負載均衡策略源碼導讀113
5.4 本章小結114
第6章 Spring CloudHystrix
實戰運用115
6.1 Spring Cloud Hystrix概述115
6.1.1 解決什麼問題116
6.1.2 設計目標117
6.2 Spring Cloud Hystrix實戰運用118
6.2.1 入門示例118
6.2.2 Feign中使用斷路器120
6.2.3 Hystrix Dashboard121
6.2.4 Turbine聚合Hystrix124
6.2.5 Hystrix異常機制和處理126
6.2.6 Hystrix配置說明128
6.2.6 Hystrix執行緒調整和計算129
6.2.7 Hystrix請求快取130
6.2.8 Hystrix Request Collapser134
6.2.9 Hystrix執行緒傳遞及並發策略137
6.2.10 Hystrix命令註解142
6.3 本章小結144
第7章 Spring CloudZuul基礎篇145
7.1 Spring Cloud Zuul概述145
7.2 Spring Cloud Zuul入門案例146
7.3 Spring Cloud Zuul典型配置149
7.3.1 路由配置149
7.3.2 功能配置152
7.4 本章小結154
第8章 Spring CloudZuul中級篇155
8.1 Spring Cloud Zuul Filter鏈155
8.1.1 工作原理155
8.1.2 Zuul原生Filter158
8.1.3 多級業務處理160
8.1.4 使用Groovy編寫Filter165
8.2 Spring Cloud Zuul許可權集成168
8.2.1 套用許可權概述168
8.2.2 Zuul OAuth2.0 JWT實戰169
8.3 Spring Cloud Zuul限流176
8.3.1 限流算法176
8.3.2 限流實戰177
8.4 Spring Cloud Zuul動態路由179
8.4.1 動態路由概述179
8.4.2 動態路由實現原理剖析180
8.4.3 基於DB的動態路由實戰182
8.5 Spring Cloud Zuul灰度發布185
8.5.1 灰度發布概述185
8.5.2 灰度發布實戰之一186
8.6 Spring Cloud Zuul檔案上傳189
8.6.1 檔案上傳實戰189
8.6.2 檔案上傳亂碼解決191
8.7 Spring Cloud Zuul實用小技巧192
8.7.1 飢餓載入192
8.7.2 請求體修改192
8.7.3 使用OkHttp替換HttpClient193
8.7.4 重試機制194
8.7.5 Header傳遞195
8.7.6 整合Swagger2調試源服務195
8.8 本章小結197
第9章 Spring CloudZuul高級篇198
9.1 Spring Cloud Zuul多層負載198
9.1.1 痛點場景198
9.1.2 解決方案198
9.2 Spring Cloud Zuul套用最佳化200
9.2.1 概述200
9.2.2 容器最佳化201
9.2.3 組件最佳化202
9.2.4 JVM參數最佳化203
9.2.5 內部最佳化204
9.3 Spring Cloud Zuul原理&核心
源碼解析205
9.3.1 工作原理與生命周期205
9.3.2 Filter裝載與Filter鏈實現208
9.3.3 核心路由實現210
9.4 本章小結213
第10章 Spring Cloud基礎綜合
案例214
10.1 基礎框架214
10.1.1 搭建說明214
10.1.2 技術方案214
10.1.3 具體實現215
10.2 實戰擴展217
10.2.1 公共包 (對象,攔截器,工具類等)218
10.2.2 用戶上下文對象傳遞218
10.2.3 Zuul的Fallback機制221
10.3 生產環境各組件參考配置222
10.3.1 Eureka推薦配置222
10.3.2 Ribbon推薦配置223
10.3.3 Hystrix推薦配置223
10.3.4 Zuul推薦配置223
10.4 本章小結224
第11章 Spring CloudConfig上篇225
11.1 Spring Cloud Config配置中心
概述225
11.1.1 什麼是配置中心225
11.1.2 Spring Cloud Config227
11.1.3 Spring Cloud Config入門
案例228
11.2 刷新配置中心信息234
11.2.1 手動刷新操作234
11.2.2 結合Spring Cloud Bus
熱刷新237
11.3 本章小結244
第12章 Spring CloudConfig下篇245
12.1 服務端git配置詳解與實戰245
12.1.1 Git多種配置詳解概述245
12.1.2 Git中URI占位符245
12.1.3 模式匹配和多個存儲庫250
12.1.4 路徑搜尋占位符251
12.2 關係型資料庫的配置中心的
實現251
12.2.1 Spring Cloud Config基於
MySQL的配置概述251
12.2.2 Spring Cloud Config與MySQL
結合案例252
12.3 非關係型資料庫的配置中心的
實現255
12.3.1 Spring Cloud Config基於
MongoDB的配置概述255
12.3.2 Spring Cloud Config MongoDB
案例256
12.4 Spring Cloud Config使用技能259
本地參數的覆蓋遠程參數259
12.5 Spring Cloud Config功能擴展260
12.5.1 客戶端自動刷新260
12.5.2 客戶端回退功能264
12.5.3 客戶端的安全認證機制JWT270
12.6 高可用部分285
12.6.1 客戶端高可用285
12.6.2 服務端高可用293
12.7 Spring Cloud與Apollo配置使用300
12.7.1 Apollo簡介300
12.7.2 Apollo具備功能300
12.7.3 Apollo總體架構模組300
12.7.4 客戶端設計301
12.7.5 Apollo運行環境方式302
12.8 Spring Cloud與Apollo結合
使用實戰303
12.8.1 Apollo環境的要求303
12.8.2 Apollo基礎數據導入303
12.8.3 創建config-client-apollo307
12.8.4 創建gateway-zuul-apollo310
12.9 本章總結316
第13章 Spring CloudConsul上篇317
13.1 Consul簡介317
13.1.1 什麼是Consul317
13.1.2 Consul能做什麼317
13.1.3 Consul的安裝318
13.1.4 Consul啟動318
13.1.5 Consul UI319
13.1.6 Consul實用接口319
13.2 Spring Cloud Consul簡介319
13.2.1 Spring Cloud Consul是什麼319
13.2.2 Spring Cloud Consul能做什麼320
13.2.3 Spring Cloud Consul入門案例320
13.3 本章小節324
第14章 Spring CloudConsul下篇325
14.1 Spring Cloud Consul深入325
14.1.1 Spring Cloud Consul的模組
介紹325
14.1.2 Spring Cloud Consul Discovery325
14.1.3 Spring Cloud Consul Config332
14.2 Spring Cloud Consul功能重寫335
14.2.1 重寫ConsulDiscoveryClient335
14.2.2 重寫ConsulServerList338
14.3 常見問題排查343
14.3.1 版本兼容的那些坑343
14.3.2 Spring Cloud Consul的一些
問題344
14.4 本章小節346
第15章 Spring Cloud認證和鑒權347
15.1 微服務安全與許可權347
15.2 Spring Cloud認證與鑒權方案348
15.2.1 單體套用下的常用方案348
15.2.2 微服務下SSO單點登錄方案348
15.2.3 分散式Session與網關結合
方案349
15.2.4 客戶端Token與網關結合
方案349
15.2.5 瀏覽器Cookie與網關結合
方案350
15.2.6 網關與Token和服務間鑒權
結合350
15.3 Spring Cloud認證鑒權實戰
案例351
15.3.1 創建Spring Cloud Gateway
及關聯信息351
15.3.2 核心的公共工程core-service353
15.3.3 服務提供方工程provider-
service355
15.3.4 客戶端工程client-service356
15.3.5 運行結果356
15.4 本章小結358
第16章Spring Cloud全鏈路監控359
16.1 全鏈路監控概述359
16.1.1 鏈路監控的原理來源359
16.1.2 Sleuth原理介紹360
16.1.3 Brave和Zipkin360
16.2 Sleuth基本用法362
16.2.1 Sleuth對Feign的支持365
16.2.2 Sleuth對RestTemplate的
支持366
16.2.3 Sleuth對多執行緒的支持367
16.3 Sleuth深入用法367
16.3.1 TraceFilter367
16.3.2 Baggage367
16.3.3 案例367
16.4 Spring Cloud與SkyWalking369
16.4.1 Skywalking概述369
16.4.2 SkyWalking提供主要功能370
16.4.3 SkyWalking主要特性370
16.4.4 SkyWalking整體架構370
16.5 Spring Cloud與Skywalking實戰370
16.5.1 父工程創建371
16.5.2 創建eureka-server-skywalking
工程372
16.5.3 創建zuul-skywalking373
16.5.4 創建service-a375
16.5.5 創建service-b377
16.5.6 SkyWalking Collector基礎環境
安裝378
16.5.7 使用Agent啟動服務和監控
查看382
16.5.8 總結385
16.6 Spring Cloud與Pinpoint386
16.6.1 Pinpoint概述386
16.6.2 Pinpoint架構模組386
16.6.3 Pinpoint的數據結構386
16.6.4 Pinpoint兼容性387
16.7 Spring Cloud與Pinpoint實戰389
16.7.1 Pinpoint基礎環境389
16.7.2 Collector和Web部署391
16.7.3 Agent啟動套用392
16.7.4 UI瀏覽指標394
16.7.5 總結397
16.8 本章總結398
第17章Spring CloudGateway
  上篇399
17.1 Spring Cloud Gateway概述399
17.1.1 什麼是Spring Cloud Gateway399
17.1.2 Spring Cloud Gateway的核心
概念399
17.2 Spring Cloud Gateway的工作
原理400
17.3 Spring Cloud Gateway入門案例401
17.4 Spring Cloud Gateway的路由
斷言404
17.4.1 After路由斷言工廠404
17.4.2 Before路由斷言工廠406
17.4.3 Between路由斷言工廠406
17.4.4 Cookie路由斷言工廠407
17.4.5 Header路由斷言工廠408
17.4.6 Host路由斷言工廠410
17.4.7 Method路由斷言工廠411
17.4.8 Query路由斷言工廠411
17.4.9 RemoteAddr路由斷言工廠412
17.5 Spring Cloud Gateway的內置
Filter413
17.5.1 AddRequestHeader過濾器
工廠413
17.5.2 AddRequestParameter過濾器413
17.5.3 RewritePath過濾器414
17.5.4 AddResponseHeader過濾器415
17.5.5 StripPrefix過濾器416
17.5.6 Retry過濾器417
17.5.7 Hystrix過濾器418
17.6 本章小結420
第18章 Spring CloudGateway
下篇421
18.1 Gateway基於服務發現的路由
規則421
18.1.1 Gateway的服務發現路由概述421
18.1.2 服務發現的路由規則案例422
18.2 Gateway Filter和Global Filter425
18.2.1 Gateway Filter和Global Filter
概述425
18.2.2 自定義Gateway Filter案例425
18.2.3 自定義Global Filter案例427
18.3 Spring Cloud Gateway實戰428
18.3.1 Spring Cloud Gateway權重
路由428
18.3.2 Spring Cloud Gateway中Https
的使用技巧431
18.3.3 Spring Cloud Gateway集成
Swagger436
18.3.4 Spring Cloud Gateway限流442
18.3.5 Spring Cloud Gateway的動態
路由450
18.4 Spring Cloud Gateway源碼篇458
18.4.1 Spring Cloud Gateway的處理
流程458
18.4.2 Gateway中ServerWebExchange
構建分析459
18.4.3 DispatcherHandler源碼分析460
18.4.4 RoutePredicateHandlerMapping
源碼分析461
18.4.5 FilteringWebHandler源碼分析462
18.4.6 執行Filter源碼分析463
18.5 本章小結465
第19章 Spring Cloud與gRPC
上篇466
19.1 Spring Cloud為什麼需要gRPC466
19.2 gRPC簡介468
19.3 gRPC的一些核心概念469
19.3.1 服務定義469
19.3.2 使用API470
19.3.2 同步vs異步470
19.4 RPC的生命周期470
19.5 gRPC依賴於Protocol Buffers472
19.5.1 Protocol Buffers的特點472
19.5.2 使用Protocol Buffers的Maven
外掛程式472
19.5.3 Proto Buffer語法介紹475
19.6 gRPC基於HTTP2476
19.6.1 HTTP2的一些概念和特性476
19.7 gRPC基於Netty進行IO處理477
19.8 gRPC案例實戰478
19.8 本章小結481
第20章gRPC在Spring Cloud
與gRPC下篇482
20.1 gRPC Spring Boot Starter介紹482
20.2 gRPC Spring Boot Starter架構
設計482
20.3 gRPC Spring Boot Starter源碼
分析 483
20.3.1 gRPC Server Spring Boot Starter
源碼解析483
20.3.2 gRPC Client Spring Boot Starter
源碼解析486
20.4 案例實戰489
20.4.1 註冊中心489
20.4.2 鏈路追蹤服務端490
20.4.3 gRPC的lib工程490
20.4.4 gRPC服務端491
20.4.5 gRPC客戶端494
20.5 本章小結497
第21章 Spring Cloud版本控制與
灰度發布498
21.1 背景498
21.2 常見發布方式499
21.2.1 藍綠髮布499
21.2.2 滾動發布500
21.2.3 灰度發布500
21.2.4 對比501
21.3 版本控制與灰度發布實戰502
21.3.1 Discovery項目503
21.3.2 實戰案例504
21.3.3 實戰測試505
21.4 本章小結509
第22章 Spring Cloud容器化510
22.1 Java服務Docker化510
22.1.1 基礎鏡像選擇510
22.1.2 Dockerfile編寫511
22.1.3 鏡像構建外掛程式514
22.1.4 JDK8 的Docker支持516
22.1.5 JDK9 鏡像最佳化517
22.2 Spring Cloud組件的Docker化519
22.2.1 Docker化配置519
22.2.1 config-server的Docker化520
22.2.2 eureka-server的Docker化522
22.2.3 gateway的Docker化524
22.2.4 turbine的Docker化526
22.2.5 Spring Admin的Docker化528
22.2.6 biz-service的Docker化530
22.2.7 網卡選擇532
22.2.8 小結 532
22.3 使用Kubernetes管理532
22.3.1 概述532
22.3.2 本地安裝Kubernetes533
22.3.3 部署到Kubernetes536
22.3.4 一鍵伸縮544
22.3.5 滾動升級547
22.4 本章小結552
第23章 Dubbo向Spring Cloud
遷移553
23.1 將Dubbo服務納入Spring Cloud
體系中553
23.1.1 將Dubbo項目改造成Spring
Boot項目553
23.1.2 集成Spring Cloud組件554
23.1.3 將Dubbo服務暴露為
RESTful API555
23.2 將Spring Cloud服務Dubbo化556
23.2.1 服務註冊中心556
23.2.2 服務提供者556
23.2.3 服務消費者558
23.2.4 Spring Cloud Dubbo框架原理561
23.3 本章小結562
第24章 Spring Cloud與分散式事務563
24.1 概述563
24.1.1 ACID563
24.1.2 X/Open DTP模型與XA接口564
24.1.3 CAP與BASE定理567
24.2 解決方案567
24.2.1 Java事務編程接口JTA567
24.2.2 分散式事務TCC模式568
24.2.3 分散式事務SAGAS模式570
24.3 實戰572
24.3.1 Atomikos JTA572
24.3.2 TCC for REST580
24.3.3 Servicecomb SAGA594
24.4 本章小結603
第25章 Spring Cloud與領域驅動
實踐604
25.1 領域驅動概述604
25.1.1 Spring Cloud與領域驅動604
25.1.2 為什麼需要領域建模605
25.2 領域驅動核心概念606
25.2.1 實體概述606
25.2.2 值對象概述606
25.2.3 領域服務607
25.2.4 聚合及聚合根607
25.2.5 邊界上下文608
25.2.6 工廠609
25.2.7 倉儲/資源庫609
25.2.8 CQRS架構610
25.2.9 領域事件610
25.2.10 領域驅動模型的設計步驟611
25.3 Halo框架的設計611
25.3.1 DDD套用框架的意義611
25.3.2 領域驅動框架現狀612
25.3.3 Halo框架概述612
25.3.4 Halo框架分層設計613
25.3.5 Halo框架中的CQRS設計615
25.3.6 Command與Command Bus
設計616
25.3.7 Event與Event Bus設計619
25.3.8 Extend擴展點設計621
25.3.9 業務身份設計623
25.3.10 規範設計624
25.4.1 事件風暴尋找模型和聚合625
25.4.2 Spring Cloud與Halo實戰案例626
25.4.3 新建二方包工程模組627
25.4.4 新建DDD基礎設施層629
25.4.5 新建DDD領域層 630
25.4.6 新建DDD套用層 632
25.4.7 啟動測試634
25.5 本章小結634

相關詞條

熱門詞條

聯絡我們