本書首先從單體架構應用講起,繼而引出分布式系統(tǒng)框架,然后介紹分布式系統(tǒng)的設計原則,以及分布式系統(tǒng)服務調用與數據訪問方法,接著介紹基于分布式系統(tǒng)的多業(yè)務場景下分布式事務和分布式鎖的使用,以及如何利用消息中間件對業(yè)務進行解耦,并介紹分布式系統(tǒng)的服務治理、日志收集和系統(tǒng)監(jiān)控等內容,最后介紹當下流行的云平臺部署的相關知識,包括Docker容器、Kubernetes編排,以及持續(xù)集成與部署等。
1. 結合真實的業(yè)務場景,詳解分布式中間件的基本原理與典型應用 2. 通過一步一步地搭建分布式系統(tǒng)中間件,解密微服務治理框架的原理 3. 圖文并茂,通過150多幅圖、20多個示例、80多個命令,提高實戰(zhàn)水平 4. 內容豐富:詳解分布式中間件開發(fā),以及服務治理、監(jiān)控和部署技術。 5. 由淺入深:從基本概念與理論講起,逐步深入各種中間件的核心實現原理。 6. 實用性強:從實際的業(yè)務場景出發(fā),結合實用案例與核心項目代碼進行實戰(zhàn)演練。 7. 技術前瞻:引入分布式系統(tǒng)中間件進行微服務治理,展現全流程開發(fā)模式。
第1篇 分布式系統(tǒng)基礎知識
第1章 分布式系統(tǒng)理論基礎2
1.1 企業(yè)級系統(tǒng)架構的演進2
1.1.1 單體架構3
1.1.2 集群架構4
1.1.3 分布式架構5
1.1.4 無服務架構7
1.2 分布式系統(tǒng)概述8
1.2.1 分布式系統(tǒng)的相關術語8
1.2.2 分布式中間件簡介9
1.2.3 分布式系統(tǒng)服務治理簡介17
1.3 分布式系統(tǒng)的設計原則21
1.3.1 CAP定理22
1.3.2 BASE理論25
1.3.3 分布式一致性協議26
1.4 總結40
第2章 分布式系統(tǒng)服務調用41
2.1 RPC服務調用41
2.1.1 RPC原理簡介41
2.1.2 RPC序列化協議42
2.1.3 RPC框架44
2.2 用HTTP方式訪問服務48
2.2.1 RESTful架構48
2.2.2 OpenFeign訪問48
2.2.3 RestTemplate訪問51
2.3 總結53
第3章 分布式系統(tǒng)數據訪問54
3.1 集成MyBatis-Plus54
3.1.1 MyBatis-Plus簡介54
3.1.2 MyBatis-Plus集成55
3.1.3 Druid連接池61
3.1.4 Spring Boot事務控制63
3.2 分布式緩存65
3.2.1 分布式緩存之Redis66
3.2.2 分布式緩存 新策略68
3.2.3 分布式緩存失效問題70
3.3 總結71
第2篇 分布式系統(tǒng)中間件實戰(zhàn)
第4章 分布式事務與分布式鎖74
4.1 分布式事務74
4.1.1 分布式事務簡介74
4.1.2 分布式事務框架——Seata77
4.2 分布式鎖79
4.2.1 分布式鎖簡介79
4.2.2 用Redisson組件實現分布式鎖80
4.3 總結82
第5章 分布式消息中間件83
5.1 分布式消息中間件概述83
5.1.1 分布式消息中間件的設計原理83
5.1.2 分布式消息中間件的應用場景85
5.1.3 引入分布式消息中間件帶來的問題86
5.2 分布式消息中間件之RocketMQ87
5.2.1 RocketMQ的基本概念87
5.2.2 RocketMQ的特性90
5.2.3 RocketMQ實戰(zhàn)案例91
5.3 分布式消息中間件之Kafka95
5.3.1 Kafka的基本概念95
5.3.2 Kafka實戰(zhàn)案例97
5.4 總結99
第6章 分布式系統(tǒng)服務治理100
6.1 服務限流與降級100
6.1.1 限流算法100
6.1.2 分布式限流組件103
6.2 配置中心107
6.2.1 配置中心之Apollo107
6.2.2 配置中心之Nacos110
6.3 服務注冊與發(fā)現112
6.4 服務鏈路追蹤113
6.5 服務網關115
6.6 總結116
第7章 分布式系統(tǒng)監(jiān)控117
7.1 監(jiān)控端點117
7.1.1 Micrometer簡介117
7.1.2 Spring Boot Actuator集成118
7.2 Prometheus組件120
7.2.1 Prometheus簡介120
7.2.2 Prometheus搭建121
7.3 Grafana組件123
7.4 總結125
第8章 分布式系統(tǒng)日志收集126
8.1 日志框架126
8.1.1 Log4j簡介126
8.1.2 Log4j替代者之Logback129
8.1.3 Log4j升級版之Log4j2130
8.2 服務端日志收集131
8.2.1 Elastic之Filebeat131
8.2.2 Elastic之Logstash133
8.3 日志存儲134
8.3.1 Elasticsearch簡介135
8.3.2 Elasticsearch框架的原理137
8.3.3 Elasticsearch命令138
8.4 日志可視化144
8.4.1 Kibana組件簡介144
8.4.2 Kibana的安裝145
8.4.3 Kibana日志可視化147
8.5 總結150
第3篇 分布式系 排與部署
第9章 容器化技術之Docker152
9.1 容器化概述152
9.1.1 從虛擬化到容器化152
9.1.2 容器化與Docker154
9.2 Docker概述155
9.2.1 Docker簡介155
9.2.2 Docker架構155
9.2.3 Docker安裝157
9.2.4 Docker應用示例159
9.3 Docker命令160
9.3.1 容器生命周期管理命令160
9.3.2 容器操作命令165
9.3.3 容器鏡像管理命令168
9.3.4 容器倉庫管理命令169
9.4 Dockerfile概述170
9.4.1 Docker鏡像構建170
9.4.2 Dockerfile指令171
9.5 總結174
0章 容器編排引擎Kubernetes175
10.1 Kubernetes概述175
10.1.1 Kubernetes的發(fā)展歷史175
10.1.2 Kubernetes架構176
10.1.3 Kubernetes的重要概念179
10.2 Kubernetes編排195
10.2.1 Pod編排195
10.2.2 Service編排196
10.2.3 Ingress編排197
10.2.4 ConfigMap配置文件197
10.3 Kubernetes部署工具197
10.3.1 Kubectl工具197
10.3.2 Helm工具200
10.3.3 Helm配置文件201
10.4 總結203
1章 分布式系統(tǒng)持續(xù)集成與交付204
11.1 Git代碼管理工具204
11.1.1 Git工具簡介204
11.1.2 Git安裝示例207
11.1.3 Git的核心命令208
11.2 GitLab持續(xù)集成213
11.2.1 GitLab簡介214
11.2.2 GitLab搭建214
11.2.3 GitLab Runner搭建216
11.3 Jenkins交付218
11.3.1 Jenkins簡介218
11.3.2 Jenkins搭建219
11.3.3 Jenkins應用部署220
11.4 總結222