🏆🏆🏆教程全知识点简介:微服务保护、服务异步通信、消息中间件部署、分布式事务、搜索引擎、缓存、数据同步以及相关组件的安装配置等技术要点。在微服务保护方面,介绍了 Sentinel 的基础知识,包括雪崩问题、超时处理、舱壁模式、断路器机制,以及不同服务保护技术的对比;讲解了流量控制(簇点链路、流控模式、热点参数限流)、隔离与降级(FeignClient 整合 Sentinel、线程隔离)、授权规则(自定义异常结果)及规则持久化(规则管理模式与 pull 模式),并演示了基于 Nacos 的规则持久化改造。服务异步通信部分探讨了消息可靠性(生产者消息确认、Return 回调、ConfirmCallback)、死信交换机、TTL 队列等高级应用。RabbitMQ 部署指南涵盖了单机部署、DelayExchange 插件安装、集群部署、镜像模式等内容。分布式事务部分介绍了 CAP 定理、BASE 理论、常见解决方案,Seata 的基础与部署(TC 服务部署、Nacos 配置、数据库表创建)、多种事务模式(XA 模式及优缺点、四种模式对比)和高可用架构。分布式搜索引擎章节讲解了 Elasticsearch 的原理(ELK 技术栈、倒排索引)、索引库与文档操作、RestAPI 与 RestClient 的使用、排序与高亮、酒店搜索案例(分页、竞价排名、ad标记、算分函数)、自动补全、数据同步(同步调用、监听 binlog)、集群搭建与脑裂问题、分片存储测试,以及单点 ES、Kibana、IK 分词器安装。缓存部分介绍了 Redis 持久化(RDB 与 AOF 对比)、单机安装 Redis、Redis 集群、多级缓存(JVM 进程缓存、Caffeine)、请求参数处理、Tomcat 查询、HTTP 工具与 CJSON 工具类、Redis 缓存查询。数据同步与网关部分包括 Canal 安装(开启 MySQL 主从、设置权限)、OpenResty 安装(开发库、目录结构、环境变量配置)及运行流程。
📚📚👉👉👉git仓库code.zip 直接get: gitee.com/xiaoshuai11… 🍅🍅
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节
🚀🚀🚀本篇主要内容
RabbitMQ部署指南
1.单机部署
在Centos7虚拟机中使用Docker来安装。
1.1.下载镜像
方式一:在线拉取
docker pull rabbitmq:3.8-management
方式二:从本地加载
在课前资料已经提供了镜像包:

上传到虚拟机中后,使用命令加载镜像即可:
docker load -i mq.tar
1.2.安装MQ
执行下面的命令来运行MQ容器:
docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123321 \
-v mq-plugins:/plugins \
--name mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3.8-management
2.安装DelayExchange插件
官方的安装指南地址为:blog.rabbitmq.com/posts/2015/…
上述文档是基于linux原生安装RabbitMQ,然后安装插件。
因为 之前是基于Docker安装RabbitMQ,所以下面 会讲解基于Docker来安装RabbitMQ插件。
2.1.下载插件
RabbitMQ有一个官方的插件社区,地址为:www.rabbitmq.com/community-p…
其中包含各种各样的插件,包括 要使用的DelayExchange插件:

大家可以去对应的GitHub页面下载3.8.9版本的插件,地址为github.com/rabbitmq/ra…
课前资料也提供了下载好的插件:

2.2.上传插件
因为 是基于Docker安装,所以需要先查看RabbitMQ的插件目录对应的数据卷。如果不是基于Docker的同学,请参考第一章部分,重新创建Docker容器。
之前设定的RabbitMQ的数据卷名称为mq-plugins,所以 使用下面命令查看数据卷:
docker volume inspect mq-plugins
可以得到下面结果:

接下来,将插件上传到这个目录即可:

2.3.安装插件
最后就是安装了,需要进入MQ容器内部来执行安装。我的容器名为mq,所以执行下面命令:
docker exec -it mq bash
执行时,请将其中的 -it 后面的mq替换为你自己的容器名.
进入容器内部后,执行下面命令开启插件:
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
结果如下:

3.集群部署
接下来, 看看如何安装RabbitMQ的集群。
2.1.集群分类
在RabbitMQ的官方文档中,讲述了两种集群的配置方式:
- 普通模式:普通模式集群不进行数据同步,每个MQ都有自己的队列、数据信息(其它元数据信息如交换机等会同步)。例如 有2个MQ:mq1,和mq2,如果你的消息在mq1,而你连接到了mq2,那么mq2会去mq1拉取消息,然后返回给你。如果mq1宕机,消息就会丢失。
- 镜像模式:与普通模式不同,队列会在各个mq的镜像节点之间同步,因此你连接到任何一个镜像节点,均可获取到消息。而且如果一个节点宕机,并不会导致数据丢失。不过,这种方式增加了数据同步的带宽消耗。
先来看普通模式集群, 的计划部署3节点的mq集群:
| 主机名 | 控制台端口 | amqp通信端口 |
|---|---|---|
| mq1 | 8081 ---> 15672 | 8071 ---> 5672 |
| mq2 | 8082 ---> 15672 | 8072 ---> 5672 |
| mq3 | 8083 ---> 15672 | 8073 ---> 5672 |
集群中的节点标示默认都是:rabbit@[hostname],因此以上三个节点的名称分别为:
- rabbit@mq1
- rabbit@mq2
- rabbit@mq3
2.2.获取cookie
RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。集群模式中的每个RabbitMQ 节点使用 cookie 来确定它们是否被允许相互通信。
要使两个节点能够通信,它们必须具有相同的共享秘密,称为Erlang cookie。cookie 只是一串最多 255 个字符的字母数字字符。
每个集群节点必须具有相同的 cookie。实例之间也需要它来相互通信。
先在之前启动的mq容器中获取一个cookie值,作为集群的cookie。执行下面的命令:
docker exec -it mq cat /var/lib/rabbitmq/.erlang.cookie
可以看到cookie值如下:
FXZMCVGLBIXZCDEMMVZQ
接下来,停止并删除当前的mq容器, 重新搭建集群。
docker rm -f mq

2.3.准备集群配置
在/tmp目录新建一个配置文件 rabbitmq.conf:
cd /tmp
# 创建文件
touch rabbi