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