# 前言
在项目中想要 RabbitMQ 变得更加健壮,就要使得其变成高可用,今天我们一起来聊聊关于 RabbitMQ 集群原理和部署流程
# 1. 介绍
在前几篇文章中,我们详细的介绍了 RabbitMQ 的内部结构和使用,以及 SpringBoot 和 RabbitMQ 整合,都是基于单台 RabbitMQ 进行使用的。
我们知道在微服务流行的当下,一旦单台服务器挂了,基本上就无法提供高可用的服务了,因此为了保证服务高可用,在生产环境上我们通常的做法是搭建一个 RabbitMQ 集群,即使某台 RabbitMQ 故障了,其他正常的 RabbitMQ 服务器依然可以使用,应用程序的持续运行不会受到影响。
# 2. 集群架构原理
在前几篇文章中,我们有介绍到 RabbitMQ 内部有各种基础构件,包括队列、交换器、绑定、虚拟主机等,他们组成了 AMQP 协议消息通信的基础,而这些构件以元数据的形式存在,它始终记录在 RabbitMQ 内部,它们分别是:
-
队列元数据:队列名称和它们的属性
-
交换器元数据:交换器名称、类型和属性
-
绑定元数据:一张简单的表格展示了如何将消息路由到队列
-
vhost 元数据:为 vhost 内的队列、交换器和绑定提供命名空间和安全属性
这些元数据,其实本质是一张查询表,里面包括了交换器名称和一个队列的绑定列表,当你将消息发布到交换器中,实际上是将你所在的信道将消息上的路由键与交换器的绑定列表进行匹配,然后将消息路由出去。
消息路由表
# 前言
刚开始接触RabbitMQ的时候,有些概念那理解起来简直是像风像雨又像雾,晦涩难懂。 这篇文章用尽可能浅显的语言来解释RabbitMQ的入门知识。毕竟是入门课程,并没有对很多概念进行深入说明,如果你想更深入的了解RabbitMQ,可以继续关注本头条号后续发布的文章或者自己从网上搜寻了资料,自己探索研究。
# RabbitMQ是什么
官方定义:RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。 趣味定义:兔子行动非常迅速而且繁殖起来也非常疯狂,用Rabbit来命名这个分布式软件,呼应了RabbitMQ的主要任务是处理海量的信息