MQ实战-削峰填谷

article/2025/9/15 11:56:21

对于突然到来的大量请求,您可以配置流控规则,以稳定的速度逐步处理这些请求,起到“削峰填谷”的效果,从而避免流量突刺造成系统负载过高。

1、场景

请求的到来,往往是没有规律的。

例如,某应用的处理能力是每秒 10 个请求。在某一秒,突然到来了 30 个请求,而接下来两秒,都没有请求到达。在这种情况下,如果直接拒绝 20 个请求,应用在接下来的两秒就会空闲。所以,需要把请求突刺均摊到一段时间内,让系统负载保持在请求处理水位之内,同时尽可能地处理更多请求,从而起到“削峰填谷”的效果。

 

上图中,红色的部分代表超出消息处理能力的部分。观察得出,消息突刺往往都是瞬时的、不规律的,其后一段时间系统往往都会有空闲资源。把红色的那部分消息平摊到后面空闲时去处理,这样既可以保证系统负载处在一个稳定的水位,又可以尽可能地处理更多消息。通过配置流控规则,可以达到消息匀速处理的效果。

 

2、分析问答

  1、问:站点与服务,服务与服务上下游之间,一般如何通讯?

        答:有两种常见的方式

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

     

       还有一种,在某些业务场景之下(具体哪些业务场景,见《到底什么时候该使用MQ?》),可以采用“MQ推送”,上游将消息发给MQ,MQ将消息推送给下游。

        

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


   2、问:以上两种为什么会有流量冲击?

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

      举个栗子,秒杀业务:

      上游发起高并发的下单操作。

      下游完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)。

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


     3、问:MQ怎么改能缓冲流量?

         答:由MQ-server推模式,升级为MQ-client拉模式。

       

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

     kafka代码实例:

   

    4、问:如果上游发送流量过大,MQ提供拉模式确实可以起到下游自我保护的作用,会不会导致消息在MQ中堆积?

         答:下游MQ-client拉取消息,消息接收方能够批量获取消息,需要下游消息接收方进行优化,方能够提升整体吞吐量,例如:批量写。

  3、结论

      1)MQ-client提供拉模式,定时或者批量拉取,可以起到削平流量,下游自我保护的作用(MQ需要做的)

      2)要想提升整体吞吐量,需要下游优化,例如批量处理等方式(消息接收方需要做的)


http://chatgpt.dhexx.cn/article/rBTQv9d9.shtml

相关文章

MQ,如何做到削峰填谷

问:为什么会有本文? 答:上一篇文章《到底什么时候该使用MQ?》引起了广泛的讨论,有朋友回复说,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要实现…

MATLAB代码:面向削峰填谷的电动汽车多目标优化调度策略

MATLAB代码:面向削峰填谷的电动汽车多目标优化调度策略 关键词:电动汽车 削峰填谷 多目标 充放电优化 参考文档:自己整理的说明文档,公式、约束、数据齐全 仿真平台:MATLAB YALMIPCPLEX 优势:代码注释详实&…

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

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

01-初探MQ-MQ的三大使用场景:应用解耦、异步提速、削峰填谷

初探MQ 什么是MQ 关于MQ的概念,想必都不陌生,MQ是 Message Queue(消息队列) 的缩写,所以他首先是一个队列,有先进先出的特性,其次是一个存放消息的队列。常用在分布式系统中进行通信。 为什么…

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

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

电力系统的削峰填谷

削峰填谷(Peak cut)是调整用电负荷的一种措施。根据不同用户的用电规律,合理地、有计划地安排和组织各类用户的用电时间。以降低负荷高峰,填补负荷低谷。减小电网负荷峰谷差,使发电、用电趋于平衡。 因电厂是全天候持续…

t分布概率密度函数的推导

推导过程整理自https://www.bilibili.com/video/BV1s54y1S7Ji。 文章目录 预备知识 Γ \Gamma Γ函数(伽马函数)标准正态分布卡方分布 推导目标引理:连续型随机变量商的分布推导过程先计算 W Y / n W\sqrt{Y/n} WY/n ​的概率密度函数 p W (…

求概率密度函数方法之单调性定理

例题: 适用条件:随机变量Y关于X是单调的,也就是说随机变量Y与X存在一一映射的关系。 解法好处:计算量小,步骤简单(1,将变量替换,然后带入原式。2,改变积分对象&#xf…

概率密度估计方法-核密度估计和高斯混合分布

1、概率密度估计方法 概率密度估计方法用于估计一组数据集的概率密度分布,分为参数估计方法和非参数估计方法。 参数估计方法 假定样本集符合某一概率分布,然后根据样本集拟合该分布中的参数,例如:似然估计,混合高斯等…

概率密度函数及其在信号方面的简单理解(上)概率密度函数

概率密度函数及其在信号方面的简单理解(上)概率密度函数 上篇 概率密度函数 1 离散随机变量与连续型随机变量2 离散随机变量的分布函数 2.1 概率函数2.2 概率分布2.3 概率分布函数(累积分布函数!) 3 连续型随机变量的概…

概率密度函数估计

概率密度函数估计 前导知识:【非参数估计—直方图法、Kn近邻估计法、Parzen窗法】 1. 最大似然估计 导包: import numpy as np from numpy.linalg import cholesky import matplotlib.pyplot as plt import random # 用于随机抽样设置随机样本数&…

python实现概率密度匹配法

Python实现系列: Python实现贝叶斯优化算法 python实现t-SNE降维 Python实现12种降维算法 Python实现11 种特征选择策略 Python实现10种聚类算法 Python实现8种相似度度量 python实现反距离权重插值(IDW) Python实现12种概率分布 python实现快速傅里叶变换 python实…

威布尔概率密度分布

目录 相同的平均风速,如果概率密度分布不同,风机的发电量也会完全不同。 威布尔分布是泊松三类分布的特殊形式。概率密度函数 f ( v ) f(v) f(v)为风速 v ( v ≥ 0 ) v(v≥0) v(v≥0)出现的概率,形式如下: f ( v ) k a ( v a ) …

java正态分布的概率密度函数_正态分布概率密度函数

http://www.360doc.com/content/17/0306/13/32342759_634411464.shtml什么是正态分布 正态概率分布是连续型随机变量概率分布中最重要的形式,它在实践中有着广泛的应用。在生活中有许多现象的分布都服从正态分布,如人的身高、体重、智商分数;某种产品的尺寸和质量;降雨量;…

绘制概率密度图

1、内容简介 略 443可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 clc close all clear miu 0.5; delta 0.5; r 0.1:0.1:10; p1 1/sqrt(2*pi)/miu./r.*exp(-(log(r)-miu).^2/2/delta^2); delta 1; p2 1/sqrt(2*pi)/miu./r.*exp(-(log(r)-miu).^2/2/delta^2); fig…

概率密度函数曲线及绘制

目录 前言概率密度函数曲线几类经典的概率密度函数两种绘制密度曲线的方法参考文献 前言 很多数据科学家在做回归模型评估的时候,不仅会去计算模型拟合优度R2,平均绝对误差还会去看测试集的每个样本偏差的分布情况,这个时候就需要用到概率密…

概率密度图

1、 导入库 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns2、 概率密度图–kdeplot的应用 第一个参数:要绘制的图像数据 第二个参数:shade 是否填充颜色# 获得数据 dataSet pd.read_c…

MATLAB 中RMSE和MAPE的计算方法

RMSE:均方根误差 matlab计算方法: rmse sqrt(mean((YPred-Obverval).^2)); MAPE:平均百分比误差 matlab计算方法: meap mean(abs((observed - predicted)./observed))*100;

均方根误差RMSE(Root Mean Square Error)

MSE(Mean Square Error)均方误差 是真实值与预测值的插值的平方然后求和平均。 RMSE(Root Mean Square Error)均方根误差 均方根误差是预测值与真实值偏差的平方与观测次数n比值的平方根。 衡量的是预测值与真实值之间的偏差&a…

Google Earth Engine(GEE)——计算RMSE

要在 的属性中聚合数据FeatureCollection,请使用 featureCollection.reduceColumns(). 例如,要检查 watersheds 中的区域属性FeatureCollection,此代码计算相对于地球引擎计算区域的均方根误差 (RMSE): 代码: 难点是很多同学不知道如何进行RMSE的函数计算,首先就是求差…