美文网首页
一、消息队列简介

一、消息队列简介

作者: lancelea | 来源:发表于2019-12-11 16:07 被阅读0次

    介绍什么是消息队列,并介绍了消息队列的两种主要的应用场景场景。

    什么是消息队列

    消息队列,我们常简称为MQ(Message Queue),队列是一种先进先出的数据结构。那么消息队列就是在消息的传输过程中保存消息的容器。

    主要的使用场景

    削峰填谷

    一般在秒杀或团队抢购活动中使用广泛。

    系统压力方面:上游发起下单操作,下游完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)。上游下单业务简单,每秒发起了10000个请求;下游秒杀业务复杂,每秒只能处理2000个请求,很有可能上游不限速的下单,导致下游系统被压垮。

    架构成本方面:在上游下单量剧增的情况下,下游应用仍然需要继续发挥作用,但是这样的突发流量并不常见,如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。

    如果通过消息队列的方式,将上游订单存储到消息队列中,下游消费端通过拉取的方式,并且拉去速度由消费端来控制,则就可以控制流量趋于平稳,这样就达到了削峰填谷的作用,又节省了成本。

    调整架构如下图所示:

    销峰填谷

    秒杀处理流程如下所述:

    1. 用户发起海量秒杀请求到秒杀业务处理系统。
    2. 秒杀处理系统按照秒杀处理逻辑将满足秒杀条件的请求发送至消息队列。
    3. 下游的业务系统订阅消息队列的秒杀相关消息并进行处理,再将秒杀成功的消息发送到相应用户。
    4. 用户收到秒杀成功的通知。
    异步解耦

    以用户注册业务为例,对用户来说,注册功能实际只需要注册系统存储用户的账户信息后,该用户便可以登录,后续的注册短信和邮件不是即时需要关注的步骤。
    对于注册系统而言,发送注册成功的短信和邮件通知并不一定要绑定在一起同步完成,所以实际当数据写入注册系统后,注册系统就可以把其他的操作放入对应的消息队列中然后马上给用户返回结果,由消息队列异步地进行这些操作,这样既缩短了用户注册的响应时间,又保证了邮件通知系统或短信通知系统出现问题后注册系统不会受到影响。
    系统结构如下图所示:

    异步解耦

    数据流动如下所述:

    1. 用户在注册页面填写账号和密码并提交注册信息,这些注册信息首先会被写入注册系统成功。
    2. 注册信息写入注册系统成功后,再发送消息至消息队列。消息队列会马上返回响应给注册系统,注册完成。用户可立即登录。
    3. 下游的邮件和短信通知系统订阅消息队列的此类注册请求消息,即可向用户发送邮件和短信通知,完成所有的注册流程。

    相关文章

      网友评论

          本文标题:一、消息队列简介

          本文链接:https://www.haomeiwen.com/subject/yixhyctx.html