關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階 讀者對(duì)象:具備基礎(chǔ)軟件開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)人員及想要了解微服務(wù)架構(gòu)的IT從業(yè)人士
在當(dāng)今的數(shù)字化經(jīng)濟(jì)時(shí)代,微服務(wù)架構(gòu)已經(jīng)成為公司業(yè)務(wù)構(gòu)建的主流架構(gòu)模式,代表了未來(lái)的技術(shù)發(fā)展趨勢(shì),同時(shí)微服務(wù)也成為開(kāi)發(fā)者的必備技能。本書(shū)從微服務(wù)架構(gòu)的設(shè)計(jì)理念和方法論切入,從不同角度全面介紹微服務(wù)特性、使用場(chǎng)景、組織流程、構(gòu)建交互、部署交付等軟件工程各個(gè)關(guān)鍵環(huán)節(jié)和核心要素,既包含了具體微服務(wù)技術(shù)的源碼解讀、原理分析,也加入了作者在電信、金融領(lǐng)域積累的真實(shí)案例和實(shí)踐經(jīng)驗(yàn)。全書(shū)分為原理篇、實(shí)踐篇、進(jìn)階篇。原理篇涵蓋微服務(wù)的概念、采用前提、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、DevOps;實(shí)踐篇對(duì)Spring Boot、Spring Cloud 治理框架、系統(tǒng)集成、微服務(wù)數(shù)據(jù)架構(gòu)、微服務(wù)交付、微服務(wù)的監(jiān)控等重要技術(shù)話題展開(kāi)深入講解;進(jìn)階篇主要介紹函數(shù)式編程及響應(yīng)式微服務(wù)架構(gòu)、Kubernetes、云原生架構(gòu)生態(tài)。本書(shū)不僅適合初學(xué)者深入理解微服務(wù)架構(gòu),也可以作為團(tuán)隊(duì)管理者或者架構(gòu)師進(jìn)階微服務(wù)架構(gòu)的技術(shù)參考手冊(cè)。
王佩華畢業(yè)于天津理工大學(xué),目前就職于京東公司,任架構(gòu)師,從事多年金融及電信行業(yè)分布式系統(tǒng)架構(gòu)的設(shè)計(jì)及研發(fā)管理工作。多項(xiàng)微服務(wù)領(lǐng)域?qū)@陌l(fā)明人,熱衷于參與開(kāi)源社區(qū)并主導(dǎo)了公司微服務(wù)項(xiàng)目的開(kāi)源和推廣,擅長(zhǎng)通信協(xié)議設(shè)計(jì)、分布式中間件設(shè)計(jì)、高并發(fā)系統(tǒng)架構(gòu)設(shè)計(jì)及云原生架構(gòu)等。
原理篇
第1 章 微服務(wù)概述 ..................................................................................................................... 2 1.1 微服務(wù)架構(gòu)介紹 ................................................................................................................ 3 1.1.1 背景介紹 ............................................................................................................................... 3 1.1.2 微服務(wù)的定義 ....................................................................................................................... 4 1.1.3 微服務(wù)與云原生 ................................................................................................................... 6 1.2 微服務(wù)主要特性 ................................................................................................................ 9 1.2.1 粒度更細(xì)的服務(wù) ................................................................................................................... 9 1.2.2 圍繞業(yè)務(wù)劃分團(tuán)隊(duì) ............................................................................................................. 10 1.2.3 技術(shù)多樣性 ......................................................................................................................... 11 1.2.4 去中心化 ............................................................................................................................. 12 1.2.5 自動(dòng)化運(yùn)維 ......................................................................................................................... 13 1.2.6 快速演進(jìn) ............................................................................................................................. 14 1.3 架構(gòu)設(shè)計(jì)哲學(xué) .................................................................................................................. 14 1.3.1 小即是美 ............................................................................................................................. 15 1.3.2 做好一件事 ......................................................................................................................... 16 1.3.3 快速建立原型 ..................................................................................................................... 16 1.3.4 軟件的復(fù)利效應(yīng) ................................................................................................................. 17 1.3.5 可移植性優(yōu)先 ..................................................................................................................... 18 1.4 小結(jié) ................................................................................................................................. 19 微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階 ? XII ? 第2 章 微服務(wù)的采用前提 ........................................................................................................ 20 2.1 微服務(wù)使用場(chǎng)景 .............................................................................................................. 21 2.1.1 項(xiàng)目復(fù)雜度 ......................................................................................................................... 21 2.1.2 團(tuán)隊(duì)規(guī)模 ............................................................................................................................. 22 2.1.3 變更頻率 ............................................................................................................................. 22 2.1.4 項(xiàng)目類型 ............................................................................................................................. 23 2.1.5 遺留系統(tǒng)遷移 ..................................................................................................................... 23 2.2 技術(shù)與理念 ...................................................................................................................... 24 2.2.1 面向服務(wù) ............................................................................................................................. 24 2.2.2 底座技術(shù) ............................................................................................................................. 25 2.2.3 架構(gòu)技術(shù) ............................................................................................................................. 26 2.2.4 服務(wù)監(jiān)控與治理 ................................................................................................................. 28 2.2.5 容器和自動(dòng)化技術(shù) ............................................................................................................. 28 2.2.6 云原生12 要素 ................................................................................................................... 29 2.3 康威定律 .......................................................................................................................... 32 2.3.1 協(xié)作問(wèn)題 ............................................................................................................................. 32 2.3.2 溝通效率問(wèn)題 ..................................................................................................................... 33 2.3.3 組織的演進(jìn) ......................................................................................................................... 33 2.4 流程管理 .......................................................................................................................... 34 2.4.1 敏捷方法論 ......................................................................................................................... 34 2.4.2 DevOps 轉(zhuǎn)型 ....................................................................................................................... 35 2.4.3 自動(dòng)化管理工具 ................................................................................................................. 37 2.5 小結(jié) ................................................................................................................................. 37 第3 章 微服務(wù)構(gòu)建 ................................................................................................................... 38 3.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) .................................................................................................................. 39 3.1.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)概述 ............................................................................................................. 39 3.1.2 專注問(wèn)題域 ......................................................................................................................... 42 3.1.3 服務(wù)的拆分 ......................................................................................................................... 44 3.1.3 界限上下文 ......................................................................................................................... 46 3.1.4 領(lǐng)域建模 ............................................................................................................................. 47 3.1.5 架構(gòu)設(shè)計(jì) ............................................................................................................................. 49 3.2 微服務(wù)化改造 .................................................................................................................. 51 3.2.1 技術(shù)債務(wù) ............................................................................................................................. 51 3.2.2 微服務(wù)化改造時(shí)機(jī) ............................................................................................................. 51 3.2.3 單體架構(gòu)的改造模式 ......................................................................................................... 51 目 錄 ? XIII ? 3.3 微服務(wù)構(gòu)建進(jìn)階 .............................................................................................................. 53 3.3.1 軟件構(gòu)建 ............................................................................................................................. 53 3.3.2 微服務(wù)構(gòu)建實(shí)踐 ................................................................................................................. 54 3.3.3 微服務(wù)架構(gòu)反模式 ............................................................................................................. 55 3.4 小結(jié) ................................................................................................................................. 57 實(shí)踐篇 第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 啟動(dòng) ............................................................................................................. 67 4.2.1 Spring Boot 概述 ................................................................................................................ 67 4.2.2 Spring Boot 快速搭建 ......................................................................................................... 70 4.2.3 @SpringBootApplication 注解詳解 ................................................................................... 72 4.2.4 Spring Boot 啟動(dòng)流程進(jìn)階 ................................................................................................. 77 4.2.5 Spring Boot 自動(dòng)裝配機(jī)制 ................................................................................................. 80 4.2.6 Spring Boot 功能擴(kuò)展點(diǎn)詳解 ............................................................................................. 85 4.3 Spring Boot Starter 技術(shù) .................................................................................................. 88 4.3.1 Spring Boot Starter 概述 ..................................................................................................... 88 4.3.2 Spring Boot 常用開(kāi)箱即用Starter ..................................................................................... 91 4.3.3 Spring Boot 生產(chǎn)就緒與環(huán)境配置 ..................................................................................... 95 4.3.4 Spring Boot 安全管理 ....................................................................................................... 102 4.3.5 Spring Boot 實(shí)現(xiàn)自定義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 加載機(jī)制 ............................................................................. 124 4.5 小結(jié) ............................................................................................................................... 131 第5 章 關(guān)鍵技術(shù) ..................................................................................................................... 132 5.1 服務(wù)注冊(cè)與發(fā)現(xiàn) ............................................................................................................ 133 5.1.1 服務(wù)注冊(cè)與發(fā)現(xiàn)原理 ....................................................................................................... 133 微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階 ? XIV ? 5.1.2 微服務(wù)注冊(cè)中心技術(shù)選型 ............................................................................................... 135 5.1.3 Spring Cloud Eureka ......................................................................................................... 139 5.1.4 Eureka 架構(gòu)與設(shè)計(jì)原理 ................................................................................................... 142 5.1.5 Eureka 緩存機(jī)制 ............................................................................................................... 145 5.1.6 Eureka 定制化開(kāi)發(fā) ........................................................................................................... 148 5.2 服務(wù)配置中心 ................................................................................................................ 149 5.2.1 服務(wù)配置中心管理 ........................................................................................................... 149 5.2.2 Spring Cloud Config ......................................................................................................... 151 5.2.3 Config Server 配置詳解 ................................................................................................... 158 5.2.4 Config Server 定制化開(kāi)發(fā)................................................................................................ 161 5.3 微服務(wù)網(wǎng)關(guān) .................................................................................................................... 170 5.3.1 微服務(wù)網(wǎng)關(guān)模式 ............................................................................................................... 170 5.3.2 網(wǎng)關(guān)的主要功能 ............................................................................................................... 175 5.3.3 網(wǎng)關(guān)的技術(shù)選型 ............................................................................................................... 177 5.3.4 Spring Cloud Zuul 網(wǎng)關(guān) .................................................................................................... 178 5.3.5 Zuul 的主要工作原理 ...................................................................................................... 182 5.3.6 Zuul 的插件機(jī)制及定制化開(kāi)發(fā) ....................................................................................... 187 5.3.7 Zuul 的動(dòng)態(tài)路由 .............................................................................................................. 190 5.3.8 Zuul Filter 擴(kuò)展功能實(shí)現(xiàn) ................................................................................................. 196 5.3.9 Zuul 源碼解析 .................................................................................................................. 201 5.4 負(fù)載均衡 ........................................................................................................................ 204 5.4.1 負(fù)載均衡機(jī)制 ................................................................................................................... 204 5.4.2 四層與七層負(fù)載均衡 ....................................................................................................... 206 5.4.3 負(fù)載均衡算法 ................................................................................................................... 206 5.4.4 Spring Cloud Ribbon ......................................................................................................... 207 5.4.5 Ribbon 的核心工作原理 .................................................................................................. 213 5.4.6 Ribbon 源碼解析 .............................................................................................................. 215 5.5 容錯(cuò)與隔離 .................................................................................................................... 222 5.5.1 隔離機(jī)制 ........................................................................................................................... 223 5.5.2 微服務(wù)的風(fēng)險(xiǎn) ................................................................................................................... 225 5.5.3 降級(jí)保護(hù) ........................................................................................................................... 227 5.5.4 限流保護(hù) ........................................................................................................................... 229 5.5.5 熔斷保護(hù) ........................................................................................................................... 231 5.5.6 超時(shí)與重試 ....................................................................................................................... 232 5.5.7 Spring Cloud Hystrix 容錯(cuò)框架 ........................................................................................ 233 5.5.8 Hystrix 的核心工作原理 .................................................................................................. 240 目 錄 ? XV ? 5.5.9 Hystrix 源碼解析 .............................................................................................................. 249 5.6 小結(jié) ............................................................................................................................... 252 第6 章 系統(tǒng)集成 ..................................................................................................................... 253 6.1 服務(wù)集成交互技術(shù) ........................................................................................................ 254 6.1.1 網(wǎng)絡(luò)協(xié)議 ........................................................................................................................... 254 6.1.2 Linux I/O 模式 .................................................................................................................. 258 6.1.3 序列化方式 ....................................................................................................................... 262 6.2 REST 服務(wù)集成 ............................................................................................................. 263 6.2.1 REST API.......................................................................................................................... 264 6.2.2 Swagger 接口文檔規(guī)范 .................................................................................................... 270 6.2.3 JAX-RS 提供REST 服務(wù) ................................................................................................. 272 6.2.4 Feign 實(shí)現(xiàn)REST 調(diào)用 ..................................................................................................... 273 6.3 RPC 遠(yuǎn)程過(guò)程調(diào)用 ....................................................................................................... 278 6.3.1 RPC 框架概述 .................................................................................................................. 278 6.3.2 主流RPC 通信框架 ......................................................................................................... 280 6.3.3 Dubbo 架構(gòu)進(jìn)階 ............................................................................................................... 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 消息中間件的使用場(chǎng)景 ................................................................................................... 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 應(yīng)用進(jìn)階 ............................................................................................................... 341 6.5 小結(jié) ............................................................................................................................... 344 第7 章 微服務(wù)數(shù)據(jù)架構(gòu) .......................................................................................................... 345 7.1 數(shù)據(jù)分類及存儲(chǔ)特性 .................................................................................................... 346 7.1.1 關(guān)系數(shù)據(jù)庫(kù)概述 ............................................................................................................... 346 7.1.2 NoSQL 數(shù)據(jù)存儲(chǔ) ............................................................................................................. 349 7.1.3 Spring Data ........................................................................................................................ 353 7.1.4 使用spring-boot-starter-jdbc 訪問(wèn)MySQL ..................................................................... 354 7.1.5 Spring ORM 框架訪問(wèn)數(shù)據(jù)庫(kù) ......................................................................................... 358 微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階 ? XVI ? 7.1.6 Spring Data 與NoSQL 的集成......................................................................................... 363 7.2 事務(wù)管理理論 ................................................................................................................ 370 7.2.1 事務(wù)管理概述 ................................................................................................................... 370 7.2.2 ACID 理論 ........................................................................................................................ 372 7.2.3 一致性理論 ....................................................................................................................... 373 7.2.4 CAP 理論 .......................................................................................................................... 373 7.2.5 BASE 理論........................................................................................................................ 374 7.3 微服務(wù)架構(gòu)的數(shù)據(jù)一致性 ............................................................................................ 374 7.3.1 解決方案概覽 ................................................................................................................... 375 7.3.2 兩階段提交模式 ............................................................................................................... 375 7.3.3 TCC 補(bǔ)償模式 .................................................................................................................. 377 7.3.4 Saga 長(zhǎng)事務(wù)模式 .............................................................................................................. 379 7.3.5 可靠消息模式 ................................................................................................................... 383 7.4 小結(jié) ............................................................................................................................... 389 第8 章 微服務(wù)交付 ................................................................................................................. 390 8.1 軟件交付演進(jìn) ................................................................................................................ 391 8.1.1 軟件過(guò)程模型 ................................................................................................................... 391 8.1.2 交付演進(jìn)歷程進(jìn)階 ........................................................................................................... 394 8.2 微服務(wù)如何持續(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 構(gòu)建部署過(guò)程 ...................................................................................................... 414 8.3.4 Docker Compose 編排服務(wù) .............................................................................................. 419 8.3.5 Maven 插件構(gòu)建Docker 鏡像 ......................................................................................... 421 8.4 小結(jié) ............................................................................................................................... 423 第9 章 服務(wù)監(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)控關(guān)注的對(duì)象 ............................................................................................................... 428 9.2 指標(biāo)型數(shù)據(jù)監(jiān)控 ............................................................................................................ 431 9.2.1 指標(biāo)采集概述 ................................................................................................................... 431 9.2.2 JavaAgent 技術(shù) ................................................................................................................. 434 9.2.3 Javaassist 技術(shù) .................................................................................................................. 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 服務(wù)調(diào)用鏈技術(shù) ............................................................................................................ 455 9.4.1 APM 與調(diào)用鏈技術(shù) ......................................................................................................... 455 9.4.2 Dapper 與分布式跟蹤原理 .............................................................................................. 457 9.4.3 Sleuth 與Zipkin 技術(shù) ....................................................................................................... 459 9.4.4 SkyWalking 技術(shù) .............................................................................................................. 465 9.5 小結(jié) ............................................................................................................................... 468 進(jìn)階篇 第10 章 響應(yīng)式微服務(wù)架構(gòu) .................................................................................................... 470 10.1 響應(yīng)式編程 .................................................................................................................. 471 10.1.1 響應(yīng)式編程的動(dòng)機(jī) ......................................................................................................... 471 10.1.2 響應(yīng)式宣言 ..................................................................................................................... 475 10.1.3 響應(yīng)式編程詳解 ............................................................................................................. 476 10.1.4 編程范式 ......................................................................................................................... 480 10.2 響應(yīng)式技術(shù)框架 .......................................................................................................... 482 10.2.1 響應(yīng)式編程規(guī)范 ............................................................................................................. 483 10.2.2 Java Flow API ................................................................................................................. 484 10.2.3 RxJava 響應(yīng)式框架 ........................................................................................................ 487 10.2.4 Reactor 響應(yīng)式框架........................................................................................................ 490 10.2.5 Vert.X 響應(yīng)式編程 ......................................................................................................... 494 10.2.6 Spring Boot 2 響應(yīng)式編程 .............................................................................................. 497 10.3 Spring WebFlux 框架 .................................................................................................. 499 10.3.1 Spring WebFlux 概述 ..................................................................................................... 499 微服務(wù)架構(gòu)深度解析:原理、實(shí)踐與進(jìn)階 ? XVIII ? 10.3.2 WebFlux 服務(wù)器開(kāi)發(fā) ..................................................................................................... 501 10.3.3 WebClient 開(kāi)發(fā) ............................................................................................................... 506 10.3.4 服務(wù)端推送事件 ............................................................................................................. 509 10.3.5 Spring WebFlux 的優(yōu)勢(shì)與局限 ...................................................................................... 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 的動(dòng)態(tài)路由 ................................................................................ 527 10.4.4 Spring Cloud Gateway 源碼解析 .................................................................................... 533 10.5 小結(jié) .............................................................................................................................. 540 第11 章 Kubernetes 容器管理 ............................................................................................... 541 11.1 Kubernetes 的基礎(chǔ)....................................................................................................... 541 11.1.1 Kubernetes 基本概述 ...................................................................................................... 541 11.1.2 Kubernetes 的核心組件 .................................................................................................. 542 11.2 Kubernetes 的設(shè)計(jì)理念 ............................................................................................... 543 11.2.1 Kubernetes 的設(shè)計(jì)原則 .................................................................................................. 543 11.2.2 Kubernetes 與微服務(wù) ...................................................................................................... 544 11.2.3 Kubernetes 與DevOps .................................................................................................... 544 11.3 Spring Cloud 與Kubernetes 的生態(tài)融合 ................................................................... 545 11.3.1 Spring Cloud 與Kubernetes 各自的優(yōu)劣勢(shì) ................................................................... 545 11.3.2 Spring Cloud 與Kubernetes 的融合 ............................................................................... 547 11.3.3 Spring Cloud Kubernetes 項(xiàng)目........................................................................................ 548 11.4 小結(jié) .............................................................................................................................. 552 第12 章 微服務(wù)發(fā)展趨勢(shì) ........................................................................................................ 553 12.1 云原生應(yīng)用架構(gòu) .......................................................................................................... 553 12.1.1 云原生應(yīng)用架構(gòu)進(jìn)階 ..................................................................................................... 554 12.1.2 Java 的云原生應(yīng)用優(yōu)化 ................................................................................................. 555 12.2 Service Mesh 技術(shù) ....................................................................................................... 556 12.2.1 微服務(wù)的SideCar 模式 .................................................................................................. 557 12.2.2 Service Mesh 的技術(shù)前景 .............................................................................................. 557 12.3 Serverless 技術(shù) ............................................................................................................ 558 12.3.1 Serverless 的模式 ........................................................................................................... 558 12.3.2 Serverless 的技術(shù)前景 .................................................................................................... 559 12.4 總結(jié) .............................................................................................................................. 560
你還可能感興趣
我要評(píng)論
|