前言

在Redis秒杀功能设计与实现一篇中,我们使用redis实现了商品的秒杀抢购功能,在当前的设计中,只涉及到商品抢购,即用户锁定名额,并将成功抢购到的用户信息保存到redis中了

但是一个完整的抢购流程在业务流程中看到,包括锁定名额和下单,在超卖问题分析这篇中,我们是将抢购与订单放在一起进行的

仔细分析这样的做法,在高并发的抢购环境下,这样做是欠妥的,因为使用了分布式锁,尽管时间很短,但分布式锁的存在仍然会耗费不少性能

而且从系统的整体设计层面中,在微服务架构中,如果像双11那样瞬时订单量特别大的情况下,上面的做法带来的影响就更大了

因此在高并发环境下,另一个比较成熟且为业界广泛使用的就是利用消息中间件,将抢购成功的消息推送至消息队列,订单作为一个单独的微服务来消费这些消息,完成下单的操作

这样做的好处是显而易见的,消息队列可以堆积大量的订单消息,抢购的服务只需要将抢购成功的消息推送至消息队列即可,剩下的由订单微服务去处理

同时,实际环境中,如果发现消息队列的消息堆积过大,单个订单微服务消费能力达到瓶颈的时候,可以通过动态扩容的方式通过增加节点去消费,从而大幅度提升整体的吞吐量

rabbitmq实现秒杀中订单流量削峰相关推荐

  1. 【商城秒杀项目】-- 流量削峰应该怎么做

    如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点.这样一来,就会导致一个特别高的流量峰值,它对资源的消耗 ...

  2. 小工匠聊架构-超高并发秒杀系统设计 04_流量削峰设计

    文章目录 Pre 概 why how 排队 问答机制 方案设计 分层过滤 总结 Pre 小工匠聊架构-超高并发秒杀系统设计 01_总体原则和架构演进 小工匠聊架构-超高并发秒杀系统设计 02_数据的动 ...

  3. Spring Cloud--Sleuth+Zipkin 链路跟踪/订单的流量削峰

    Sleuth 产生链路跟踪日志 A --> B --> C A的id会被当做整条链路的id 默认只有10%的日志会发到Zipkin A, USFHSAJFGVDMJ, USFHSAJFGV ...

  4. springboot集成rabbitmq商品秒杀业务实战(流量削峰)

    消息队列如何实现流量削峰? 要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送 ...

  5. 消息中间件系列(六):什么是流量削峰?如何解决秒杀业务的削峰场景

    流量削峰的由来 主要是还是来自于互联网的业务场景,例如,马上即将开始的春节火车票抢购,大量的用户需要同一时间去抢购:以及大家熟知的阿里双11秒杀, 短时间上亿的用户涌入,瞬间流量巨大(高并发),比如: ...

  6. 高并发架构系列:什么是流量削峰?如何解决秒杀业务的削峰场景

    流量削峰的由来 主要是还是来自于互联网的业务场景,例如,马上即将开始的春节火车票抢购,大量的用户需要同一时间去抢购:以及大家熟知的阿里双11秒杀, 短时间上亿的用户涌入,瞬间流量巨大(高并发),比如: ...

  7. 秒杀系统流量削峰,这事应该怎么做?

    如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始那一秒是一条很 直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点.这样一来,就会导致一 个特别高的流量峰值,它对资源 ...

  8. 秒杀系统流量削峰这事应该怎么做?为什么要削峰呢?

    点击上方"朱小厮的博客",选择"设为星标" 回复"1024"获取独家整理的学习资料 如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线 ...

  9. RabbitMQ流量削峰应用

    RabbitMQ流量削峰 配置 生产者 消费者 测试 配置 主要是配置队列长度 /** 削峰限流 */@Beanpublic Queue peakQueue() {Map<String, Obj ...

最新文章

  1. 独家 | Python利用深度学习进行文本摘要的综合指南(附教程)
  2. Github page + octopress介绍
  3. 转换8421码的程序c语言,16进制数转换成8421BCD编码函数
  4. UIT信息容灾概论(6)
  5. java 返回值 泛型 继承_java泛型类继承问题?
  6. Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)...
  7. 视力差,不要怕!PNAS:服用超长链多不饱和脂肪酸可显著改善视觉和视网膜功能!...
  8. 五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划
  9. Python 字典(Dictionary) items()方法
  10. 更改session bean的JNDI名称
  11. Syslog架设windows日志服务器
  12. 利用 QTcpSocket 实现的进程间通信
  13. 关闭OneNote从浏览器复制粘贴时包含链接的方法
  14. 记录第二次进行的助教培训-评分
  15. Google企业邮箱申请
  16. 03—C语言基本语句(下)
  17. 转摘 房地产知识
  18. Tensorflow 释放内存
  19. 【公众号】公众号网页跳转关注微信公众号
  20. 死链提交为什么不能提交 html文件,手把手教你向百度站长平台提交XML和TXT死链文件...

热门文章

  1. Android 如何使用juv-rtmp-client.jar向Red5服务器发布实时视频数据
  2. 使用PSD设计网页页面
  3. 最好的计划是略有闲余的计划,用于缓冲必然出现的错误与突发事件(转)
  4. 卸载gnome3,投奔Xfce
  5. 关于Javascript 中 setTimeout和setInterval的总结和思考
  6. swift开发:试玩 Apple 网站的 playground
  7. 002.AngularJs调用Restful实现CRUD
  8. win7重装系统时,使用PE工具箱进入系统看到的“C盘变成0.2G,D盘变成48G左右”这是什么回事?...
  9. DKIM标准:对付网络钓鱼的新武器
  10. LeetCode-MySQL-175. 组合两个表