本書(shū)首先從單體架構(gòu)應(yīng)用講起,繼而引出分布式系統(tǒng)框架,然后介紹分布式系統(tǒng)的設(shè)計(jì)原則,以及分布式系統(tǒng)服務(wù)調(diào)用與數(shù)據(jù)訪(fǎng)問(wèn)方法,接著介紹基于分布式系統(tǒng)的多業(yè)務(wù)場(chǎng)景下分布式事務(wù)和分布式鎖的使用,以及如何利用消息中間件對(duì)業(yè)務(wù)進(jìn)行解耦,并介紹分布式系統(tǒng)的服務(wù)治理、日志收集和系統(tǒng)監(jiān)控等內(nèi)容,最后介紹當(dāng)下流行的云平臺(tái)部署的相關(guān)知識(shí),包括Docker容器、Kubernetes編排,以及持續(xù)集成與部署等。
第1篇 分布式系統(tǒng)基礎(chǔ)知識(shí)
第1章 分布式系統(tǒng)理論基礎(chǔ)2
1.1 企業(yè)級(jí)系統(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ú)服務(wù)架構(gòu)7
1.2 分布式系統(tǒng)概述8
1.2.1 分布式系統(tǒng)的相關(guān)術(shù)語(yǔ)8
1.2.2 分布式中間件簡(jiǎn)介9
1.2.3 分布式系統(tǒng)服務(wù)治理簡(jiǎn)介17
1.3 分布式系統(tǒng)的設(shè)計(jì)原則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原理簡(jiǎn)介41
2.1.2 RPC序列化協(xié)議42
2.1.3 RPC框架44
2.2 用HTTP方式訪(fǎng)問(wèn)服務(wù)48
2.2.1 RESTful架構(gòu)48
2.2.2 OpenFeign訪(fǎng)問(wèn)48
2.2.3 RestTemplate訪(fǎng)問(wèn)51
2.3 總結(jié)53
第3章 分布式系統(tǒng)數(shù)據(jù)訪(fǎng)問(wèn)54
3.1 集成MyBatis-Plus54
3.1.1 MyBatis-Plus簡(jiǎn)介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 分布式緩存失效問(wèn)題70
3.3 總結(jié)71
第2篇 分布式系統(tǒng)中間件實(shí)戰(zhàn)
第4章 分布式事務(wù)與分布式鎖74
4.1 分布式事務(wù)74
4.1.1 分布式事務(wù)簡(jiǎn)介74
4.1.2 分布式事務(wù)框架——Seata77
4.2 分布式鎖79
4.2.1 分布式鎖簡(jiǎn)介79
4.2.2 用Redisson組件實(shí)現(xiàn)分布式鎖80
4.3 總結(jié)82
第5章 分布式消息中間件83
5.1 分布式消息中間件概述83
5.1.1 分布式消息中間件的設(shè)計(jì)原理83
5.1.2 分布式消息中間件的應(yīng)用場(chǎng)景85
5.1.3 引入分布式消息中間件帶來(lái)的問(wèn)題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ù)限流與降級(jí)100
6.1.1 限流算法100
6.1.2 分布式限流組件103
6.2 配置中心107
6.2.1 配置中心之Apollo107
6.2.2 配置中心之Nacos110
6.3 服務(wù)注冊(cè)與發(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簡(jiǎn)介117
7.1.2 Spring Boot Actuator集成118
7.2 Prometheus組件120
7.2.1 Prometheus簡(jiǎn)介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簡(jiǎn)介126
8.1.2 Log4j替代者之Logback129
8.1.3 Log4j升級(jí)版之Log4j2130
8.2 服務(wù)端日志收集131
8.2.1 Elastic之Filebeat131
8.2.2 Elastic之Logstash133
8.3 日志存儲(chǔ)134
8.3.1 Elasticsearch簡(jiǎn)介135
8.3.2 Elasticsearch框架的原理137
8.3.3 Elasticsearch命令138
8.4 日志可視化144
8.4.1 Kibana組件簡(jiǎn)介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簡(jiǎn)介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 容器倉(cāng)庫(kù)管理命令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工具簡(jiǎn)介204
11.1.2 Git安裝示例207
11.1.3 Git的核心命令208
11.2 GitLab持續(xù)集成213
11.2.1 GitLab簡(jiǎn)介214
11.2.2 GitLab搭建214
11.2.3 GitLab Runner搭建216
11.3 Jenkins交付218
11.3.1 Jenkins簡(jiǎn)介218
11.3.2 Jenkins搭建219
11.3.3 Jenkins應(yīng)用部署220
11.4 總結(jié)222