近年來微服務架構已經成為大規模分布式架構的主流技術,越來越多的公司已經或開始轉型為微服務架構。本書不以某一種微服務框架的使用為主題,而是對整個微服務生態進行系統性的講解,并結合工作中的大量實戰案例為讀者呈現一本讀完即可落地的工具書。書中的理論部分介紹了微服務架構的發展歷程,深入通俗地講解了領域驅動設計,幫助讀者更好地利用DDD來建模和劃分服務;穩定性保證的常用手段和分布式事務的一致性方案這兩章凝聚了作者多年的積累和思考,相信讀者看完后會有不一樣的感觸和收獲;書中實戰部分的內容非常豐富,以項目為基礎,逐層介紹常見的Dubbo、Spring Cloud和Service Mesh框架的具體使用方法,并對實現原理進行剖析;書中還以具體案例全面介紹了微服務雙活體系建設、微服務監控與告警、微服務編排、百億流量微服務網關的設計與實現,以及基于支付場景下的微服務改造等,并讓讀者了解如何借助微服務來增強和重構現有的遺留系統。
網名小程故事多,現任某公司高級架構師,12年Java研發經驗,8年技術管理和架構經驗,熟悉支付和電商領域,擅長微服務生態建設和運維監控,對Dubbo、Spring Cloud和gRPC等微服務框架有深入研究,幫助多家公司進行過微服務建設和改造。合著作品《深入分布式緩存》,阿里云MVP、云棲社區外部專家、Codingfly社區特聘技術專家、CSDN博主專家。
目錄
第1章 微服務架構概述
1.1 什么是架構
1.2 幾個相關概念
1.3 從軟件的生命周期看架構設計
1.4 架構的形式與特點
1.5 架構的目標與方法
1.6 架構的不同風格
第2章 微服務領域驅動設計
2.1 領域驅動設計
2.1.1 領域驅動設計概覽
2.1.2 問題域與解決方案域
2.1.3 限界上下文
2.1.4 上下文映射
2.1.5 領域架構
2.2 微服務的設計
2.2.1 限界上下文的邊界
2.2.2 限界上下文即微服務
2.2.3 識別限界上下文
2.2.4 微服務之間的協作
2.3 小結
第3章 Apache Dubbo框架的原理與實現
3.1 Dubbo框架的選型與使用
3.1.1 Dubbo框架的選型
3.1.2 Dubbo框架的使用
3.2 Dubbo框架的原理分析
3.2.1 總體架構分析
3.2.2 Dubbo Bean的加載
3.2.3 Dubbo Extension機制
3.2.4 Dubbo消費端
3.2.5 Dubbo服務端
3.2.6 Dubbo的通信機制
3.3 基于Dubbo的自動化Mock系統
3.3.1 Mock模擬系統的產生
3.3.2 Dubbo Mock的使用
3.3.3 Dubbo Mock的原理解析
3.3.4 自動化Mock系統的實現
第4章 Spring Boot/Spring Cloud實踐
4.1 Spring Boot原理剖析
4.1.1 Spring Boot Quick Start
4.1.2 Spring Boot之SpringApplication
4.1.3 spring-boot-loaded模塊分析
4.1.4 spring-boot-autoconfigure模塊分析
4.1.5 Spring Boot Conditional注解分析
4.2 Dubbo Spring Boot Starter
4.2.1 Dubbo Spring Boot Starter簡介
4.2.2 Dubbo Initializr及sample
4.2.3 dubbo-spring-boot-autoconfigure模塊
4.2.4 dubbo-spring-boot-actuator模塊
4.3 Spring Cloud棧
4.3.1 為什么微服務架構需要Spring Cloud
4.3.2 Spring Cloud技術棧總覽
4.3.3 spring-cloud-scaffold基礎庫集合
4.4 基于Maven Archetype的腳手架
4.4.1 Maven Archetype
4.4.2 腳手架的搭建
4.4.3 生成腳手架
第5章 微服務穩定性保證的常用手段
5.1 微服務的穩定性
5.2 高可用
5.2.1 限流原理與實現
5.2.2 斷路器原理與實現
5.2.3 超時與重試
5.3 高并發
5.3.1 異步
5.3.2 緩存
5.4 總結
第6章 微服務下如何保證事務的一致性
6.1 從本地事務到分布式事務的演變
6.2 強一致性解決方案
6.2.1 二階段提交協議
6.2.2 三階段提交協議
6.3 最終一致性解決方案
6.3.1 TCC模式
6.3.2 補償模式
6.3.3 可靠事件模式
6.4 開源項目的分布式事務實現解讀
6.4.1 Apache RocketMQ
6.4.2 ServiceComb
第7章 百億流量微服務網關的設計與實現
7.1 API網關概述
7.1.1 分布式服務架構、微服務架構與 API 網關
7.1.2 API網關的定義、職能與關注點
7.1.3 API網關的分類與技術分析
7.2 開源網關的分析與調研
7.2.1 常見的開源網關介紹
7.2.2 四大開源網關的對比分析
7.2.3 開源網關的技術總結
7.3 百億流量交易系統API網關設計
7.3.1 百億流量交易系統API網關的現狀和面臨問題
7.3.2 業務網關的設計與最佳實踐
第8章 微服務編排
8.1 Netflix Conductor
8.2 Netflix Conductor的架構
8.3 Conductor的使用案例
8.4 Netflix Conductor源碼分析
8.4.1 Client層源碼分析
8.4.2 Server端源碼分析
8.4.3 core端源碼分析
第9章 微服務數據抽取與統計
9.1 案例小故事
9.2 數據倉庫概述
9.2.1 什么是數據倉庫
9.2.2 數據倉庫架構
9.2.3 數據倉庫建模方法
9.2.4 數據抽取、轉換和加載
9.2.5 數據統計
9.3 數據倉庫工具Hive
9.3.1 安裝Hive
9.3.2 Hive數據庫
9.3.3 Hive表
9.4 使用Sqoop抽取數據
9.4.1 安裝Sqoop
9.4.2 將MySQL表數據導入Hive表
9.5 ETL作業調度
第10章 微服務雙活體系建設
10.1 系統高可用
10.2 雙活數據中心
10.2.1 單機房部署
10.2.2 雙機房部署
10.2.3 基于支付場景的雙活體系建設
第11章 基于支付場景下的微服務改造與性能優化
11.1 支付場景的介紹
11.2 支付業務建模和服務劃分
11.3 支付場景下微服務架構的詳解與分析
11.3.1 業務架構分析
11.3.2 技術平臺詳解
11.4 從代碼層面提升微服務架構的性能
11.4.1 從代碼和設計的角度看
11.4.2 從整體架構的角度看
11.5 微服務架構中常見的一些故障分析技巧
第12章 遺留系統的微服務架構改造
12.1 代碼分層結構的轉變
12.2 遺留系統的債券與思考
12.3 從單體系統拆分服務的方法論
12.4 遺留系統的微服務架構改造
12.4.1 從代碼重構開始
12.4.2 拆分服務需要面向服務進行架構設計
12.4.3 改造是一個漸進的過程
12.4.4 單元測試是基石
12.4.5 面向失敗的設計
12.4.6 前后端分離
12.4.7 共享現有數據庫
12.4.8 灰度發布的必要性
12.4.9 日志聚合與全鏈路監控
第13章 Service Mesh詳解
13.1 Service Mesh是什么
13.2 Service Mesh的背景
13.3 Service Mesh介紹
13.3.1 Service Mesh架構
13.3.2 Service Mesh能做什么
13.4 Service Mesh的價值
13.5 Service Mesh現狀
13.6 Service Mesh存在的問題
13.7 Istio詳解
13.7.1 Istio架構
13.7.2 數據平面
13.7.3 控制平面
13.7.4 Isito案例
13.8 Service Mesh展望
第14章 微服務監控實戰
14.1 APM原理與應用
14.1.1 什么是APM
14.1.2 APM監控點
14.1.3 APM深入解析
14.2 Prometheus監控系統介紹
14.2.1 Prometheus的主要特點
14.2.2 Prometheus的架構及組件介紹
14.2.3 Prometheus的安裝
14.2.4 使用Prometheus對MySQL進行監控
14.2.5 Prometheus的告警機制