本書首先從單體架構(gòu)應(yīng)用講起,繼而引出分布式系統(tǒng)框架,然后介紹分布式系統(tǒng)的設(shè)計原則,以及分布式系統(tǒng)服務(wù)調(diào)用與數(shù)據(jù)訪問方法,接著介紹基于分布式系統(tǒng)的多業(yè)務(wù)場景下分布式事務(wù)和分布式鎖的使用,以及如何利用消息中間件對業(yè)務(wù)進(jìn)行解耦,并介紹分布式系統(tǒng)的服務(wù)治理、日志收集和系統(tǒng)監(jiān)控等內(nèi)容,最后介紹當(dāng)下流行的云平臺部署的相關(guān)知識,包括Docker容器、Kubernetes編排,以及持續(xù)集成與部署等。
第1篇 分布式系統(tǒng)基礎(chǔ)知識
第1章 分布式系統(tǒng)理論基礎(chǔ)2
1.1 企業(yè)級系統(tǒng)架構(gòu)的演進(jìn)2
1.1.1 單體架構(gòu)3
1.1.2 集群架構(gòu)4
1.1.3 分布式架構(gòu)5
1.1.4 無服務(wù)架構(gòu)7
1.2 分布式系統(tǒng)概述8
1.2.1 分布式系統(tǒng)的相關(guān)術(shù)語8
1.2.2 分布式中間件簡介9
1.2.3 分布式系統(tǒng)服務(wù)治理簡介17
1.3 分布式系統(tǒng)的設(shè)計原則21
1.3.1 CAP定理22
1.3.2 BASE理論25
1.3.3 分布式一致性協(xié)議26
1.4 總結(jié)40
第2章 分布式系統(tǒng)服務(wù)調(diào)用41
2.1 RPC服務(wù)調(diào)用41
2.1.1 RPC原理簡介41
2.1.2 RPC序列化協(xié)議42
2.1.3 RPC框架44
2.2 用HTTP方式訪問服務(wù)48
2.2.1 RESTful架構(gòu)48
2.2.2 OpenFeign訪問48
2.2.3 RestTemplate訪問51
2.3 總結(jié)53
第3章 分布式系統(tǒng)數(shù)據(jù)訪問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事務(wù)控制63
3.2 分布式緩存65
3.2.1 分布式緩存之Redis66
3.2.2 分布式緩存 新策略68
3.2.3 分布式緩存失效問題70
3.3 總結(jié)71
第2篇 分布式系統(tǒng)中間件實(shí)戰(zhàn)
第4章 分布式事務(wù)與分布式鎖74
4.1 分布式事務(wù)74
4.1.1 分布式事務(wù)簡介74
4.1.2 分布式事務(wù)框架——Seata77
4.2 分布式鎖79
4.2.1 分布式鎖簡介79
4.2.2 用Redisson組件實(shí)現(xiàn)分布式鎖80
4.3 總結(jié)82
第5章 分布式消息中間件83
5.1 分布式消息中間件概述83
5.1.1 分布式消息中間件的設(shè)計原理83
5.1.2 分布式消息中間件的應(yīng)用場景85
5.1.3 引入分布式消息中間件帶來的問題86
5.2 分布式消息中間件之RocketMQ87
5.2.1 RocketMQ的基本概念87
5.2.2 RocketMQ的特性90
5.2.3 RocketMQ實(shí)戰(zhàn)案例91
5.3 分布式消息中間件之Kafka95
5.3.1 Kafka的基本概念95
5.3.2 Kafka實(shí)戰(zhàn)案例97
5.4 總結(jié)99
第6章 分布式系統(tǒng)服務(wù)治理100
6.1 服務(wù)限流與降級100
6.1.1 限流算法100
6.1.2 分布式限流組件103
6.2 配置中心107
6.2.1 配置中心之Apollo107
6.2.2 配置中心之Nacos110
6.3 服務(wù)注冊與發(fā)現(xiàn)112
6.4 服務(wù)鏈路追蹤113
6.5 服務(wù)網(wǎng)關(guān)115
6.6 總結(jié)116
第7章 分布式系統(tǒng)監(jiān)控117
7.1 監(jiān)控端點(diǎ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 總結(jié)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 服務(wù)端日志收集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 總結(jié)150
第3篇 分布式系 排與部署
第9章 容器化技術(shù)之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架構(gòu)155
9.2.3 Docker安裝157
9.2.4 Docker應(yīng)用示例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鏡像構(gòu)建170
9.4.2 Dockerfile指令171
9.5 總結(jié)174
0章 容器編排引擎Kubernetes175
10.1 Kubernetes概述175
10.1.1 Kubernetes的發(fā)展歷史175
10.1.2 Kubernetes架構(gòu)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 總結(jié)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應(yīng)用部署220
11.4 總結(jié)222