为什么使用mq?

为什么使用MQ(消息队列),这是一个很经典的问题,在互联网公司里,MQ是必须用到的,有以下场景:

异步处理

例如有一个表单提交,涉及多个系统的交互,形成一个冗长的流程,同步处理完毕,再返回给用户,则需要一定的时间,用户体验不好。


异步

而如果引入MQ,把关键步骤,照旧同步处理完毕,直接返回给用结果,非关键步骤,我们通过MQ,让系统背后慢慢消费,慢慢处理。

这样用户体验好,数据也最终一致性。

流量肖峰

有一个应用的接口,调用方特别多,如果每当来一个请求,服务器就进行处理,当瞬间来批量的请求,容易一下子把机器打死。

肖峰

而使用了MQ,多了一个消息队列,相当于多了一个缓存区。每增加一个请求,服务器可能不会立刻响应,而是先放到消息队列里边。服务器可以依次进行,在自己的性能范围内,不断地消费消息,处理请求。

系统解耦

互联网公司里边,每个部门,各负责各自系统,如果彼此的联系,仅仅通过rpc的接口调用,如此一来,双方的每次系统迭代更新,都要对彼此提供的client做一定的考量,增加一个字段、修改一个字段、增加一个参数、减少一个参数、修改个参数名,都要及时通知对方,很不方便。

而彼此之间增加MQ之后,虽然也是要留意下消息体字段,但是就没有那么苛刻,系统双方,显得灵活些。




MQ全称为Message Queue,即消息队列,是一种跨进程的通信机制,用于上下游传递消息。

使用mq的原因:

1. 实现分布式系统之间的解耦调用

在分布式系统中,经常会出现一个服务会有多个消费端调用,而且可能每个消费方需要接入的逻辑不一致,又或者随着项目的不断发展,我们需要接口的未来维护和发展确定一套可扩展的规范,引入消息系统,在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

2. 实现异步调用

有时候我们会遇到这样的场景,用户在客户端提交了一个请求,后端处理这个请求的业务相对比较复杂,如果这个请求使用的是同步调用,客户端就会出现发送请求后过了很久才相应的情况,这对用户体验来说是十分致命的.如果说用户并不关心请求是否处理,对于一些耗时的非事务性的业务处理,我们可以使用mq异步请求的方式,将处理信息放入队列,由后端监听队列自行处理,在将消息存入队列后直接返回客户端相应,加快响应速度.

3. 削峰(队列),解决高并发问题

例如秒杀活动,可能在短时间内会有很大请求同时到后端,如果后端对每个请求都执行业务操作,例如查询数据库和写数据库,会造成服务器压力过大,同时,在同一时间进行大量数据库操作,可能会出现数据异常,我们可以使用mq实现缓冲,将所有请求先放入消息队列中,服务端每次处理业务先从消息队列获取.




mq是分布式进程的高效通信基础设施。

展开阅读全文

页面更新:2024-03-31

标签:队列   分布式   字段   客户端   放入   接口   参数   过程   消息   数据库   服务器   业务   数据   用户   系统   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top