码迷,mamicode.com
首页 > 其他好文 > 详细

1.rabbitmq的介绍和基本使用

时间:2019-01-05 00:12:39      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:队列   image   inf   分享图片   alt   style   pytho   简化   先进先出   

rabbitmq是一款消息队列。

首先什么是消息,消息是指在应用间传送的数据。消息可以是简单的字符串, 也可以是一些复杂的对象。
消息队列则是应用间进行通信的一种方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。
可以类比一下,python中的队列,也是为了不同线程之间进行数据共享,但是rabbitmq这款消息队列要远比python中的队列强大的多。

因此消息队列可以看成是应用之间的异步协助机制,至于为什么需要消息队列,可以想象在流量高峰时期,我们不可能临时增加服务器。但是又想支撑这么大的流量,因此可以使用消息队列将操作进行异步执行,比如用户下单成功发送短信,那么我们没必要非等到短信发送成功结束流程,而是把发送短信这条消息放在队列中,由另外的线程从消息队列中去取消息,然后执行发送短信的业务逻辑。

技术分享图片

这是一个普通也是最简单但也是效果最不好的执行流程

 

技术分享图片

发送邮件和短信变成异步的了,效果有提升,但仍然不是最优的办法

 

技术分享图片

这种效果是最好的,因为发送短信和邮件不是必须的业务逻辑。我们可以写入一个消息队列,那么另外的线程去获取消息然后执行,可以大大的提升效率。

再比如库存系统,如果高峰时期,那么会有大量的请求访问库存系统,这样压力会很大,那么我们就可以将消息写入消息队列,直接返回用户下单成功。然后库存系统在获取消息队列里面的消息,进行下单操作。

技术分享图片

技术分享图片

 

以及专门用来处理日志的kafka也是同样的道理

技术分享图片

日志采集客户端,负责日志数据采集,定时写受写入Kafka队列
Kafka消息队列,负责日志数据的接收,存储和转发
日志处理应用:订阅并消费kafka队列中的日志数据

 

看一张架构图来理解rabbitmq的基本原理

技术分享图片

clientA和clientB可以看成是订单系统,往消息队列里面发送消息,client123可以看成是库存系统,往消息队列里面取数据

解释一下图中的一些关键词

Queue:
队列,rabbitmq的作用是存储消息,那么自然要有队列来进行存储。队列的特点是先进先出,因此可以看出clientA和clientB是生产者,生产者生产消息送到rabbitmq的内部对象Queue里面去,而client123可以看成是消费者,消费者则是从队列中取出数据,可以简化为:

技术分享图片

 

1.rabbitmq的介绍和基本使用

标签:队列   image   inf   分享图片   alt   style   pytho   简化   先进先出   

原文地址:https://www.cnblogs.com/traditional/p/10223001.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!