图书目录

目录

第1章微服务架构与Spring Cloud Alibaba1

1.1微服务架构1

1.1.1单体架构与微服务架构1

1.1.2微服务架构图2

1.1.3Spring Cloud Alibaba微服务解决方案3

1.2搭建开发环境4

1.2.1安装JDK4

1.2.2安装Maven5

1.3微服务初步实践6

1.3.1微服务拆分原则与角色划分6

1.3.2创建客户信息微服务6

1.3.3创建订单信息微服务11

1.3.4远程调用微服务13

第2章Nacos注册中心与配置管理16

2.1Nacos简介16

2.2Nacos服务注册与发现16

2.2.1安装与启动Nacos组件17

2.2.2服务提供者项目18

2.2.3服务消费者项目19

2.3用Nacos配置管理21

2.3.1基本配置21

2.3.2微服务拉取配置22

2.3.3配置信息热更新26

2.3.4多环境共享配置27

2.3.5多个微服务共享配置28

2.4搭建高可用的Nacos集群30

2.4.1搭建Nacos集群30

2.4.2使用Nginx对集群进行负载均衡32

2.4.3以集群的方式管理微服务34

2.4.4以集群的方式管理配置34

第3章负载均衡组件LoadBalancer37

3.1LoadBalancer负载均衡策略37

3.2默认负载均衡策略37

3.2.1创建服务提供者项目37

3.2.2创建服务消费者项目38

3.2.3测试负载均衡40

3.3切换负载均衡策略41

3.3.1使用随机负载均衡策略41

3.3.2切换使用RoundRobinLoadBalancer轮询负载均衡策略42

3.3.3使用NacosLoadBalancer负载均衡策略43

3.3.4启动类中负载均衡注解的多种用法44

第4章服务调用框架OpenFeign45

4.1OpenFeign框架简介45

4.1.1OpenFeign基础知识45

4.1.2OpenFeign的动态代理45

4.2使用OpenFeign框架调用微服务46

4.2.1服务提供者与调用者项目46

4.2.2负载均衡48

4.2.3设置日志级别49

4.2.4设置服务超时时间50

第5章网关组件53

5.1网关组件概述53

5.2网关组件快速入门54

5.2.1准备微服务项目54

5.2.2创建网关项目实现简单路由功能54

5.3实现路由转发中的负载均衡56

5.4过滤器57

5.4.1路由断言57

5.4.2路由过滤器58

5.4.3路由过滤器工厂59

5.4.4默认过滤器61

5.4.5全局过滤器61

5.5网关的Cors跨域配置63

5.6灰度发布65

5.6.1灰度发布的思路66

5.6.2通过Gateway实现灰度发布66

第6章Sentinel流量控制和熔断降级68

6.1雪崩问题68

6.2Sentinel简介69

6.2.1Sentinel 基本概念69

6.2.2Sentinel安装与启动69

6.2.3依赖和配置70

6.3流量控制71

6.3.1基本案例71

6.3.2流控模式73

6.3.3流控模式之关联73

6.3.4流控模式之链路75

6.3.5流控效果80

6.3.6流控效果之Warm Up80

6.3.7流控效果之排队等待82

6.3.8热点参数限流84

6.4服务降级87

6.5线程隔离87

6.5.1线程隔离基础准备88

6.5.2线程隔离实践89

6.6熔断91

6.7授权规则95

6.8Sentinel异常处理97

第7章远端调用组件Dubbo100

7.1Dubbo组件简介100

7.1.1使用Dubbo进行远端调用的流程100

7.1.2Dubbo和REST调用方式的差别100

7.1.3ZooKeeper的下载安装与启动101

7.2Dubbo远端调用实践101

7.2.1创建服务提供者101

7.2.2创建服务调用者103

7.2.3Dubbo中的负载均衡104

7.2.4Dubbo负载均衡策略104

7.3Sentinel 对 Dubbo 服务的限流与熔断降级105

7.3.1在服务提供者端实现限流105

7.3.2在服务提供者端实现熔断107

7.3.3在服务提供者端实现服务降级逻辑108

7.3.4在服务调用者端实现降级逻辑109

第8章RocketMQ消息中间件111

8.1RocketMQ简介111

8.2RocketMQ安装与启动113

8.3普通消息发送115

8.3.1发送同步消息115

8.3.2发送异步消息116

8.3.3发送单向消息117

8.4消费消息118

8.4.1Push消费118

8.4.2Pull消费120

8.5顺序消息121

8.5.1全局有序121

8.5.2局部有序124

8.6延迟消息126

8.7批量消息127

8.7.1批量发送消息127

8.7.2分批批量发送消息128

8.8过滤消息129

8.8.1Tag过滤129

8.8.2SQL方式过滤130

8.9事务消息132

第9章Spring Cloud Stream整合消息中间件136

9.1Spring Cloud Stream基础136

9.2Spring Cloud Stream整合RocketMQ137

9.2.1消息发送137

9.2.2消息消费138

9.3Spring Cloud Stream整合RabbitMQ139

9.3.1RabbitMQ安装与启动139

9.3.2消息发送140

9.3.3消息消费141

第10章Seata分布式事务144

10.1Seata 的工作原理144

10.1.1Seata的3个角色144

10.1.2工作流程145

10.2Seata的安装与启动145

10.2.1Seata下载与修改配置145

10.2.2Nacos共享配置146

10.2.3创建全局事务表与分支事务表148

10.2.4启动Seata服务149

10.3无分布式事务的微服务150

10.3.1创建订单项目150

10.3.2扣减账户项目154

10.3.3扣减库存项目156

10.3.4测试无分布式事务的情况157

10.4XA模式158

10.4.1两阶段提交158

10.4.2XA模式架构159

10.4.3实现XA模式160

10.5AT模式162

10.5.1AT模式执行流程162

10.5.2AT模式的实现162

10.6TCC模式164

10.6.1TCC模式介绍164

10.6.2TCC模式的实现之修改数据库165

10.6.3TCC模式的实现之修改orderservice项目165

10.6.4TCC模式的实现之修改accountservice项目167

10.6.5TCC模式的实现之修改storageservice项目 169

10.6.6测试TCC模式172

10.7Saga模式172

10.7.1概述172

10.7.2Saga的实现173

第11章微服务监控组件Skywalking174

11.1Skywalking基础知识174

11.2Skywalking服务器端的下载、安装与启动176

11.2.1下载 Skywalking176

11.2.2配置 Skywalking176

11.2.3启动Skywalking178

11.3微服务项目整合Skywalking179

11.3.1下载Java Agent179

11.3.2配置微服务179

11.4服务监控与链路追踪182

11.4.1服务监控182

11.4.2拓扑结构图183

11.4.3链路跟踪184

11.5整合logback监控链路184

11.5.1修改微服务commonservice184

11.5.2修改微服务orderservice185

11.5.3修改微服务userservice和userservice2185

11.5.4链路监控情况测试186

第12章Docker部署Spring Boot项目和微服务组件188

12.1Docker与Spring Cloud微服务188

12.1.1Docker镜像、容器和虚拟化管理引擎188

12.1.2搭建Docker环境189

12.1.3用Docker管理微服务的方式189

12.2容器化管理Spring Boot项目190

12.2.1准备Spring Boot项目190

12.2.2打包成JAR包191

12.2.3制作JDK 17基础镜像191

12.2.4用JAR包制作镜像193

12.3容器化管理组件194

12.3.1容器化管理Nacos组件195

12.3.2容器化管理Sentinel196

12.3.3通过Docker容器部署Redis197

第13章使用Docker部署微服务项目实践199

13.1商品管理微服务系统架构分析199

13.1.1微服务项目的表现形式与优势199

13.1.2基于Docker容器的微服务架构200

13.1.3业务功能点和数据表结构200

13.2开发商品管理微服务项目201

13.2.1开发商品管理模块201

13.2.2开发网关模块206

13.3容器化部署商品管理微服务208

13.3.1打包商品管理和网关模块208

13.3.2容器化部署并运行MySQL和Redis208

13.3.3容器化部署并运行Nacos和Sentinel209

13.3.4容器化部署商品管理模块209

13.3.5容器化部署网关模块210

13.3.6观察微服务容器化效果210

13.3.7引入限流和熔断措施211

13.4扩容与灰度发布212

13.4.1演示扩容效果212

13.4.2演示灰度发布流程214

第14章使用Kubernetes整合Spring Boot项目216

14.1Kubernetes概述216

14.1.1Kubernetes的作用216

14.1.2搭建Kubernetes环境217

14.1.3Kubernetes与Docker容器的关系219

14.1.4Kubernetes的Service220

14.1.5Kubernetes的Labels220

14.1.6Deployment的概念220

14.1.7用Kubernetes编排Spring Boot容器221

14.1.8基于Spring Boot的Docker容器223

14.1.9编写Service和Deployment配置文件224

14.1.10使用命令编排Spring Boot容器225

14.1.11测试Pod、Service和Deployment225

14.1.12查看Pod运行日志225

14.2Kubernetes常用技术227

14.2.1删除Pod、Service和Deployment227

14.2.2伸缩节点228

14.2.3自动伸缩节点228

14.2.4创建Deployment并开放端口229

14.2.5进入Pod执行命令230

14.2.6用Ingress暴露服务231

14.2.7Ingress简介231

14.2.8Ingress整合Service的做法231

第15章使用Kubernetes编排微服务233

15.1使用Kubernetes编排组件233

15.2编排MySQL233

15.2.1编排Redis235

15.2.2StatefulSet和Deployment的差别237

15.2.3使用StatefulSet编排Nacos238

15.2.4使用StatefulSet编排Sentinel240

15.3使用Kubernetes编排图书管理模块242

15.3.1微服务框架说明243

15.3.2图书管理微服务模块243

15.3.3编排图书管理微服务模块247

15.3.4测试Kubernetes编排微服务项目的效果248

15.3.5引入限流和熔断250

第16章基于Jenkins的微服务CI/CD实战252

16.1CI/CD简介252

16.2Jenkins安装253

16.3Jenkins基本配置256

16.4自动构建项目258

16.4.1创建任务258

16.4.2设置源码管理259

16.4.3构建步骤260

16.5测试步骤263

参考文献265