MQ的一个典型应用场景是缓冲流量,削峰填谷。

问:站点与服务,服务与服务上下游之间,一般如何通讯?
答:有两种常见的方式

一种是“直接调用”,通过RPC框架,上游直接调用下游。

在某些业务场景之下,可以采用“MQ推送”,上游将消息发给MQ,MQ将消息推送给下游。

问:为什么会有流量冲击?
答:不管采用“直接调用”还是“MQ推送”,都有一个缺点,下游消息接收方无法控制到达自己的流量,如果调用方不限速,很有可能把下游压垮。

举个栗子,秒杀业务:
上游发起下单操作
下游完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)

上游下单业务简单,每秒发起了10000个请求,下游秒杀业务复杂,每秒只能处理2000个请求,很有可能上游不限速的下单,导致下游系统被压垮,引发雪崩。

为了避免雪崩,常见的优化方案有两种:
1)业务上游队列缓冲,限速发送
2)业务下游队列缓冲,限速执行

不管哪种方案,都会引入业务的复杂性,有“缓冲流量”需求的系统都需要加入类似的机制,正所谓“通用痛点统一解决”,需要一个通用的机制解决这个问题。

问:如何缓冲流量?
答:明明中间有了MQ,并且MQ有消息落地的机制,为何不能利用MQ来做缓冲呢?显然是可以的。

问:MQ怎么改能缓冲流量?
答:由MQ-server推模式,升级为MQ-client拉模式。

MQ-client根据自己的处理能力,每隔一定时间,或者每次拉取若干条消息,实施流控,达到保护自身的效果。并且这是MQ提供的通用功能,无需上下游修改代码。

问:如果上游发送流量过大,MQ提供拉模式确实可以起到下游自我保护的作用,会不会导致消息在MQ中堆积?
答:下游MQ-client拉取消息,消息接收方能够批量获取消息,需要下游消息接收方进行优化,方能够提升整体吞吐量,例如:批量写。

结论
1)MQ-client提供拉模式,定时或者批量拉取,可以起到削平流量,下游自我保护的作用(MQ需要做的)
2)要想提升整体吞吐量,需要下游优化,例如批量处理等方式(消息接收方需要做的)

ActiveMQ实现削峰填谷相关推荐

  1. 高可用服务 AHAS 在消息队列 MQ 削峰填谷场景下的应用...

    在消息队列中,当消费者去消费消息的时候,无论是通过 pull 的方式还是 push 的方式,都可能会出现大批量的消息突刺.如果此时要处理所有消息,很可能会导致系统负载过高,影响稳定性.但其实可能后面几 ...

  2. 面向削峰填谷的电动汽车多目标优化调度策略——附代码

    目录 摘要: 背景介绍: 考虑V2G的电动汽车充放电模型(无非凸约束) 基于负荷实时变化的分时电价模型 充放电优化调度目标函数 (1)综合负荷成本以及电动汽车电池退化损耗成本 (2)综合负荷峰谷差和波 ...

  3. 高并发系统设计:消息队列的三大作用:削峰填谷、异步处理、模块解耦

    削去秒杀场景下的峰值写流量 而在秒杀场景下,高并发的写请求并不是持续的,也不是经常发生的,而只有在秒杀活动开始后的几秒或者十几秒时间内才会存在.为了应对这十几秒的瞬间写高峰,将秒杀请求暂存在消息队列中 ...

  4. 面向削峰填谷的电动汽车多目标优化调度策略 代码主要实现了考虑电动汽车参与削峰填谷的场景下,电动汽车充放电策略的优化,是一个多目标优化

    MATLAB代码:面向削峰填谷的电动汽车多目标优化调度策略 关键词:电动汽车 削峰填谷 多目标 充放电优化 仿真平台:MATLAB YALMIP+CPLEX 主要内容:代码主要实现了考虑电动汽车参与削 ...

  5. 负荷需求响应模型matlab 通过分时电价方式下的负荷需求响应模型得到负荷响应前后变化情况,可以看到明显呈现削峰填谷的作用

    负荷需求响应模型matlab 通过分时电价方式下的负荷需求响应模型得到负荷响应前后变化情况,可以看到明显呈现削峰填谷的作用 YID:6148641310561088爱熬夜的程序猿

  6. 考虑储能削峰填谷的含DG配电网可靠性评估

    考虑储能削峰填谷的含DG配电网可靠性评估. 1.基于序贯蒙特卡洛的配电网可靠性评估: 2.基于序贯蒙特卡洛的含DG配电网可靠性评估: 3.基于区间迭代法优化储能出力进行削峰填谷: 4.基于上述内容进一 ...

  7. Java曲线之削峰填谷,Sentinel匀速模式(削峰填谷)

    一.什么是削峰填谷: 某瞬时来了大流量的请求, 而如果此时要处理所有请求,很可能会导致系统负载过高,影响稳定性.但其实可能后面几秒之内都没有消息投递,若直接把多余的消息丢掉则没有充分利用系统处理消息的 ...

  8. 数据中心水蓄冷削峰填谷的经济性分析

    摘要 结合国内三大城市的全年气象参数及大型数据中心常用的空调系统,分析数据中心在常用工况下,采用水蓄冷进行削峰填谷的经济性,并指出了大型数据中心采用削峰填谷措施具有良好的经济性. 关键词 :削峰填谷 ...

  9. 充电站储能削峰填谷方案设计测算报告

    1.背景 近年来,为推进我国储能技术朝着商业化应用发展,国家出台了多项政策.从现有政策解读可知,虽然国家鼓励在用户侧建设分布式储能系统,但暂未出台针对用户侧电池储能的充放电标杆电价.容量补贴细则.充放 ...

  10. 设计一个秒杀系统之削峰填谷

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

最新文章

  1. centos6.5安装zabbix3.4
  2. linux中shell条件判断if中的-a到-z的意思
  3. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第9章-二阶连续时间时延多智能体系统加权一致性
  4. mysql自动异地备份脚本_MYSQL数据库自动本地/异地双备份/MYSQL增量备份
  5. 爬虫学习笔记(八)—— Scrapy框架(三):CrawSpider模板
  6. 【Sort List】cpp
  7. IDE日志分析方法pt。 1个
  8. 异步api_如何设计无服务器异步API
  9. MyEclipse2015 Web项目转Maven项目
  10. resin4 发布war包
  11. 封装的ini文件类。保存为unicode的。解决delphi xe的TiniFile保存后不为unicode的问题...
  12. Centos6.7下安装python连接mysql环境故障解决
  13. C语言清屏函数和光标隐藏函数
  14. Ubuntu挑战绿坝
  15. python分词基础
  16. 数据结构之树(3)——二叉平衡树(AVL)
  17. Vagrant-文件夹共享
  18. [- 多媒体 -] OpenGLES3.0 接入视频实现特效 - 引言
  19. 普洛帝表面清洁度检测仪在液压缸行业的简单应用
  20. win10蓝牙故障无法正常使用的有效解决方法

热门文章

  1. 推荐系列(四):矩阵分解|Matrix Factorization
  2. 自己写的一个AI输入滤波函数
  3. 自建CA 颁发证书
  4. 反垃圾邮件技术介绍和部署思路
  5. 百度大脑手写文字识别使用攻略
  6. 用百度大脑EasyDL平台轻松玩转AI
  7. 黑苹果鼠标不动_MacOS系统:解决黑果睡眠唤醒后假死问题(如键盘鼠标无反应等)...
  8. php输出26个大小写英文字母
  9. 51Talk-Level 7 Unit 1 L2
  10. 保健操对颈椎病有辅助治疗。