RabbitMQ概述
先说说MQ是什么? MQ(Message Queue)全称消息队列,是在消息传输过程中保存消息的容器,多用于分布式系统之间进行通信。而分布式系统通信有两种方式,一是远程调用,二是通过中间件进行间接通信,而MQ就可以作为通信的中间件。
MQ的优势: 1、应用解耦 提高系统容错性和可维护性 2、异步提速 生产者只需要把消息交给消息队列,然后就可以直接反馈结果给用户了,然后消费者再从消息队列中取消息。这样节约很多时间。提升了用户体验和系统吞吐量。 3、削峰填谷 在高并发情况下,消费者消费能力有限,无法快速消费完所有信息,如果使用消息队列,信息就可以存储在消息队列中,消费者每次取用可负载的消息量即可。提高了系统稳定性
MQ的缺点: 1、导致分布式系统的可用性降低。比如一个分布式系统中有两个子系统,原来只要维持两个系统正常运行即可,此时却还要保证消息队列的正常运行。一旦消息队列出现故障,整个分布式系统也将出现问题。所以使用MQ要尽量保证MQ的高可用!! 2、系统复杂度大大提高。以前的系统是同步的远程调用,现在则是通过MQ进行异步调用。我们需要保证消息没有被重复消费,且要处理消息丢失的情况,以及保证信息传递的顺序性! 3、需要解决一致性问题。比如A系统通过MQ给B、C、D系统发消息,如果BC处理成功,D处理失败,如何保证消息数据处理的一致性!!
MQ使用条件: 1、生产者不需要从消费者处得到反馈。 2、可以允许数据短暂不一致。比如商品库存
RabbitMQ概括 RabbitMQ是基于AMQP协议(高级消息队列协议),使用Erlang语言开发的一款消息队列产品
RabbitMQ架构图
|