MQ,究竟如何做到削峰填谷?
MQ,很多的应用场景,是消息的订阅发布,是系统上下游的解耦,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要怎么实现缓冲流量,削峰填谷。
站点与服务上下游之间,一般如何通讯?
有两种常见的方式。
一种是“直接调用”,通过RPC框架,上游直接调用下游。
一种是“MQ推送”,上游将消息发给MQ,MQ将消息推送给下游。
这两种方式,能否缓存流量,能否削峰填谷?
不能。不管采用“直接调用”还是“MQ推送”,都有一个缺点,下游消息接收方无法控制到达自己的流量,如果调用方不限速,很有可能把下游压垮。
举个栗子,秒杀业务:
上游:发起下单操作。
下游:完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)。
上游下单业务简单,每秒发起了10000个请求,下游秒杀业务复杂,每秒只能处理2000个请求,很有可能上游不限速的下单,导致下游系统被压垮,引发雪崩。
如何避免下游被压垮呢?
为了避免雪崩,常见的优化方案有两种:
(1)业务上游队列缓冲,限速发送;
(2)业务下游队列缓冲,限速执行;
不管哪种方案,都会引入业务的复杂性,有“缓冲流量”需求的系统都需要加入类似的机制,正所谓“通用痛点统一解决”,需要一个通用的机制解决这个问题。
能否通过MQ实现缓冲流量?
可以,但需要简单修改。
MQ要怎么改,能缓冲流量?
由MQ-server推模式,升级为MQ-client拉模式。
MQ-client根据自己的处理能力,每隔一定时间,或者每次拉取若干条消息,实施流控,达到保护自身的效果。并且这是MQ提供的通用功能,无需上下游修改代码。
如果上游发送流量过大,MQ提供拉模式确实可以起到下游自我保护的作用,会不会导致消息在MQ中堆积?
下游MQ-client拉取消息,消息接收方能够批量获取消息,需要下游消息接收方进行优化,方能够提升整体吞吐量,例如:批量写。
结论
(1)MQ-client提供拉模式,定时或者批量拉取,可以起到削平流量,下游自我保护的作用(MQ需要做的);
(2)要想提升整体吞吐量,需要下游优化,例如批量处理等方式(消息接收方需要做的);
架构优化要整体考虑,需要通用服务和业务方一起优化升级。
真人出镜,欢迎关注+点赞
MQ,究竟如何做到削峰填谷?相关推荐
- 高可用服务 AHAS 在消息队列 MQ 削峰填谷场景下的应用...
在消息队列中,当消费者去消费消息的时候,无论是通过 pull 的方式还是 push 的方式,都可能会出现大批量的消息突刺.如果此时要处理所有消息,很可能会导致系统负载过高,影响稳定性.但其实可能后面几 ...
- 面向削峰填谷的电动汽车多目标优化调度策略——附代码
目录 摘要: 背景介绍: 考虑V2G的电动汽车充放电模型(无非凸约束) 基于负荷实时变化的分时电价模型 充放电优化调度目标函数 (1)综合负荷成本以及电动汽车电池退化损耗成本 (2)综合负荷峰谷差和波 ...
- 高并发系统设计:消息队列的三大作用:削峰填谷、异步处理、模块解耦
削去秒杀场景下的峰值写流量 而在秒杀场景下,高并发的写请求并不是持续的,也不是经常发生的,而只有在秒杀活动开始后的几秒或者十几秒时间内才会存在.为了应对这十几秒的瞬间写高峰,将秒杀请求暂存在消息队列中 ...
- 面向削峰填谷的电动汽车多目标优化调度策略 代码主要实现了考虑电动汽车参与削峰填谷的场景下,电动汽车充放电策略的优化,是一个多目标优化
MATLAB代码:面向削峰填谷的电动汽车多目标优化调度策略 关键词:电动汽车 削峰填谷 多目标 充放电优化 仿真平台:MATLAB YALMIP+CPLEX 主要内容:代码主要实现了考虑电动汽车参与削 ...
- 负荷需求响应模型matlab 通过分时电价方式下的负荷需求响应模型得到负荷响应前后变化情况,可以看到明显呈现削峰填谷的作用
负荷需求响应模型matlab 通过分时电价方式下的负荷需求响应模型得到负荷响应前后变化情况,可以看到明显呈现削峰填谷的作用 YID:6148641310561088爱熬夜的程序猿
- 考虑储能削峰填谷的含DG配电网可靠性评估
考虑储能削峰填谷的含DG配电网可靠性评估. 1.基于序贯蒙特卡洛的配电网可靠性评估: 2.基于序贯蒙特卡洛的含DG配电网可靠性评估: 3.基于区间迭代法优化储能出力进行削峰填谷: 4.基于上述内容进一 ...
- Java曲线之削峰填谷,Sentinel匀速模式(削峰填谷)
一.什么是削峰填谷: 某瞬时来了大流量的请求, 而如果此时要处理所有请求,很可能会导致系统负载过高,影响稳定性.但其实可能后面几秒之内都没有消息投递,若直接把多余的消息丢掉则没有充分利用系统处理消息的 ...
- 数据中心水蓄冷削峰填谷的经济性分析
摘要 结合国内三大城市的全年气象参数及大型数据中心常用的空调系统,分析数据中心在常用工况下,采用水蓄冷进行削峰填谷的经济性,并指出了大型数据中心采用削峰填谷措施具有良好的经济性. 关键词 :削峰填谷 ...
- 充电站储能削峰填谷方案设计测算报告
1.背景 近年来,为推进我国储能技术朝着商业化应用发展,国家出台了多项政策.从现有政策解读可知,虽然国家鼓励在用户侧建设分布式储能系统,但暂未出台针对用户侧电池储能的充放电标杆电价.容量补贴细则.充放 ...
- 设计一个秒杀系统之削峰填谷
为什么需要削峰? 如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始那一秒是一条很 直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点.这样一来,就会导致一 个特别高的 ...
最新文章
- springboot项目启动优化
- AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
- [html] 请说说input的inputmode属性有什么应用场景?
- 字符串的模式匹配--BF算法KMP算法
- 【C语言】shape of you
- layui select 默认选中 vue select 动态选中
- 【matlab】Simulink 微分模块的线性化问题
- nmap工具进行端口扫描
- 怎么登录163vip邮箱,登录方式有哪些?
- npm install报错解决fatal: Unable to look up github.com (port 9418) npm ERR! exited with error code: 128
- 使用ffmpeg的调色板对图片压缩
- 金庸小说人物知识图谱构建——获取共现关系
- K均值算法(继续优化中)
- ubuntu如何杀进程_Ubuntu下各种结束进程的方法
- android 神气插件 自动补全tabnine
- 微软中国正式宣布Win10政府版:专属定制安全功能
- matlab 自适应噪声对消,自适应噪声对消
- A script engine for the specified language can not be created
- 破解Excel工作表加密和 VBA宏加密
- vivado技巧总结