《Spring Cloud Alibaba微服务原理与实战》针对Spring Cloud Alibaba生态下的技术组件从应用到原理进行全面的分析,涉及的技术组件包括分布式服务治理Dubbo、服务配置和服务注册中心Nacos、分布式限流与熔断Sentinel、分布式消息通信RocketMQ、分布式事务Seata及微服务网关Spring Cloud Gateway。由于Spring Cloud中所有的技术组件都是基于Spring Boot微服务框架来集成的,所以对于Spring Boot的核心原理也做了比较详细的分析。
本书中涉及的所有技术组件,笔者都采用“场景→需求→解决方案→应用→原理”高效技术学习模型进行设计,以便让读者知其然且知其所以然。在“原理”部分,笔者采用大量的源码及图形的方式来进行分析,帮助读者达到对技术组件深度学习和理解的目标。
......(更多)
谭锋(Mic)
咕泡学院联合创始人,拥有12年Java开发及架构经验,主要关注微服务、高并发及容器化等技术领域,纯粹的技术爱好者。
曾就职于平安支付、挖财,担任业务架构师。2013年参与并主导Dubbo服务化落地项目。2015年负责公司内部Spring Boot集成Dubbo实现微服务化落地。2017年成立咕泡学院,目前主要负责咕泡学院Java架构进阶课程的研发和设计。
......(更多)
第1章 微服务的发展史 1
1.1 从单体架构到分布式架构的演进 2
1.1.1 单体架构 2
1.1.2 集群及垂直化 3
1.1.3 SOA 4
1.1.4 微服务架构 5
1.2 微服务架构带来的挑战 7
1.2.1 微服务架构的优点 7
1.2.2 微服务架构面临的挑战 7
1.3 如何实现微服务架构 8
1.3.1 微服务架构图 8
1.3.2 微服务架构下的技术挑战 9
第2章 微服务解决方案之Spring Cloud 10
2.1 什么是Spring Cloud 11
2.2 Spring Cloud版本简介 12
2.3 Spring Cloud规范下的实现 13
2.4 Spring Cloud Netflix 14
2.5 Spring Cloud Alibaba 15
2.5.1 Spring Cloud Alibaba的优势 15
2.5.2 Spring Cloud Alibaba的版本 16
第3章 Spring Cloud的核心之Spring Boot 18
3.1 重新认识Spring Boot 18
3.1.1 Spring IoC/DI 19
3.1.2 Bean装配方式的升级 21
3.1.3 Spring Boot的价值 23
3.2 快速构建Spring Boot应用 25
3.3 Spring Boot自动装配的原理 26
3.3.1 自动装配的实现 27
3.3.2 EnableAutoConfiguration 28
3.3.3 AutoConfigurationImportSelector 29
3.3.4 自动装配原理分析 31
3.3.5 @Conditional条件装配 34
3.3.6 spring-autoconfigure-metadata 37
3.4 手写实现一个Starter 38
3.4.1 Starter的命名规范 38
3.4.2 实现基于Redis的Starter 38
3.5 本章小结 41
第4章 微服务架构下的服务治理 42
4.1 如何理解Apache Dubbo 43
4.2 Apache Dubbo实现远程通信 44
4.3 Spring Boot集成Apache Dubbo 48
4.4 快速上手ZooKeeper 52
4.4.1 ZooKeeper的安装 52
4.4.2 ZooKeeper的数据结构 52
4.4.3 ZooKeeper的特性 53
4.4.4 Watcher机制 54
4.4.5 常见应用场景分析 54
4.5 Apache Dubbo集成ZooKeeper实现服务注册 56
4.5.1 Apache Dubbo集成ZooKeeper实现服务注册的步骤 57
4.5.2 ZooKeeper注册中心的实现原理 59
4.6 实战Dubbo Spring Cloud 60
4.6.1 实现Dubbo服务提供方 60
4.6.2 实现Dubbo服务调用方 63
4.7 Apache Dubbo的高级应用 65
4.7.1 集群容错 66
4.7.2 负载均衡 67
4.7.3 服务降级 68
4.7.4 主机绑定规则 69
4.8 Apache Dubbo核心源码分析 70
4.8.1 源码构建 71
4.8.2 Dubbo的核心之SPI 71
4.8.3 无处不在的自适应扩展点 81
4.8.4 Dubbo中的IoC和AOP 85
4.8.5 Dubbo和Spring完美集成的原理 89
4.9 本章小结 95
第5章 服务注册与发现 97
5.1 什么是Alibaba Nacos 98
5.2 Nacos的基本使用 99
5.2.1 Nacos的安装 99
5.2.2 Nacos服务注册发现相关API说明 100
5.2.3 Nacos集成Spring Boot实现服务注册与发现 101
5.3 Nacos的高可用部署 103
5.3.1 安装环境要求 104
5.3.2 安装包及环境准备 104
5.3.3 集群配置 104
5.3.4 配置MySQL数据库 105
5.3.5 启动Nacos服务 105
5.4 Dubbo使用Nacos实现注册中心 106
5.5 Spring Cloud Alibaba Nacos Discovery 109
5.5.1 服务端开发 109
5.5.2 消费端开发 113
5.6 Nacos实现原理分析 115
5.6.1 Nacos架构图 116
5.6.2 注册中心的原理 116
5.7 深入解读Nacos源码 117
5.7.1 Spring Cloud什么时候完成服务注册 117
5.7.2 NacosServiceRegistry的实现 122
5.7.3 从源码层面分析Nacos服务注册的原理 123
5.7.4 揭秘服务提供者地址查询 127
5.7.5 分析Nacos服务地址动态感知原理 130
5.8 本章小结 132
第6章 Nacos实现统一配置管理 133
6.1 Nacos配置中心简介 134
6.2 Nacos集成Spring Boot实现统一配置管理 134
6.2.1 项目准备 134
6.2.2 启动Nacos Server 135
6.2.3 创建配置 135
6.2.4 启动服务并测试 137
6.3 Spring Cloud Alibaba Nacos Config 137
6.3.1 Nacos Config的基本应用 137
6.3.2 动态更新配置 139
6.3.3 基于Data ID配置YAML的文件扩展名 140
6.3.4 不同环境的配置切换 141
6.3.5 Nacos Config自定义Namespace和Group 142
6.4 Nacos Config 实现原理解析 145
6.4.1 配置的CRUD 145
6.4.2 动态监听之Pull Or Push 146
6.5 Spring Cloud如何实现配置的加载 148
6.5.1 PropertySourceBootstrapConfiguration 148
6.5.2 PropertySourceLocator 150
6.6 Nacos Config核心源码解析 152
6.6.1 NacosFactory.createConfigService 154
6.6.2 NacosConfigService构造 155
6.6.3 ClientWorker 155
6.6.4 ClientWorker.checkConfigInfo 157
6.6.5 LongPollingRunnable.run 157
6.6.6 服务端长轮询处理机制 161
6.6.7 ClientLongPolling 164
6.7 本章小结 167
第7章 基于Sentinel的微服务限流及熔断 168
7.1 服务限流的作用及实现 168
7.1.1 计数器算法 169
7.1.2 滑动窗口算法 170
7.1.3 令牌桶限流算法 171
7.1.4 漏桶限流算法 172
7.2 服务熔断与降级 172
7.3 分布式限流框架Sentinel 174
7.3.1 Sentinel的特性 174
7.3.2 Sentinel的组成 175
7.3.3 Sentinel Dashboard的部署 175
7.4 Sentinel的基本应用 176
7.4.1 Sentinel实现限流 176
7.4.2 资源的定义方式 178
7.4.3 Sentinel资源保护规则 179
7.4.4 Sentinel实现服务熔断 183
7.5 Spring Cloud集成Sentinel实践 185
7.5.1 Sentinel接入Spring Cloud 185
7.5.2 基于Sentinel Dashboard来实现流控配置 187
7.5.3 自定义URL限流异常 189
7.5.4 URL资源清洗 189
7.6 Sentinel集成Nacos实现动态流控规则 190
7.7 Sentinel Dashboard集成Nacos实现规则同步 194
7.7.1 Sentinel Dashboard源码修改 194
7.7.2 Sentinel Dashboard规则数据同步 199
7.8 Dubbo集成Sentinel实现限流 200
7.8.1 Dubbo服务接入Sentinel Dashboard 200
7.8.2 Dubbo服务限流规则配置 201
7.9 Sentinel热点限流 203
7.9.1 热点参数限流的使用 204
7.9.2 @SentinelResource热点参数限流 205
7.9.3 热点参数规则说明 206
7.10 Sentinel的工作原理 206
7.11 Spring Cloud Sentinel工作原理分析 207
7.12 Sentinel核心源码分析 210
7.12.1 限流的源码实现 210
7.12.2 实时指标数据统计 216
7.12.3 服务降级的实现原理 225
7.13 本章小结 229
第8章 分布式事务 230
8.1 分布式事务问题的理论模型 231
8.1.1 X/Open分布式事务模型 231
8.1.2 两阶段提交协议 233
8.1.3 三阶段提交协议 234
8.1.4 CAP定理和BASE理论 236
8.2 分布式事务问题的常见解决方案 238
8.2.1 TCC补偿型方案 238
8.2.2 基于可靠性消息的最终一致性方案 239
8.2.3 最大努力通知型 242
8.3 分布式事务框架Seata 243
8.3.1 AT模式 243
8.3.2 Saga模式 244
8.4 Seata的安装 248
8.4.1 file存储模式 248
8.4.2 db存储模式 249
8.4.3 Seata服务端配置中心说明 251
8.5 AT模式Dubbo集成Seata 258
8.5.1 项目准备 259
8.5.2 数据库准备 259
8.5.3 核心方法说明 260
8.5.4 项目启动顺序及访问 264
8.5.5 整合Seata实现分布式事务 265
8.6 Spring Cloud Alibaba Seata 269
8.6.1 Spring Cloud项目准备 270
8.6.2 集成Spring Cloud Alibaba Seata 270
8.6.3 关于事务分组的说明 275
8.7 Seata AT模式的实现原理 276
8.7.1 AT模式第一阶段的实现原理 277
8.7.2 AT模式第二阶段的原理分析 279
8.7.3 关于事务的隔离性保证 280
8.8 本章小结 283
第9章 RocketMQ分布式消息通信 285
9.1 什么是RocketMQ 285
9.1.1 RocketMQ的应用场景 286
9.1.2 RocketMQ的安装 286
9.1.3 RocketMQ如何发送消息 287
9.1.4 RocketMQ如何消费消息 289
9.2 Spring Cloud Alibaba RocketMQ 291
9.2.1 Spring Cloud Alibaba RocketMQ架构图 293
9.2.2 Spring Cloud Stream消息发送流程 294
9.2.3 RocketMQ Binder集成消息发送 299
9.2.4 RocketMQ Binder集成消息订阅 303
9.2.5 Spring Cloud Stream消息订阅流程 308
9.3 RocketMQ集群管理 314
9.3.1 整体架构设计 314
9.3.2 基本概念 315
9.3.3 为什么放弃ZooKeeper而选择NameServer 316
9.4 如何实现顺序消息 318
9.4.1 顺序消息的使用场景 318
9.4.2 如何发送和消费顺序消息 319
9.4.3 顺序发送的技术原理 321
9.4.4 普通发送的技术原理 322
9.4.5 顺序消费的技术原理 324
9.4.6 并发消费的技术原理 325
9.4.7 消息的幂等性 325
9.5 如何实现事务消息 326
9.5.1 事务消息的使用场景 326
9.5.2 如何发送事务消息 327
9.5.3 事务消息的技术原理 330
9.6 高性能设计 331
9.6.1 顺序写盘 333
9.6.2 消费队列设计 334
9.6.3 消息跳跃读取 336
9.6.4 数据零拷贝 336
9.6.5 动态伸缩能力 336
9.6.6 消息实时投递 337
9.7 高可用设计 338
9.7.1 消息发送重试机制 339
9.7.2 故障规避机制 340
9.7.3 同步刷盘与异步刷盘 343
9.7.4 主从复制 350
9.7.5 读写分离 351
9.7.6 消费重试机制 351
9.7.7 ACK机制 352
9.7.8 Broker集群部署 352
9.8 本章小结 353
第10章 微服务网关之Spring Cloud Gateway 354
10.1 API网关的作用 355
10.1.1 统一认证鉴权 356
10.1.2 灰度发布 357
10.2 网关的本质及技术选型 358
10.2.1 OpenResty 358
10.2.2 Spring Cloud Zuul 360
10.2.3 Spring Cloud Gateway 361
10.3 Spring Cloud Gateway网关实战 361
10.3.1 spring-cloud-gateway-service 361
10.3.2 spring-cloud-gateway-sample 362
10.4 Spring Cloud Gateway原理分析 363
10.5 Route Predicate Factories 364
10.5.1 指定时间规则匹配路由 365
10.5.2 Cookie匹配路由 365
10.5.3 Header匹配路由 366
10.5.4 Host匹配路由 366
10.5.5 请求方法匹配路由 367
10.5.6 请求路径匹配路由 367
10.6 Gateway Filter Factories 367
10.6.1 GatewayFilter 368
10.6.2 GlobalFilter 372
10.7 自定义过滤器 375
10.7.1 自定义GatewayFilter 375
10.7.2 自定义GlobalFilter 377
10.8 Spring Cloud Gateway集成Nacos实现请求负载 378
10.9 Spring Cloud Gateway集成Sentinel网关限流 381
10.9.1 Route维度限流 382
10.9.2 自定义API分组限流 384
10.9.3 自定义异常 386
10.9.4 网关流控控制台 387
10.9.5 网关限流原理 388
10.10 本章小结 389
......(更多)
......(更多)