關于我們
書單推薦
新書推薦
|
微服務架構深度解析:原理、實踐與進階 讀者對象:具備基礎軟件開發(fā)經驗的開發(fā)人員及想要了解微服務架構的IT從業(yè)人士
在當今的數字化經濟時代,微服務架構已經成為公司業(yè)務構建的主流架構模式,代表了未來的技術發(fā)展趨勢,同時微服務也成為開發(fā)者的必備技能。本書從微服務架構的設計理念和方法論切入,從不同角度全面介紹微服務特性、使用場景、組織流程、構建交互、部署交付等軟件工程各個關鍵環(huán)節(jié)和核心要素,既包含了具體微服務技術的源碼解讀、原理分析,也加入了作者在電信、金融領域積累的真實案例和實踐經驗。全書分為原理篇、實踐篇、進階篇。原理篇涵蓋微服務的概念、采用前提、領域驅動設計、DevOps;實踐篇對Spring Boot、Spring Cloud 治理框架、系統(tǒng)集成、微服務數據架構、微服務交付、微服務的監(jiān)控等重要技術話題展開深入講解;進階篇主要介紹函數式編程及響應式微服務架構、Kubernetes、云原生架構生態(tài)。本書不僅適合初學者深入理解微服務架構,也可以作為團隊管理者或者架構師進階微服務架構的技術參考手冊。
王佩華畢業(yè)于天津理工大學,目前就職于京東公司,任架構師,從事多年金融及電信行業(yè)分布式系統(tǒng)架構的設計及研發(fā)管理工作。多項微服務領域專利的發(fā)明人,熱衷于參與開源社區(qū)并主導了公司微服務項目的開源和推廣,擅長通信協(xié)議設計、分布式中間件設計、高并發(fā)系統(tǒng)架構設計及云原生架構等。
原理篇
第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 圍繞業(yè)務劃分團隊 ............................................................................................................. 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 可移植性優(yōu)先 ..................................................................................................................... 18 1.4 小結 ................................................................................................................................. 19 微服務架構深度解析:原理、實踐與進階 ? XII ? 第2 章 微服務的采用前提 ........................................................................................................ 20 2.1 微服務使用場景 .............................................................................................................. 21 2.1.1 項目復雜度 ......................................................................................................................... 21 2.1.2 團隊規(guī)模 ............................................................................................................................. 22 2.1.3 變更頻率 ............................................................................................................................. 22 2.1.4 項目類型 ............................................................................................................................. 23 2.1.5 遺留系統(tǒng)遷移 ..................................................................................................................... 23 2.2 技術與理念 ...................................................................................................................... 24 2.2.1 面向服務 ............................................................................................................................. 24 2.2.2 底座技術 ............................................................................................................................. 25 2.2.3 架構技術 ............................................................................................................................. 26 2.2.4 服務監(jiān)控與治理 ................................................................................................................. 28 2.2.5 容器和自動化技術 ............................................................................................................. 28 2.2.6 云原生12 要素 ................................................................................................................... 29 2.3 康威定律 .......................................................................................................................... 32 2.3.1 協(xié)作問題 ............................................................................................................................. 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.3 界限上下文 ......................................................................................................................... 46 3.1.4 領域建模 ............................................................................................................................. 47 3.1.5 架構設計 ............................................................................................................................. 49 3.2 微服務化改造 .................................................................................................................. 51 3.2.1 技術債務 ............................................................................................................................. 51 3.2.2 微服務化改造時機 ............................................................................................................. 51 3.2.3 單體架構的改造模式 ......................................................................................................... 51 目 錄 ? XIII ? 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 生產就緒與環(huán)境配置 ..................................................................................... 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 服務注冊與發(fā)現 ............................................................................................................ 133 5.1.1 服務注冊與發(fā)現原理 ....................................................................................................... 133 微服務架構深度解析:原理、實踐與進階 ? XIV ? 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 定制化開發(fā) ........................................................................................................... 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 定制化開發(fā)................................................................................................ 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 的插件機制及定制化開發(fā) ....................................................................................... 187 5.3.7 Zuul 的動態(tài)路由 .............................................................................................................. 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 目 錄 ? XV ? 5.5.9 Hystrix 源碼解析 .............................................................................................................. 249 5.6 小結 ............................................................................................................................... 252 第6 章 系統(tǒng)集成 ..................................................................................................................... 253 6.1 服務集成交互技術 ........................................................................................................ 254 6.1.1 網絡協(xié)議 ........................................................................................................................... 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 接口文檔規(guī)范 .................................................................................................... 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 微服務架構深度解析:原理、實踐與進階 ? XVI ? 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 微服務如何持續(xù)集成交付 ............................................................................................ 397 8.2.1 配置管理概述 ................................................................................................................... 398 8.2.2 持續(xù)集成概述 ................................................................................................................... 399 8.2.3 持續(xù)集成Pipeline ............................................................................................................. 399 8.2.4 持續(xù)交付概述 ................................................................................................................... 408 8.2.5 持續(xù)交付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 章 服務監(jiān)控治理.............................................................................................................. 424 9.1 監(jiān)控系統(tǒng)概述 ................................................................................................................ 425 9.1.1 監(jiān)控系統(tǒng)原理及分類 ....................................................................................................... 425 目 錄 ? XVII ? 9.1.2 監(jiān)控分類 ........................................................................................................................... 427 9.1.3 監(jiān)控關注的對象 ............................................................................................................... 428 9.2 指標型數據監(jiān)控 ............................................................................................................ 431 9.2.1 指標采集概述 ................................................................................................................... 431 9.2.2 JavaAgent 技術 ................................................................................................................. 434 9.2.3 Javaassist 技術 .................................................................................................................. 438 9.2.4 Spring Boot Admin 監(jiān)控詳解 ........................................................................................... 440 9.2.5 Spring Boot 集成Prometheus ........................................................................................... 443 9.3 日志監(jiān)控方案 ................................................................................................................ 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 響應式編程規(guī)范 ............................................................................................................. 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 微服務架構深度解析:原理、實踐與進階 ? XVIII ? 10.3.2 WebFlux 服務器開發(fā) ..................................................................................................... 501 10.3.3 WebClient 開發(fā) ............................................................................................................... 506 10.3.4 服務端推送事件 ............................................................................................................. 509 10.3.5 Spring WebFlux 的優(yōu)勢與局限 ...................................................................................... 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 的動態(tài)路由 ................................................................................ 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 的生態(tài)融合 ................................................................... 545 11.3.1 Spring Cloud 與Kubernetes 各自的優(yōu)劣勢 ................................................................... 545 11.3.2 Spring Cloud 與Kubernetes 的融合 ............................................................................... 547 11.3.3 Spring Cloud Kubernetes 項目........................................................................................ 548 11.4 小結 .............................................................................................................................. 552 第12 章 微服務發(fā)展趨勢 ........................................................................................................ 553 12.1 云原生應用架構 .......................................................................................................... 553 12.1.1 云原生應用架構進階 ..................................................................................................... 554 12.1.2 Java 的云原生應用優(yōu)化 ................................................................................................. 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
你還可能感興趣
我要評論
|