前言
第1篇 开发工具准备
第1章 走进分布式中间件2
1.1 分布式系统概述2
1.1.1 白话分布式系统3
1.1.2 分布式系统发展历程3
1.1.3 分布式系统特性6
1.1.4 分布式系统常见问题7
1.2 分布式中间件概述7
1.2.1 白话分布式中间件7
1.2.2 常见中间件介绍8
1.3 本书核心知识要点9
1.4 本书实战要求与建议10
第2章 搭建微服务项目11
2.1 Spring Boot概述11
2.1.1 什么是Spring Boot11
2.1.2 Spring Boot的优势12
2.1.3 Spring Boot的几大特性13
2.2 搭建规范与搭建流程13
2.2.1 Spring Boot项目搭建规范14
2.2.2 Spring Boot项目搭建流程14
2.2.3 写个Hello World吧26
2.3 总结28
第2篇 开发实战
第3章 缓存中间件Redis30
3.1 Redis概述与典型应用场景介绍30
3.2 Redis的使用32
3.2.1 快速安装Redis32
3.2.2 在Windows环境下使用Redis34
3.2.3 Spring Boot项目整合Redis37
3.2.4 Redis自定义注入Bean组件配置38
3.2.5 RedisTemplate实战39
3.2.6 StringRedisTemplate实战43
3.3 Redis常见数据结构实战45
3.3.1 字符串45
3.3.2 列表47
3.3.3 集合48
3.3.4 有序集合50
3.3.5 哈希Hash存储52
3.3.6 Key失效与判断是否存在54
3.4 Redis实战场景之缓存穿透56
3.4.1 什么是缓存穿透57
3.4.2 缓存穿透的解决方案58
3.4.3 实战过程58
3.4.4 其他典型问题介绍65
3.5 总结66
第4章 Redis典型应用场景实战之抢红包系统67
4.1 整体业务流程介绍67
4.1.1 抢红包系统业务流程68
4.1.2 业务流程分析68
4.1.3 业务模块划分70
4.2 数据库表设计与环境搭建71
4.2.1 数据库表设计71
4.2.2 开发环境搭建73
4.2.3 开发流程介绍83
4.3 “红包金额”随机生成算法实战85
4.3.1 随机数算法86
4.3.2 红包随机金额生成算法要求86
4.3.3 二倍均值法简介87
4.3.4 红包随机金额生成算法实战88
4.3.5 红包随机金额生成算法自测90
4.4 “发红包”模块实战91
4.4.1 业务模块分析92
4.4.2 整体流程实战93
4.4.3 业务模块自测99
4.5 “抢红包”模块实战101
4.5.1 业务模块分析101
4.5.2 整体流程102
4.5.3 业务模块自测105
4.5.4 总结109
4.6 Jmeter压力测试高并发抢红包110
4.7 问题分析与优化方案116
4.7.1 问题分析117
4.7.2 优化方案介绍118
4.7.3 优化方案之Redis分布式锁实战118
4.7.4 不足之处122
4.8 总结122
第5章 消息中间件RabbitMQ124
5.1 RabbitMQ简介124
5.1.1 认识RabbitMQ125
5.1.2 典型应用场景介绍126
5.1.3 RabbitMQ后端控制台介绍132
5.1.4 基于Spring的事件驱动模型实战133
5.2 Spring Boot项目整合RabbitMQ137
5.2.1 RabbitMQ相关词汇介绍138
5.2.2 Spring Boot项目整合RabbitMQ139
5.2.3 自定义注入配置Bean相关组件140
5.2.4 RabbitMQ发送、接收消息实战142
5.2.5 其他发送接收消息方式实战147
5.3 RabbitMQ多种消息模型实战152
5.3.1 基于FanoutExchange的消息模型实战152
5.3.2 基于DirectExchange的消息模型实战160
5.3.3 基于TopicExchange的消息模型实战165
5.4 RabbitMQ确认消费机制171
5.4.1 消息高可用和确认消费172
5.4.2 常见的确认消费模式介绍174
5.4.3 基于自动确认消费模式实战176
5.4.4 基于手动确认消费模式实战182
5.5 典型应用场景实战之用户登录成功写日志188
5.5.1 整体业务流程介绍与分析188
5.5.2 数据库表设计189
5.5.3 开发环境搭建197
5.5.4 基于TopicExchange构建日志消息模型200
5.5.5 异步发送接收登录日志消息实战201
5.5.6 整体业务模块自测实战205
5.6 总结208
第6章 死信队列/延迟队列实战209
6.1 死信队列概述209
6.1.1 死信队列简介与作用209
6.1.2 典型应用场景介绍212
6.2 RabbitMQ死信队列实战213
6.2.1 死信队列专有词汇介绍214
6.2.2 死信队列消息模型实战215
6.2.3 死信队列延迟发送消息实战221
6.3 典型应用场景实战之商城平台订单支付超时226
6.3.1 整体业务场景介绍227
6.3.2 整体业务流程分析228
6.3.3 数据库设计229
6.3.4 构建RabbitMQ死信队列消息模型236
6.3.5 Controller层开发用户下单及订单失效功能240
6.3.6 “用户下单支付超时”延迟发送接收实战246
6.3.7 “用户下单支付超时”整体功能自测250
6.4 总结254
第7章 分布式锁实战256
7.1 分布式锁概述256
7.1.1 锁机制257
7.1.2 分布式锁登场263
7.1.3 典型应用场景介绍265
7.1.4 小结268
7.2 基于数据库实现分布式锁268
7.2.1 乐观锁简介268
7.2.2 乐观锁实战269
7.2.3 Jmeter高并发测试乐观锁280
7.2.4 悲观锁简介286
7.2.5 悲观锁实战288
7.2.6 Jmeter高并发测试悲观锁290
7.2.7 小结291
7.3 基于Redis实现分布式锁292
7.3.1 Redis温故而知新292
7.3.2 分布式锁的实现流程与原理分析294
7.3.3 基于Redis实战实现分布式锁295
7.3.4 Jmeter高并发测试303
7.3.5 小结307
7.4 基于ZooKeeper实现分布式锁308
7.4
^ 收 起