zoukankan      html  css  js  c++  java
  • RabbitMQ的应用场景

    1. 异步处理

    用户注册后,需要发注册邮件和注册短信,传统的方式:串行和并行。

    串行:用户注册信息写入数据库 ------>  发送邮件 -------> 发送短信 ----->注册成功,用户使用

    并行:用户注册信息写入数据库 ------>  发送邮件 / 发送短信  ------> 注册成功,用户使用

    因为邮件和短信并不是注册所必需的,即使不接收邮件和短信,用户也可以进行操作了。

    RMQ:用户注册信息写入数据库 ------>  写入消息队列 / 注册成功,用户使用 -------> 发送邮件 -----> 发送短信

    2. 应用解耦

    双11购物节,用户下单,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口,缺点:当库存系统出现故障,订单就会失败,会损失大量的订单。 

    传统:订单系统 ----调用库存接口-----> 库存系统

    RMQ:订单系统  ---写入消息----> 消息队列 <-----订阅消息--库存系统

    3. 流量削峰

    秒杀活动,一般因为流量过大,导致某个应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。

    RMQ:用户请求---写入消息---> 消息队列 ----根据规则读取秒杀请求---> 秒杀业务处理系统

      1、 用户的请求,服务器收到之后,会加入到消息队列,加入消息队列的消息达到最大值,直接抛弃用户请求,或跳转到错误页面。

      2、秒杀业务根据消息队列的请求,再做后续处理。

  • 相关阅读:
    SQL Server TSQL高级查询
    ado.net
    Apache配置详解(最好的APACHE配置教程)
    CrystalReport for vs2010 水晶报表的发布问题以及捆绑发布
    Rails 疑难解决
    [转]if 命令示例详解
    How To Deploy on Bluehost
    CustomActionData 属性 [Visual Studio 中的部署]
    BlueHost下部署rails app经验
    Using Ruby On Rails on Bluehost
  • 原文地址:https://www.cnblogs.com/tianyee/p/13648779.html
Copyright © 2011-2022 走看看