《高可用可伸縮微服務架構:基於Dubbo,Spring Cloud和Service Mesh》,電子工業出版社2019年5月出版,講解如何通過Dubbo、Spring Cloud、Service Mesh等技術來構建微服務體系,並深入淺出地介紹了微服務架構發展歷程、領域驅動設計、穩定性保證的常用手段、分散式事務的一致性方案。
基本介紹
- 書名:高可用可伸縮微服務架構
- 作者:程超 等
- ISBN:978-7-121-36213-2
- 頁數:528
- 定價:108
- 出版社:電子工業出版社
- 出版時間:2019-05
- 裝幀:平裝
- 開本:16
內容提要,目錄,作者簡介,
內容提要
近年來微服務架構已經成為大規模分散式架構的主流技術,越來越多的公司已經或開始轉型為微服務架構。《高可用可伸縮微服務架構:基於Dubbo、Spring Cloud和Service Mesh》不以某一種微服務框架的使用為主題,而是對整個微服務生態進行系統性的講解,並結合工作中的大量實戰案例為讀者呈現一本讀完即可實際上手套用的工具書。
《高可用可伸縮微服務架構:基於Dubbo、Spring Cloud和Service Mesh》中的理論部分介紹了微服務架構的發展歷程,通俗地講解了領域驅動設計,幫助讀者更好地利用DDD來建模和劃分服務;微服務穩定性保證的常用手段和微服務下如何保證事務的一致性這兩章凝聚了作者多年的積累和思考,相信讀者看完後會有不一樣的感觸和收穫;書中實戰部分的內容非常豐富,以項目為基礎,逐層介紹常見的Dubbo、Spring Cloud和Service Mesh框架的具體使用方法,並對實現原理進行剖析;書中還以具體案例全面介紹了微服務雙活體系建設、微服務監控與告警、微服務編排、百億流量微服務網關的設計與實現,以及基於支付場景下的微服務改造等,並讓讀者了解如何藉助微服務來增強和重構現有的遺留系統。
不管是剛接觸微服務的新手,還是正在嘗試藉助微服務解放生產力的開發人員或運維人員,甚至是立志於構建高可用可伸縮的微服務體系的技術Leader和架構師,閱讀本書,對讀者必有裨益。
目錄
第1章 微服務架構概述 1
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
作者簡介
程超,網名小程故事多,現任某公司高級架構師,超過12年的Java研發經驗,8年技術管理和架構經驗,熟悉支付和電商領域,擅長微服務生態建設和運維監控,對Dubbo、Spring Cloud和gRPC等微服務框架有深入研究,幫助多家公司進行過微服務建設和改造。合著作品《深入分散式快取》,阿里雲MVP、雲棲社區外部專家、Codingfly社區特聘技術專家、CSDN博主專家。
梁桂釗,現任某網際網路公司高級開發工程師,參與過內容分發、K12 教育、淘系電商等項目。目前,專注於新零售電商服務的業務摸索和電商服務創新實踐。具有Java核心技術、微服務、分散式、高並發等領域一線實戰經驗,並對新興技術方向和各種開源框架有濃厚興趣。
秦金衛(KimmKing),現任某公司高級技術總監/Apache Dubbo PPMC,阿里前架構師/某商業銀行北京研發中心負責人。關注網際網路、電商、金融、支付、區塊鏈等領域,10多年研發管理和架構經驗,對於中間件、SOA、微服務,以及各種開源技術非常熱衷,活躍於Dubbo、Fastjson、Mule、ActiveMQ等多個開源社區。
方誌斌,現任某物聯網公司高級研發工程師。目前專注於大型物聯網平台架構的設計與開發工作。對於微服務、分散式、集群有一定的研究和實戰經驗。對Java領域的開源框架有濃厚的興趣,喜歡深入分析、總結框架源碼。SpringForAll社區核心成員,組織多次社區技術專題、問答等活動。
張逸,架構編碼實踐者,微服務架構設計者,領域驅動設計布道師,大數據平台架構師。著譯作包括《軟體設計精要與模式》《恰如其分的軟體架構》《人件》等。
杜琪,網名阿杜,現任螞蟻金服高級研發工程師,2015年6月畢業於南開大學,計算機系統結構碩士。畢業後開始接觸分散式業務系統開發,曾在有贊負責用戶中心基礎服務,對分散式業務系統的穩定性、可靠性有豐富的經驗。喜歡研究底層技術,喜歡研究疑難技術問題,例如JVM記憶體問題排查、GC調優,等等。
殷琦,網名滌生,現任“美團點評”技術專家,2015年3月畢業於東華大學,軟體工程碩士。2015年3月加入“美團點評”基礎架構部,開始接觸微服務架構,之後一直從事服務框架的研發工作,對微服務架構發展與演進有非常深刻的認識。個人比較喜歡研究並分享新技術,時刻關注並實踐微服務架構最前沿的技術,如Service Mesh、Serverless 等。
肖冠宇,曾就職於小米、人民網等網際網路公司,具有豐富的大數據一線實戰經驗,專注大數據處理技術及機器學習算法研究。著有《企業大數據處理:Spark、Druid、Flume與Kafka套用實踐》《Python3快速入門與實戰》等書籍。