本书首先从单体架构应用讲起,继而引出分布式系统框架,然后介绍分布式系统的设计原则,以及分布式系统服务调用与数据访问方法,接着介绍基于分布式系统的多业务场景下分布式事务和分布式锁的使用,以及如何利用消息中间件对业务进行解耦,并介绍分布式系统的服务治理、日志收集和系统监控等内容,最后介绍当下流行的云平台部署的相关知识,包括Docker容器、Kubernetes编排,以及持续集成与部署等。
1. 结合真实的业务场景,详解分布式中间件的基本原理与典型应用 2. 通过一步一步地搭建分布式系统中间件,解密微服务治理框架的原理 3. 图文并茂,通过150多幅图、20多个示例、80多个命令,提高实战水平 4. 内容丰富:详解分布式中间件开发,以及服务治理、监控和部署技术。 5. 由浅入深:从基本概念与理论讲起,逐步深入各种中间件的核心实现原理。 6. 实用性强:从实际的业务场景出发,结合实用案例与核心项目代码进行实战演练。 7. 技术前瞻:引入分布式系统中间件进行微服务治理,展现全流程开发模式。
解承凯 资深Java开发工程师。曾任职于爱奇艺等互联网公司,现任职于北京某科技公司基础技术平台组,负责公司大数据服务平台的开发。主要从事Web端与移动端Java开发的相关工作,专注于分布式系统后端服务开发。有近10年的互联网开发经验和微服务编程与架构经验,熟悉微服务治理的相关技术,对分布式中间件的开发和使用有丰富的经验。著有《Spring Boot从入门到实践》一书。
第1篇 分布式系统基础知识
第1章 分布式系统理论基础2
1.1 企业级系统架构的演进2
1.1.1 单体架构3
1.1.2 集群架构4
1.1.3 分布式架构5
1.1.4 无服务架构7
1.2 分布式系统概述8
1.2.1 分布式系统的相关术语8
1.2.2 分布式中间件简介9
1.2.3 分布式系统服务治理简介17
1.3 分布式系统的设计原则21
1.3.1 CAP定理22
1.3.2 BASE理论25
1.3.3 分布式一致性协议26
1.4 总结40
第2章 分布式系统服务调用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章 分布式系统数据访问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篇 分布式系统中间件实战
第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实战案例91
5.3 分布式消息中间件之Kafka95
5.3.1 Kafka的基本概念95
5.3.2 Kafka实战案例97
5.4 总结99
第6章 分布式系统服务治理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 服务注册与发现112
6.4 服务链路追踪113
6.5 服务网关115
6.6 总结116
第7章 分布式系统监控117
7.1 监控端点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章 分布式系统日志收集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的发展历史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章 分布式系统持续集成与交付204
11.1 Git代码管理工具204
11.1.1 Git工具简介204
11.1.2 Git安装示例207
11.1.3 Git的核心命令208
11.2 GitLab持续集成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