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