消息队列MQ

目录

 

一、简介

二、为什么需要消息队列(MQ)?

三、介绍      


一、简介

        消息队列(Message Queuing),在计算机科学中,是一种进程间通信同一进程间不同线程的通信方式。

        广义上讲消息队列是解决分布式系统中,各个功能模块间的信息传递通信方式。

        与文件传输和RPC相比,消息队列具有更好的平台无关性,并能够很好地支持并发与异步调用。

        目前MQ的实现有很多种,如RabbitMq,Redis,ZeroMQ,ActiveMQ,Jafka/Kafka,MSMQ等,不同MQ的实现往往有不同的适用场景;而且这些实现会分别遵从不同的MQ协议,如高级消息队列协议AMQP(Advanced Message Queuing Protocol)。

 

二、为什么需要消息队列(MQ)?

        主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

 

三、介绍      

       在百度百科中,消息队列是这么解释的:“消息队列”是在消息的传输过程中保存消息的容器。

        这个解释中的“消息”指的是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。

        “消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

 

        平常在工作中,我们也常用消息队列,比如kafka、rabbitmq等,大多数公司基本上都有在用,当然也有使用redis来模拟消息队列的,当然那是不建议的方式。

 

        下面根据我平常使用的场景以及网上的资料大体说下消息队列的常用场景。

        消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。

        主要的使用场景就是将比较耗时而且不需要立即生效返回结果的操作,我们把这种操作作为一个消息,放到消息队列中。处理方可以在任何时候去获取并处理这条消息。这里我们只要保证消息的格式不变,消息的发送方和接收处理方都认识这个消息,那么双方就不需要彼此通信,即可以完成一件事。

 

        当然,如果我们使用消息队列的话,也有许多需要注意的点。比如,消息的发送方不需要接收方立即返回处理结果,否则的话只能等待处理结果;比如系统会有短暂的不一致性,发送方不可预知接收方什么时间处理完这个消息。当然,实际生产中还是有需要地方允许这些比如的,所以消息队列现在是异常的火爆。

 

下面举一个网上的例子(自我感觉,非常的生动形象):

        假设用户在软件中注册,服务端收到用户的注册请求后,它会做这些操作:

        校验用户名等信息,如果没问题会在数据库中添加一个用户记录如果是用邮箱注册会给你发送一封注册成功的邮件,手机注册则会发送一条短信分析用户的个人信息,以便将来向他推荐一些志同道合的人,或向那些人推荐他发送给用户一个包含操作指南的系统通知等等……

 

        但是对于用户来说,注册功能实际只需要第一步,只要服务端将他的账户信息存到数据库中他便可以登录上去做他想做的事情了。至于其他的事情,服务端就可以把其他的操作放入对应的消息队列中然后马上返回用户结果,由消息队列异步的进行这些操作。

 

整理、转载自:

https://baijiahao.baidu.com/s?id=1611322319373331716&wfr=spider&for=pc

https://www.cnblogs.com/xuyatao/p/6864109.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值