內容簡介
從不同角度全面介紹微服務特性、使用場景、組織流程、構建互動、部署交付等軟少白姜件工程各個關鍵環節和核心要素
圖書目錄
第1章 微服務概述 2
1.1 微服務架構介紹 3
1.1.1 背景介紹 3
1.1.2 微服務的定義 4
1.1.3 微服務與雲原生 6
1.2 微服務主要特性 9
1.2.1 粒度更細的服務 9
1.2.2 圍繞業務劃分團隊 10
1.2.3 技少淋酷故術多樣性 11
1.2.4 去中心化 12
1.2.5 自動化運維 13
1.2.6 快速演進 14
1.3 架構設計哲學 14
1.3.1 小即是美 15
1.3.2 做好一件事 16
1.3.3 快速建立原型 16
1.3.4 軟體的複利效應 17
1.3.5 可移植性優先 18
1.4 小結 19
第2章 微服務的採用前提 20
2.1 微服務使用場景 21
2.1.1 項目複雜度 21
2.1.2 團隊規模 22
2.1.3 變更頻率 22
2.1.4 項目類型 23
2.1.5 遺留系統遷移 23
2.2 技術與理念 24
2.2.1 面向服務 24
2.2.2 底座境臘技術 25
2.2.3 架構技術 26
2.2.4 服務監控與治理 28
2.2.5 容器和自動化技臘煮辯懂術 28
2.2.6 雲原生12要素 29
2.3 康威定律 32
2.3.1 協作問題 32
2.3.2 溝通效率問題 33
2.3.3 組織的演進 33
2.4 流程管理 34
2.4.1 敏捷方法論 34
2.4.2 DevOps轉型 35
2.4.3 自動化管理工具 37
2.5 小結 37
第3章 微服務構建 38
3.1 領域驅動設計 39
3.1.1 領域驅動設計概述 39
3.1.2 專注問題域 42
3.1.3 服務的拆分 44
3.1.4 界限上下文 46
3.1.5 領域建模 47
3.1.6 架構設計 49
3.2 微服務化改造 51
3.2.1 技術債務 51
3.2.2 微服務化改造時機 51
3.2.3 單體架構的改造模式 51
3.3 微服務構建進階 53
3.3.1 軟體構建 53
3.3.2 微服務構建實踐 54
3.3.3 微服務架構反模式 55
3.4 小結 57
實踐篇
第4章 腳手架 60
4.1 腳手殃舉束架介紹 61
4.1.1 什麼是腳手架 61
4.1.2 為什麼需要腳手架 61
4.1.3 不要重新造輪子 62
4.1.4 常用腳手架 64
4.2 Spring Boot啟動 67
4.2.1 抹榜鍵Spring Boot概述 67
4.2.2 Spring Boot快速搭建 70
4.2.3 @SpringBootApplication註解詳解 72
4.2.4 Spring Boot啟動流程進階 77
4.2.5 Spring Boot自動裝配機制 80
4.2.6 Spring Boot功能擴展點詳解 85
4.3 Spring Boot Starter技術 88
4.3.1 Spring Boot Starter概述 88
4.3.2 Spring Boot常用開箱即用Starter 91
4.3.3 Spring Boot生產就緒與環境配置 95
4.3.4 Spring Boot安全管理 102
4.3.5 Spring Boot實現自定義Starter 108
4.4 Spring Boot Web容器 114
4.4.1 Spring Boot Web容器配置 115
4.4.2 Spring Boot嵌入式Web容器原理 121
4.4.3 Spring Boot的ClassLoader載入機制 124
4.5 小結 131
第5章 關鍵技術 132
5.1 服務註冊與發現 133
5.1.1 服務註冊與發現原理 133
5.1.2 微服務註冊中心技術選型 135
5.1.3 Spring Cloud Eureka 139
5.1.4 Eureka架構與設計原理 142
5.1.5 Eureka快取機制 145
5.1.6 Eureka定製化開發 148
5.2 服務配置中心 149
5.2.1 服務配置中心市探和管理 149
5.2.2 Spring Cloud Config 151
5.2.3 Config Server配置詳解 158
5.2.4 Config Server定製化開發 161
5.3 微服務網關 170
5.3.1 微服務網關模式 170
5.3.2 網關的主要功能 175
5.3.3 網關的技術選型 177
5.3.4 Spring Cloud Zuul網關 178
5.3.5 Zuul的主要工作原理 182
5.3.6 Zuul的外掛程式機制及定製化開發 187
5.3.7 Zuul的動態路由 190
5.3.8 Zuul Filter擴展功能實現 196
5.3.9 Zuul源碼解析 201
5.4 負載均衡 204
5.4.1 負載均衡機制 204
5.4.2 四層與七層負載均衡 206
5.4.3 負載均衡算法 206
5.4.4 Spring Cloud Ribbon 207
5.4.5 Ribbon的核心工作原理 213
5.4.6 Ribbon源碼解析 215
5.5 容錯與隔離 222
5.5.1 隔離機制 223
5.5.2 微服務的風險 225
5.5.3 降級保護 227
5.5.4 限流保護 229
5.5.5 熔斷保護 231
5.5.6 逾時與重試 232
5.5.7 Spring Cloud Hystrix容錯框架 233
5.5.8 Hystrix的核心工作原理 240
5.5.9 Hystrix源碼解析 249
5.6 小結 252
第6章 系統集成 253
6.1 服務集成互動技術 254
6.1.1 網路協定 254
6.1.2 Linux I/O模式 258
6.1.3 序列化方式 262
6.2 REST服務集成 263
6.2.1 REST API 264
6.2.2 Swagger接口文檔規範 270
6.2.3 JAX-RS提供REST服務 272
6.2.4 Feign實現REST調用 273
6.3 RPC遠程過程調用 278
6.3.1 RPC框架概述 278
6.3.2 主流RPC通信框架 280
6.3.3 Dubbo架構進階 281
6.3.4 Spring Cloud集成Dubbo 294
6.3.5 Spring Cloud集成gRPC 299
6.4 MOM異步通信 309
6.4.1 訊息中間件概述 309
6.4.2 訊息中間件的使用場景 311
6.4.3 常用訊息中間件 314
6.4.4 RabbitMQ訊息中間件 314
6.4.5 Kafka訊息中間件 318
6.4.6 Spring Cloud Stream概述 319
6.4.7 Stream源碼解析 325
6.4.8 Stream套用進階 341
6.5 小結 344
第7章 微服務數據架構 345
7.1 數據分類及存儲特性 346
7.1.1 關係資料庫概述 346
7.1.2 NoSQL數據存儲 349
7.1.3 Spring Data 353
7.1.4 使用spring-boot-starter-jdbc訪問MySQL 354
7.1.5 Spring ORM框架訪問資料庫 358
7.1.6 Spring Data與NoSQL的集成 363
7.2 事務管理理論 370
7.2.1 事務管理概述 370
7.2.2 ACID理論 372
7.2.3 一致性理論 373
7.2.4 CAP理論 373
7.2.5 BASE理論 374
7.3 微服務架構的數據一致性 374
7.3.1 解決方案概覽 375
7.3.2 兩階段提交模式 375
7.3.3 TCC補償模式 377
7.3.4 Saga長事務模式 379
7.3.5 可靠訊息模式 383
7.4 小結 389
第8章 微服務交付 390
8.1 軟體交付演進 391
8.1.1 軟體過程模型 391
8.1.2 交付演進歷程進階 394
8.2 微服務如何持續集成交付 397
8.2.1 配置管理概述 398
8.2.2 持續集成概述 399
8.2.3 持續集成Pipeline 399
8.2.4 持續交付概述 408
8.2.5 持續交付Pipeline 408
8.3 基於容器的交付 410
8.3.1 Docker概述 410
8.3.2 Docker的原理 412
8.3.3 Docker構建部署過程 414
8.3.4 Docker Compose編排服務 419
8.3.5 Maven外掛程式構建Docker鏡像 421
8.4 小結 423
第9章 服務監控治理 424
9.1 監控系統概述 425
9.1.1 監控系統原理及分類 425
9.1.2 監控分類 427
9.1.3 監控關注的對象 428
9.2 指標型數據監控 431
9.2.1 指標採集概述 431
9.2.2 JavaAgent技術 434
9.2.3 Javaassist技術 438
9.2.4 Spring Boot Admin監控詳解 440
9.2.5 Spring Boot集成Prometheus 443
9.3 日誌監控方案 446
9.3.1 日誌採集方案 446
9.3.2 ELK日誌的解決方案 449
9.3.3 Spring Boot的日誌解決方案 450
9.4 服務調用鏈技術 455
9.4.1 APM與調用鏈技術 455
9.4.2 Dapper與分散式跟蹤原理 457
9.4.3 Sleuth與Zipkin技術 459
9.4.4 SkyWalking技術 465
9.5 小結 468
進階篇
第10章 回響式微服務架構 470
10.1 回響式編程 471
10.1.1 回響式編程的動機 471
10.1.2 回響式宣言 475
10.1.3 回響式編程詳解 476
10.1.4 編程範式 480
10.2 回響式技術框架 482
10.2.1 回響式編程規範 483
10.2.2 Java Flow API 484
10.2.3 RxJava回響式框架 487
10.2.4 Reactor回響式框架 490
10.2.5 Vert.X回響式編程 494
10.2.6 Spring Boot 2回響式編程 497
10.3 Spring WebFlux框架 499
10.3.1 Spring WebFlux概述 499
10.3.2 WebFlux伺服器開發 501
10.3.3 WebClient開發 506
10.3.4 服務端推送事件 509
10.3.5 Spring WebFlux的優勢與局限 511
10.4 Spring Cloud Gateway 514
10.4.1 Spring Cloud Gateway概述 514
10.4.2 Spring Cloud Gateway的工作原理 517
10.4.3 Spring Cloud Gateway的動態路由 527
10.4.4 Spring Cloud Gateway源碼解析 533
10.5 小結 540
第11章 Kubernetes容器管理 541
11.1 Kubernetes的基礎 541
11.1.1 Kubernetes基本概述 541
11.1.2 Kubernetes的核心組件 542
11.2 Kubernetes的設計理念 543
11.2.1 Kubernetes的設計原則 543
11.2.2 Kubernetes與微服務 544
11.2.3 Kubernetes與DevOps 544
11.3 Spring Cloud與Kubernetes的生態融合 545
11.3.1 Spring Cloud與Kubernetes各自的優劣勢 545
11.3.2 Spring Cloud與Kubernetes的融合 547
11.3.3 Spring Cloud Kubernetes項目 548
11.4 小結 552
第12章 微服務發展趨勢 553
12.1 雲原生套用架構 553
12.1.1 雲原生套用架構進階 554
12.1.2 Java的雲原生套用最佳化 555
12.2 Service Mesh技術 556
12.2.1 微服務的SideCar模式 557
12.2.2 Service Mesh的技術前景 557
12.3 Serverless技術 558
12.3.1 Serverless的模式 558
12.3.2 Serverless的技術前景 559
12.4 總結 560
作者簡介
王佩華
畢業於天津理工大學,就職於京東,任架構師,從事多年金融及電信行業分散式系統架構的設計及研發管理工作。
多項微服務領域專利的發明人,熱衷於參與開源社區並主導了公司微服務項目的開源和推廣,擅長通信協定設計、分散式中間件設計、高並發系統架構設計及雲原生架構等。
4.2.1 Spring Boot概述 67
4.2.2 Spring Boot快速搭建 70
4.2.3 @SpringBootApplication註解詳解 72
4.2.4 Spring Boot啟動流程進階 77
4.2.5 Spring Boot自動裝配機制 80
4.2.6 Spring Boot功能擴展點詳解 85
4.3 Spring Boot Starter技術 88
4.3.1 Spring Boot Starter概述 88
4.3.2 Spring Boot常用開箱即用Starter 91
4.3.3 Spring Boot生產就緒與環境配置 95
4.3.4 Spring Boot安全管理 102
4.3.5 Spring Boot實現自定義Starter 108
4.4 Spring Boot Web容器 114
4.4.1 Spring Boot Web容器配置 115
4.4.2 Spring Boot嵌入式Web容器原理 121
4.4.3 Spring Boot的ClassLoader載入機制 124
4.5 小結 131
第5章 關鍵技術 132
5.1 服務註冊與發現 133
5.1.1 服務註冊與發現原理 133
5.1.2 微服務註冊中心技術選型 135
5.1.3 Spring Cloud Eureka 139
5.1.4 Eureka架構與設計原理 142
5.1.5 Eureka快取機制 145
5.1.6 Eureka定製化開發 148
5.2 服務配置中心 149
5.2.1 服務配置中心管理 149
5.2.2 Spring Cloud Config 151
5.2.3 Config Server配置詳解 158
5.2.4 Config Server定製化開發 161
5.3 微服務網關 170
5.3.1 微服務網關模式 170
5.3.2 網關的主要功能 175
5.3.3 網關的技術選型 177
5.3.4 Spring Cloud Zuul網關 178
5.3.5 Zuul的主要工作原理 182
5.3.6 Zuul的外掛程式機制及定製化開發 187
5.3.7 Zuul的動態路由 190
5.3.8 Zuul Filter擴展功能實現 196
5.3.9 Zuul源碼解析 201
5.4 負載均衡 204
5.4.1 負載均衡機制 204
5.4.2 四層與七層負載均衡 206
5.4.3 負載均衡算法 206
5.4.4 Spring Cloud Ribbon 207
5.4.5 Ribbon的核心工作原理 213
5.4.6 Ribbon源碼解析 215
5.5 容錯與隔離 222
5.5.1 隔離機制 223
5.5.2 微服務的風險 225
5.5.3 降級保護 227
5.5.4 限流保護 229
5.5.5 熔斷保護 231
5.5.6 逾時與重試 232
5.5.7 Spring Cloud Hystrix容錯框架 233
5.5.8 Hystrix的核心工作原理 240
5.5.9 Hystrix源碼解析 249
5.6 小結 252
第6章 系統集成 253
6.1 服務集成互動技術 254
6.1.1 網路協定 254
6.1.2 Linux I/O模式 258
6.1.3 序列化方式 262
6.2 REST服務集成 263
6.2.1 REST API 264
6.2.2 Swagger接口文檔規範 270
6.2.3 JAX-RS提供REST服務 272
6.2.4 Feign實現REST調用 273
6.3 RPC遠程過程調用 278
6.3.1 RPC框架概述 278
6.3.2 主流RPC通信框架 280
6.3.3 Dubbo架構進階 281
6.3.4 Spring Cloud集成Dubbo 294
6.3.5 Spring Cloud集成gRPC 299
6.4 MOM異步通信 309
6.4.1 訊息中間件概述 309
6.4.2 訊息中間件的使用場景 311
6.4.3 常用訊息中間件 314
6.4.4 RabbitMQ訊息中間件 314
6.4.5 Kafka訊息中間件 318
6.4.6 Spring Cloud Stream概述 319
6.4.7 Stream源碼解析 325
6.4.8 Stream套用進階 341
6.5 小結 344
第7章 微服務數據架構 345
7.1 數據分類及存儲特性 346
7.1.1 關係資料庫概述 346
7.1.2 NoSQL數據存儲 349
7.1.3 Spring Data 353
7.1.4 使用spring-boot-starter-jdbc訪問MySQL 354
7.1.5 Spring ORM框架訪問資料庫 358
7.1.6 Spring Data與NoSQL的集成 363
7.2 事務管理理論 370
7.2.1 事務管理概述 370
7.2.2 ACID理論 372
7.2.3 一致性理論 373
7.2.4 CAP理論 373
7.2.5 BASE理論 374
7.3 微服務架構的數據一致性 374
7.3.1 解決方案概覽 375
7.3.2 兩階段提交模式 375
7.3.3 TCC補償模式 377
7.3.4 Saga長事務模式 379
7.3.5 可靠訊息模式 383
7.4 小結 389
第8章 微服務交付 390
8.1 軟體交付演進 391
8.1.1 軟體過程模型 391
8.1.2 交付演進歷程進階 394
8.2 微服務如何持續集成交付 397
8.2.1 配置管理概述 398
8.2.2 持續集成概述 399
8.2.3 持續集成Pipeline 399
8.2.4 持續交付概述 408
8.2.5 持續交付Pipeline 408
8.3 基於容器的交付 410
8.3.1 Docker概述 410
8.3.2 Docker的原理 412
8.3.3 Docker構建部署過程 414
8.3.4 Docker Compose編排服務 419
8.3.5 Maven外掛程式構建Docker鏡像 421
8.4 小結 423
第9章 服務監控治理 424
9.1 監控系統概述 425
9.1.1 監控系統原理及分類 425
9.1.2 監控分類 427
9.1.3 監控關注的對象 428
9.2 指標型數據監控 431
9.2.1 指標採集概述 431
9.2.2 JavaAgent技術 434
9.2.3 Javaassist技術 438
9.2.4 Spring Boot Admin監控詳解 440
9.2.5 Spring Boot集成Prometheus 443
9.3 日誌監控方案 446
9.3.1 日誌採集方案 446
9.3.2 ELK日誌的解決方案 449
9.3.3 Spring Boot的日誌解決方案 450
9.4 服務調用鏈技術 455
9.4.1 APM與調用鏈技術 455
9.4.2 Dapper與分散式跟蹤原理 457
9.4.3 Sleuth與Zipkin技術 459
9.4.4 SkyWalking技術 465
9.5 小結 468
進階篇
第10章 回響式微服務架構 470
10.1 回響式編程 471
10.1.1 回響式編程的動機 471
10.1.2 回響式宣言 475
10.1.3 回響式編程詳解 476
10.1.4 編程範式 480
10.2 回響式技術框架 482
10.2.1 回響式編程規範 483
10.2.2 Java Flow API 484
10.2.3 RxJava回響式框架 487
10.2.4 Reactor回響式框架 490
10.2.5 Vert.X回響式編程 494
10.2.6 Spring Boot 2回響式編程 497
10.3 Spring WebFlux框架 499
10.3.1 Spring WebFlux概述 499
10.3.2 WebFlux伺服器開發 501
10.3.3 WebClient開發 506
10.3.4 服務端推送事件 509
10.3.5 Spring WebFlux的優勢與局限 511
10.4 Spring Cloud Gateway 514
10.4.1 Spring Cloud Gateway概述 514
10.4.2 Spring Cloud Gateway的工作原理 517
10.4.3 Spring Cloud Gateway的動態路由 527
10.4.4 Spring Cloud Gateway源碼解析 533
10.5 小結 540
第11章 Kubernetes容器管理 541
11.1 Kubernetes的基礎 541
11.1.1 Kubernetes基本概述 541
11.1.2 Kubernetes的核心組件 542
11.2 Kubernetes的設計理念 543
11.2.1 Kubernetes的設計原則 543
11.2.2 Kubernetes與微服務 544
11.2.3 Kubernetes與DevOps 544
11.3 Spring Cloud與Kubernetes的生態融合 545
11.3.1 Spring Cloud與Kubernetes各自的優劣勢 545
11.3.2 Spring Cloud與Kubernetes的融合 547
11.3.3 Spring Cloud Kubernetes項目 548
11.4 小結 552
第12章 微服務發展趨勢 553
12.1 雲原生套用架構 553
12.1.1 雲原生套用架構進階 554
12.1.2 Java的雲原生套用最佳化 555
12.2 Service Mesh技術 556
12.2.1 微服務的SideCar模式 557
12.2.2 Service Mesh的技術前景 557
12.3 Serverless技術 558
12.3.1 Serverless的模式 558
12.3.2 Serverless的技術前景 559
12.4 總結 560
作者簡介
王佩華
畢業於天津理工大學,就職於京東,任架構師,從事多年金融及電信行業分散式系統架構的設計及研發管理工作。
多項微服務領域專利的發明人,熱衷於參與開源社區並主導了公司微服務項目的開源和推廣,擅長通信協定設計、分散式中間件設計、高並發系統架構設計及雲原生架構等。