小白同学在做一个秒杀项目时要用到RabbitMQ,刚开始对这个小白兔mq反感,但是后来发现了它的重要性之后,我决定好好研究一下。
在秒杀项目中当所有的请求都到达了数据库时,数据库瞬间的访问量大增,那我们可以使用消息中间件来实现异步化处理,即使用RabbitMQ中间件,让所有的请求排队,起到一个降流消峰的作用,当然还有其它作用。
RabbitMQ就是一种消息队列的实现,可以简单理解为生产者/消费者模式,生产商将生产的商品放在商店(消息队列),消费者有需求就来商店买,商店(消息队列)实现两者间的异步和解耦。
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端。
从上面的描述中可以看出消息队列是一种应用间的异步协作机制,那什么时候需要使用 MQ 呢?
以上是用于业务解耦的情况,其它常见场景包括最终一致性、广播、错峰流控等等。
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595