首页 网站首页 商业信息 限流 查看内容

2020必须会的限流算法:漏斗算法的设计与实现

全网营销 2023-1-18 15:04 6875人围观 限流

什么是漏斗算法?

漏斗算法望文生义采用一个漏斗来对流量停止限制。

由于漏斗下面有孔,所以会按时的漏水下去,然后我们可以将流量设想为从上边落入漏斗的水。

这样就会有两种情况,假如流量的注入漏斗的速度比漏斗的漏水的速度慢,漏斗就会处于一个空漏斗的状态,也就是没有超越负荷的状态。

第二种情况就是,假如流量注入漏斗的速度比漏斗快,那末漏斗就会渐渐的超越最大的容量,对于溢出的流量,漏斗会采用拒绝的方式,避免流量继续进入。




利用 Java 实现

package info.xiantang.limiter;

class FunnelRateLimiter {

// 容量
private final int capacity;
// 每毫秒漏水的速度
private final double leakingRate;
// 漏斗没有被占满的体积
private int emptyCapacity;
// 上次漏水的时候
private long lastLeakingTime = System.currentTimeMillis();


FunnelRateLimiter(int capacity, double leakingRate) {
this.capacity = capacity;
this.leakingRate = leakingRate;
// 初始化为一个空的漏斗
this.emptyCapacity = capacity;
}

private void makeSpace() {
long currentTimeMillis = System.currentTimeMillis();
// 计较离上次漏斗的时候
long gap = currentTimeMillis - lastLeakingTime;
// 计较离上次漏斗的时候到现在遗漏的水
double deltaQuota = (int) gap * leakingRate;
// 更新上次漏的水
lastLeakingTime = currentTimeMillis;
// 间隔时候太长,整数数字过大溢出
if (deltaQuota < 0) {
emptyCapacity = capacity;
}
// 更新腾出的空间
emptyCapacity += deltaQuota;
// 超越最大限制 复原
if (emptyCapacity > capacity) {
emptyCapacity = capacity;
}

}

boolean isActionAllowed(int quota) {
makeSpace();
// 假如腾出的空间大于需要的空间
if (emptyCapacity >= quota) {
// 给腾出空间注入流量
emptyCapacity -= quota;
return true;
}
return false;
}
}



我们这边界说了一个 empty capacity 的容量 暗示腾出的空间。也可以经过以残剩的水来计较水占用的空间,这是两个角度来计较。可是我们利用的是empty capacity。

对于新来的流量,我们要判定能否Empty Capacity 可以包容这些流量,假如可以包容,就削减Empty Capacity的巨细,不能的话就拒绝。

与令牌桶的区分

  • 令牌桶是按时放入令牌,漏桶是按时流数据
  • 朴实的令牌桶实现是对于溢出的请求计较出可以处置的时候停止阻塞,而漏桶则是会将溢出的流量拒绝。

作者 Github:

原文地址:

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评
  • 狭缝求生室 2023-1-18 15:06
    如果漏斗容量10w,后端能力11/s,设置漏斗为10/s,系统长时间没收到请求漏斗为空,这时候来了9w请求
    我觉得这只是一个倒扣表示的令牌罢了
  • 郭光庆 2023-1-18 15:05
    这段是不是写错了

    if (deltaQuota &lt; 0) {
                emptyCapacity = capacity;
            }
            // 更新腾出的空间
            emptyCapacity += deltaQuota;

相关推荐

平台大洗牌,被限流该怎么办?

平台大洗牌,被限流该怎么办?

最近平台大洗牌,评论区问最多的就是,如果被限流了该怎么办,今天就详细的解答这个问

降级-熔断-限流-傻傻分不清楚

降级-熔断-限流-傻傻分不清楚

1. 熔断1.1 熔断来源我们家用电闸上都有保险丝模块,当电压出现短路问题时,自动跳闸

血泪教训:小红书被限流怎么办?怎么恢复正常?

血泪教训:小红书被限流怎么办?怎么恢复正常?

很多新手小白刚开始运营小红书的时候,多半会经历很长一段数据低迷的情况。一方面,是

小红书无故被限流了??这里有你不知道的小红书限流小 ...

小红书无故被限流了??这里有你不知道的小红书限流小 ...

自从有消息爆出小红书内测直播功能之后,小红书成为了当下最受关注的平台之一。而正在

《抖音限流/降权/违规词手册》

《抖音限流/降权/违规词手册》

为了让更多小伙伴能够自己找到并解决【抖音限流】问题,今天为大家梳理一份抖音「限流

闲鱼被限流了,教你恢复元气

闲鱼被限流了,教你恢复元气

作者:咸鱼暴增系统很多朋友在使用小闲的时候都有可能碰到没有流量了,或者流量降低了

司马南为何被限流?多篇文章和视频下架!

司马南为何被限流?多篇文章和视频下架!

连续两天,灵灵看世界针对司马南污蔑、挑衅张文宏和陶斯亮提出质疑和批评,结果是:司

一文搞清楚限流、熔断和降级

一文搞清楚限流、熔断和降级

限流是对系统的被请求频率以及内部的部分功能的执行频率加以限制,防止因突发的流量激

作品播放量低,账号是不是被限流了,该怎么办呢?

作品播放量低,账号是不是被限流了,该怎么办呢?

前天我新发布的视频的播放量创历史了,有史以来最低的,你是不是也遇到过这样的情况?

一招判断自己的微头条是否被限流,被限流后,到底该怎么解决呢?

一招判断自己的微头条是否被限流,被限流后,到底该怎么解决呢?

对于一个自媒体创作者来说,辛辛苦苦创作的内容,发表后阅读量寥寥无几,那种心痛只有

阿里巴巴开源限流系统 Sentinel 全解析

阿里巴巴开源限流系统 Sentinel 全解析

今年下半年阿里开源了自研的限流系统 Sentinel,官方对 Sentinel 的介绍中用到了一系

展现量少怀疑被限流,打开它让你一看究竟,稍做修改也许爆了

展现量少怀疑被限流,打开它让你一看究竟,稍做修改也许爆了

不少友友顽强坚持,笔耕不辍,作品不少,但展现量不高,毕竟展现量才是根本,没有展现

文章被限流了怎么办?如何采取行动进行补救?我以昨天的文章为例

文章被限流了怎么办?如何采取行动进行补救?我以昨天的文章为例

文章被限流,是大家一直以来热议的一个话题,往往也只能表示无奈,没有任何办法,毕竟

第一批蹦迪选手已经“阳康”?武汉夜店开始限流了。

第一批蹦迪选手已经“阳康”?武汉夜店开始限流了。

月初我们找了22位知名的夜店老板做了一期专访,话题是关于“放开后夜店生意变好了吗?

如何判断账号是否被限流?没流量?赶紧查看这个地方

如何判断账号是否被限流?没流量?赶紧查看这个地方

只要查看一个地方,就可以知道你的账号是不是被限流了,好多朋友播放量突然间大幅度降

头条被限流可能是因为这几个原因,浅谈一下头条推荐机制

头条被限流可能是因为这几个原因,浅谈一下头条推荐机制

前段时间写了一篇文章刚发第一天没什么流量,突然第二天流量暴涨了,随之问题也跟着来

一篇文章说清楚头条“限流”那些事儿

一篇文章说清楚头条“限流”那些事儿

相信很多创作者都遇到辛苦写的微头条没有展现,也没有阅读量的情况,有些创作者知道这

抖音限流原因归纳总结与破解之道

抖音限流原因归纳总结与破解之道

2022年随着5G的来临,短视频作为目前最高阶最有效的信息展现方式,风口期必将持续不断

5种限流算法,7种限流方式,挡住突发流量?

5种限流算法,7种限流方式,挡住突发流量?

最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服

主流的四种限流策略,我都可以通过redis实现

主流的四种限流策略,我都可以通过redis实现

引言在web开发中功能是基石,除了功能以外运维和防护就是重头戏了。因为在网站运行期

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信