java曲线平滑算法_限流算法小窥

本文探讨了Java限流算法,包括简单窗口、滑动窗口、滑动日志、平滑度问题,以及漏桶和令牌桶算法。Sentinel通过Cumulative moving average实现流控,平衡精确度、平滑度和计算复杂度。文章指出限流算法的技术矛盾,并提出了技术矛盾的解决方法论。
摘要由CSDN通过智能技术生成

前言

系统的可靠性,是用户使用的信心所在。在资源有限的情况下,面对不断增长的流量,如何保证系统依然处于一个正常负载的状态呢?限流。限流问题可以追溯到网络通信中的流量整形(Traffic Shaping)和流量控制(Traffic Policing)。下面一起小窥一下有哪些精彩的算法。

简单窗口

ebb2b5080da01b8923fb6b90629aea19.png

a97597dcdd1f4127aaddcb2f5f259ff5.png

流量曲线

e8c041719a9e352f9b175fc284e79416.png

优点:实现简单

缺点:精确度不够,临界情况下会qps会超出实际的值。

滑动窗口

简单来看,简单窗口精确度不够的原因在于,窗口移动的步伐太大,没有关注到之前窗口的流量。导致漏掉了一些统计窗口,所以我们可以慢慢的移动,让过去的流量被关注到,避免漏掉统计窗口。

68fd6876271d044f711a636bba62c49f.png

但是这样就解决问题了吗?它只是概率性的缓解了问题。

481494cf7e2d56d8c6a900c7c0d19d31.png

相邻的窗口之间确实没有了突发流量,但是只要是有滑动距离且滑动距离内可以进入多个流量,就会像上图所

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值