《高可用可伸縮微服務架構》是一部由程超 / 梁桂釗等所著書籍,電子工業出版社出版發行。
基本介紹
- 書名:高可用可伸縮微服務架構
- 作者:程超 / 梁桂釗等
- ISBN:9787121362132
- 出版社:電子工業出版社
出版信息,內容簡介,作者簡介,目錄,
出版信息
作者:程超/梁桂釗/秦金衛/方誌斌/張逸/杜琪/殷琦/肖冠宇
出版社:電子工業出版社
副標題:基於Dubbo、Spring Cloud和Service Mesh
出版年:2019-5-1
頁數:528
定價:108.00
裝幀:平裝
ISBN:9787121362132
出版社:電子工業出版社
副標題:基於Dubbo、Spring Cloud和Service Mesh
出版年:2019-5-1
頁數:528
定價:108.00
裝幀:平裝
ISBN:9787121362132
內容簡介
微服務架構已經成為大規模分散式架構的主流技術,越來越多的公司已經或開始轉型為微服務架構。本書不以某一種微服務框架的使用為主題,而是對整個微服務生態進行系統性的講解,並結合工作中的大量實戰案例為讀者呈現一本讀完即可實際上手套用的工具書。
書中的理論部分介紹了微服務架構的發展歷程,通俗地講解了領域驅動設計,幫助讀者更好地利用DDD來建模和劃分服務;微服務穩定性保證的常用手段和微服務下如何保證事務的一致性這兩章凝聚了作者多年的積累和思考,相信讀者看完後會有不一樣的感觸和收穫;書中實戰部分的內容非常豐富,以項目為基礎,逐層介紹常見的Dubbo、Spring Cloud和Service Mesh框架的具體使用方法,並對實現原理進行剖析;書中還以具體案例全面介紹了微服務雙活體系建設、微服務監控與告警、微服務編排、百億流量微服務網關的設計與實現,以及基於支付場景下的微服務改造等,並讓讀者了解如何藉助微服務來增強和重構現有的遺留系統。
不管是剛接觸微服務的新手,還是正在嘗試藉助微服務解放生產力的開發人員或運維人員,甚至是立志於構建高可用可伸縮的微服務體系的技術Leader和架構師,閱讀本書,對讀者必有裨益。
作者簡介
程超,擅長微服務生態建設和運維監控,對Dubbo、Spring Cloud和gRPC等微服務框架有深入研究,幫助多家公司進行過微服務建設和改造。合著作品《深入分散式快取》。
梁桂釗,網際網路高級開發工程師,參與過內容分發、K12 教育、淘系電商等項目。具有Java核心技術、微服務、分散式、高並發等領域一線實戰經驗。
目錄
1.1 什麼是架構 1
1.2 幾個相關概念 3
1.3 從軟體的生命周期看架構設計 7
1.4 架構的形式與特點 9
1.5 架構的目標與方法 13
1.6 架構的不同風格 18
第2章 微服務領域驅動設計 30
2.1 領域驅動設計 31
2.1.1 領域驅動設計概覽 31
2.1.2 問題域與解決方案域 34
2.1.3 限界上下文 35
2.1.4 上下文映射 40
2.1.5 領域架構 43
2.2 微服務的設計 48
2.2.1 限界上下文的邊界 48
2.2.2 限界上下文即微服務 51
2.2.3 識別限界上下文 53
2.2.4 微服務之間的協作 59
2.3 小結 63
第3章 Apache Dubbo框架的原理與實現 64
3.1 Dubbo框架的選型與使用 64
3.1.1 Dubbo框架的選型 64
3.1.2 Dubbo框架的使用 65
3.2 Dubbo框架的原理分析 70
3.2.1 總體架構分析 70
3.2.2 Dubbo Bean的載入 73
3.2.3 Dubbo Extension機制 77
3.2.4 Dubbo消費端 91
3.2.5 Dubbo服務端 126
3.2.6 Dubbo的通信機制 144
3.3 基於Dubbo的自動化Mock系統 165
3.3.1 Mock模擬系統的產生 166
3.3.2 Dubbo Mock的使用 167
3.3.3 Dubbo Mock的原理解析 168
3.3.4 自動化Mock系統的實現 170
第4章 Spring Boot/Spring Cloud實踐 177
4.1 Spring Boot原理剖析 178
4.1.1 Spring Boot Quick Start 178
4.1.2 Spring Boot之SpringApplication 180
4.1.3 spring-boot-loaded模組分析 186
4.1.4 spring-boot-autoconfigure模組分析 190
4.1.5 Spring Boot Conditional註解分析 195
4.2 Dubbo Spring Boot Starter 198
4.2.1 Dubbo Spring Boot Starter簡介 198
4.2.2 Dubbo Initializr及sample 198
4.2.3 dubbo-spring-boot-autoconfigure模組 201
4.2.4 dubbo-spring-boot-actuator模組 204
4.3 Spring Cloud棧 211
4.3.1 為什麼微服務架構需要Spring Cloud 212
4.3.2 Spring Cloud技術棧總覽 214
4.3.3 spring-cloud-scaffold基礎庫集合 215
4.4 基於Maven Archetype的腳手架 239
4.4.1 Maven Archetype 239
4.4.2 腳手架的搭建 240
4.4.3 生成腳手架 247
第5章 微服務穩定性保證的常用手段 250
5.1 微服務的穩定性 250
5.2 高可用 250
5.2.1 限流原理與實現 250
5.2.2 斷路器原理與實現 256
5.2.3 逾時與重試 260
5.3 高並發 262
5.3.1 異步 263
5.3.2 快取 270
5.4 總結 272
第6章 微服務下如何保證事務的一致性 273
6.1 從本地事務到分散式事務的演變 273
6.2 強一致性解決方案 276
6.2.1 二階段提交協定 276
6.2.2 三階段提交協定 278
6.3 最終一致性解決方案 280
6.3.1 TCC模式 280
6.3.2 補償模式 285
6.3.3 可靠事件模式 286
6.4 開源項目的分散式事務實現解讀 288
6.4.1 Apache RocketMQ 288
6.4.2 ServiceComb 289
第7章 百億流量微服務網關的設計與實現 293
7.1 API網關概述 293
7.1.1 分散式服務架構、微服務架構與 API 網關 293
7.1.2 API網關的定義、職能與關注點 296
7.1.3 API網關的分類與技術分析 298
7.2 開源網關的分析與調研 300
7.2.1 常見的開源網關介紹 300
7.2.2 四大開源網關的對比分析 308
7.2.3 開源網關的技術總結 309
7.3 百億流量交易系統API網關設計 310
7.3.1 百億流量交易系統API網關的現狀和面臨問題 310
7.3.2 業務網關的設計與最佳實踐 313
第8章 微服務編排 317
8.1 Netflix Conductor 317
8.2 Netflix Conductor的架構 319
8.3 Conductor的使用案例 320
8.4 Netflix Conductor源碼分析 328
8.4.1 Client層源碼分析 330
8.4.2 Server端源碼分析 337
8.4.3 core端源碼分析 344
第9章 微服務數據抽取與統計 356
9.1 案例小故事 356
9.2 數據倉庫概述 358
9.2.1 什麼是數據倉庫 358
9.2.2 數據倉庫架構 360
9.2.3 數據倉庫建模方法 361
9.2.4 數據抽取、轉換和載入 361
9.2.5 數據統計 362
9.3 數據倉庫工具Hive 362
9.3.1 安裝Hive 364
9.3.2 Hive資料庫 366
9.3.3 Hive表 367
9.4 使用Sqoop抽取數據 369
9.4.1 安裝Sqoop 370
9.4.2 將MySQL表數據導入Hive表 372
9.5 ETL作業調度 375
第10章 微服務雙活體系建設 377
10.1 系統高可用 377
10.2 雙活數據中心 379
10.2.1 單機房部署 379
10.2.2 雙機房部署 380
10.2.3 基於支付場景的雙活體系建設 383
第11章 基於支付場景下的微服務改造與性能最佳化 399
11.1 支付場景的介紹 399
11.2 支付業務建模和服務劃分 400
11.3 支付場景下微服務架構的詳解與分析 402
11.3.1 業務架構分析 402
11.3.2 技術平台詳解 404
11.4 從代碼層面提升微服務架構的性能 407
11.4.1 從代碼和設計的角度看 407
11.4.2 從整體架構的角度看 418
11.5 微服務架構中常見的一些故障分析技巧 421
第12章 遺留系統的微服務架構改造 426
12.1 代碼分層結構的轉變 426
12.2 遺留系統的債券與思考 430
12.3 從單體系統拆分服務的方法論 431
12.4 遺留系統的微服務架構改造 436
12.4.1 從代碼重構開始 436
12.4.2 拆分服務需要面向服務進行架構設計 437
12.4.3 改造是一個漸進的過程 437
12.4.4 單元測試是基石 440
12.4.5 面向失敗的設計 440
12.4.6 前後端分離 441
12.4.7 共享現有資料庫 441
12.4.8 灰度發布的必要性 442
12.4.9 日誌聚合與全鏈路監控 442
第13章 Service Mesh詳解 443
13.1 Service Mesh是什麼 443
13.2 Service Mesh的背景 443
13.3 Service Mesh介紹 444
13.3.1 Service Mesh架構 444
13.3.2 Service Mesh能做什麼 445
13.4 Service Mesh的價值 446
13.5 Service Mesh現狀 447
13.6 Service Mesh存在的問題 448
13.7 Istio詳解 449
13.7.1 Istio架構 449
13.7.2 數據平面 450
13.7.3 控制平面 455
13.7.4 Isito案例 458
13.8 Service Mesh展望 461
第14章 微服務監控實戰 463
14.1 APM原理與套用 464
14.1.1 什麼是APM 464
14.1.2 APM監控點 464
14.1.3 APM深入解析 464
14.2 Prometheus監控系統介紹 492
14.2.1 Prometheus的主要特點 493
14.2.2 Prometheus的架構及組件介紹 493
14.2.3 Prometheus的安裝 494
14.2.4 使用Prometheus對MySQL進行監控 498
14.2.5 Prometheus的告警機制 501
1.2 幾個相關概念 3
1.3 從軟體的生命周期看架構設計 7
1.4 架構的形式與特點 9
1.5 架構的目標與方法 13
1.6 架構的不同風格 18
第2章 微服務領域驅動設計 30
2.1 領域驅動設計 31
2.1.1 領域驅動設計概覽 31
2.1.2 問題域與解決方案域 34
2.1.3 限界上下文 35
2.1.4 上下文映射 40
2.1.5 領域架構 43
2.2 微服務的設計 48
2.2.1 限界上下文的邊界 48
2.2.2 限界上下文即微服務 51
2.2.3 識別限界上下文 53
2.2.4 微服務之間的協作 59
2.3 小結 63
第3章 Apache Dubbo框架的原理與實現 64
3.1 Dubbo框架的選型與使用 64
3.1.1 Dubbo框架的選型 64
3.1.2 Dubbo框架的使用 65
3.2 Dubbo框架的原理分析 70
3.2.1 總體架構分析 70
3.2.2 Dubbo Bean的載入 73
3.2.3 Dubbo Extension機制 77
3.2.4 Dubbo消費端 91
3.2.5 Dubbo服務端 126
3.2.6 Dubbo的通信機制 144
3.3 基於Dubbo的自動化Mock系統 165
3.3.1 Mock模擬系統的產生 166
3.3.2 Dubbo Mock的使用 167
3.3.3 Dubbo Mock的原理解析 168
3.3.4 自動化Mock系統的實現 170
第4章 Spring Boot/Spring Cloud實踐 177
4.1 Spring Boot原理剖析 178
4.1.1 Spring Boot Quick Start 178
4.1.2 Spring Boot之SpringApplication 180
4.1.3 spring-boot-loaded模組分析 186
4.1.4 spring-boot-autoconfigure模組分析 190
4.1.5 Spring Boot Conditional註解分析 195
4.2 Dubbo Spring Boot Starter 198
4.2.1 Dubbo Spring Boot Starter簡介 198
4.2.2 Dubbo Initializr及sample 198
4.2.3 dubbo-spring-boot-autoconfigure模組 201
4.2.4 dubbo-spring-boot-actuator模組 204
4.3 Spring Cloud棧 211
4.3.1 為什麼微服務架構需要Spring Cloud 212
4.3.2 Spring Cloud技術棧總覽 214
4.3.3 spring-cloud-scaffold基礎庫集合 215
4.4 基於Maven Archetype的腳手架 239
4.4.1 Maven Archetype 239
4.4.2 腳手架的搭建 240
4.4.3 生成腳手架 247
第5章 微服務穩定性保證的常用手段 250
5.1 微服務的穩定性 250
5.2 高可用 250
5.2.1 限流原理與實現 250
5.2.2 斷路器原理與實現 256
5.2.3 逾時與重試 260
5.3 高並發 262
5.3.1 異步 263
5.3.2 快取 270
5.4 總結 272
第6章 微服務下如何保證事務的一致性 273
6.1 從本地事務到分散式事務的演變 273
6.2 強一致性解決方案 276
6.2.1 二階段提交協定 276
6.2.2 三階段提交協定 278
6.3 最終一致性解決方案 280
6.3.1 TCC模式 280
6.3.2 補償模式 285
6.3.3 可靠事件模式 286
6.4 開源項目的分散式事務實現解讀 288
6.4.1 Apache RocketMQ 288
6.4.2 ServiceComb 289
第7章 百億流量微服務網關的設計與實現 293
7.1 API網關概述 293
7.1.1 分散式服務架構、微服務架構與 API 網關 293
7.1.2 API網關的定義、職能與關注點 296
7.1.3 API網關的分類與技術分析 298
7.2 開源網關的分析與調研 300
7.2.1 常見的開源網關介紹 300
7.2.2 四大開源網關的對比分析 308
7.2.3 開源網關的技術總結 309
7.3 百億流量交易系統API網關設計 310
7.3.1 百億流量交易系統API網關的現狀和面臨問題 310
7.3.2 業務網關的設計與最佳實踐 313
第8章 微服務編排 317
8.1 Netflix Conductor 317
8.2 Netflix Conductor的架構 319
8.3 Conductor的使用案例 320
8.4 Netflix Conductor源碼分析 328
8.4.1 Client層源碼分析 330
8.4.2 Server端源碼分析 337
8.4.3 core端源碼分析 344
第9章 微服務數據抽取與統計 356
9.1 案例小故事 356
9.2 數據倉庫概述 358
9.2.1 什麼是數據倉庫 358
9.2.2 數據倉庫架構 360
9.2.3 數據倉庫建模方法 361
9.2.4 數據抽取、轉換和載入 361
9.2.5 數據統計 362
9.3 數據倉庫工具Hive 362
9.3.1 安裝Hive 364
9.3.2 Hive資料庫 366
9.3.3 Hive表 367
9.4 使用Sqoop抽取數據 369
9.4.1 安裝Sqoop 370
9.4.2 將MySQL表數據導入Hive表 372
9.5 ETL作業調度 375
第10章 微服務雙活體系建設 377
10.1 系統高可用 377
10.2 雙活數據中心 379
10.2.1 單機房部署 379
10.2.2 雙機房部署 380
10.2.3 基於支付場景的雙活體系建設 383
第11章 基於支付場景下的微服務改造與性能最佳化 399
11.1 支付場景的介紹 399
11.2 支付業務建模和服務劃分 400
11.3 支付場景下微服務架構的詳解與分析 402
11.3.1 業務架構分析 402
11.3.2 技術平台詳解 404
11.4 從代碼層面提升微服務架構的性能 407
11.4.1 從代碼和設計的角度看 407
11.4.2 從整體架構的角度看 418
11.5 微服務架構中常見的一些故障分析技巧 421
第12章 遺留系統的微服務架構改造 426
12.1 代碼分層結構的轉變 426
12.2 遺留系統的債券與思考 430
12.3 從單體系統拆分服務的方法論 431
12.4 遺留系統的微服務架構改造 436
12.4.1 從代碼重構開始 436
12.4.2 拆分服務需要面向服務進行架構設計 437
12.4.3 改造是一個漸進的過程 437
12.4.4 單元測試是基石 440
12.4.5 面向失敗的設計 440
12.4.6 前後端分離 441
12.4.7 共享現有資料庫 441
12.4.8 灰度發布的必要性 442
12.4.9 日誌聚合與全鏈路監控 442
第13章 Service Mesh詳解 443
13.1 Service Mesh是什麼 443
13.2 Service Mesh的背景 443
13.3 Service Mesh介紹 444
13.3.1 Service Mesh架構 444
13.3.2 Service Mesh能做什麼 445
13.4 Service Mesh的價值 446
13.5 Service Mesh現狀 447
13.6 Service Mesh存在的問題 448
13.7 Istio詳解 449
13.7.1 Istio架構 449
13.7.2 數據平面 450
13.7.3 控制平面 455
13.7.4 Isito案例 458
13.8 Service Mesh展望 461
第14章 微服務監控實戰 463
14.1 APM原理與套用 464
14.1.1 什麼是APM 464
14.1.2 APM監控點 464
14.1.3 APM深入解析 464
14.2 Prometheus監控系統介紹 492
14.2.1 Prometheus的主要特點 493
14.2.2 Prometheus的架構及組件介紹 493
14.2.3 Prometheus的安裝 494
14.2.4 使用Prometheus對MySQL進行監控 498
14.2.5 Prometheus的告警機制 501