什么是RabbitMQ?
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue,高级队列消息协议)的开源实现。
RabbitMQ应用场景:
在项目中,将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大地节省了服务器的请求响应时间,从而提高了系统的吞吐量。RabbitMQ支持消息的持久化,也就是数据可以写在磁盘上。为了数据安全考虑,大多数企业都会选择持久化。如果不需要消息持久化,那么使用内存节点即可!最合适的方案是既有内存节点,又有磁盘节点,以下案例就是这样的一个例子。
架构思路:
在一个集群里,三台服务器,其中一台使用磁盘模式,另两台使用内存模式。两台内存模式的节点无疑速度更快,因此通过客户端连接访问它们。但是客户端不可能分别连接两个内存节点,肯定是通过前端反向代理去轮询发布请求。如果担心前端反向代理服务器故障,可以通过keepalived做一个高可用架构。而磁盘模式的节点,由于磁盘IO相对较慢,因此仅做数据备份使用。
注意:三台服务器都需要连上互联网并安装软件包,另外RabbitMQ集群节点必须在同一个网段里,如果是跨广域网,效果就会变差。
配置表: