资讯专栏INFORMATION COLUMN

速率限制思路

tianren124 / 1010人阅读

摘要:获得限制配置限制次数秒数。比如每调用次获得限制数据可用调用次数上次调用时间。计算这次可调用次数即再加上两次间隔调用时间调用速率每次调用可调用为每次调用可调用次数减

    public function checkRateLimit()
    {
        $current = time();

        // 获得限制配置 $limit 限制次数,$window秒数。
        // 比如每300s调用1000次
        // $window=300 $limit=1000
        list ($limit, $window) = getRateLimit();
        
        // 获得限制数据 $allowance 可用调用次数,$timestamp上次调用时间。
        list ($allowance, $timestamp) = loadAllowance();

        // 计算这次可调用次数,即$allowance再加上两次间隔调用时间*调用速率
        $allowance += (int) (($current - $timestamp) * $limit / $window);
        
        
        if ($allowance > $limit) {
            $allowance = $limit;
        }

        if ($allowance < 1) {
            //每次调用可调用为0
            saveAllowance(0, $current);
            return false;
        } else {
            //每次调用可调用次数减1
            saveAllowance($allowance - 1, $current);
            return true;
        }
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22414.html

相关文章

  • 使用Envoy 作Sidecar Proxy的微服务模式-5.rate limiter

    摘要:为安装过滤器的侦听器上的每个新请求调用服务,路由表指定应调用服务。使用了令牌桶算法来限流。 本博客是深入研究Envoy Proxy和Istio.io 以及它如何实现更优雅的方式来连接和管理微服务系列文章的一部分。 这是接下来几个部分的想法(将在发布时更新链接): 断路器(第一部分) 重试/超时(第二部分) 分布式跟踪(第三部分) Prometheus的指标收集(第四部分) rate ...

    CocoaChina 评论0 收藏0
  • Redis + Lua 接口限流最佳实践策略

    摘要:算法简介和示例说明业界比较流行的限流算法有漏桶算法和令牌桶算法。判断接口是否限流其实就是看能不能从令牌桶中取出令牌,方法如下判断接口是否被限流更新令牌桶状态到了这里,相信读者已经对令牌桶算法有了一个比较清晰的认识了。 1.应用场景 我们开发的接口服务系统很多都具有抗高并发,保证高可用的特性。现实条件下,随着流量的不断增加,在经费、硬件和资源受限的情况下,我们就需要为我们的系统服务制定有...

    Julylovin 评论0 收藏0
  • spring cloud gateway 之限流篇

    摘要:常见的限流方式,比如适用线程池隔离,超过线程池的负载,走熔断的逻辑。在令牌桶算法中,存在一个桶,用来存放固定数量的令牌。,令牌桶每秒填充平均速率。 转载请标明出处: https://www.fangzhipeng.com本文出自方志朋的博客 在高并发的系统中,往往需要在系统中做限流,一方面是为了防止大量的请求使服务器过载,导致服务不可用,另一方面是为了防止网络攻击。 常见的限流方式,...

    joy968 评论0 收藏0
  • 使用Guava RateLimiter限流以及源码解析

    摘要:令牌桶算法对于很多应用场景来说,除了要求能够限制数据的平均传输速率外,还要求允许某种程度的突发传输。使用以及源码解析开源工具包提供了限流工具类,该类基于令牌桶算法实现流量限制,使用十分方便,而且十分高效。 前言 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时...

    simpleapples 评论0 收藏0
  • 分布式系统关注点——想通关「限流」?只要这一篇

    摘要:之前有了解到哥的一部分读者们没有充分搞清楚限流和熔断的关系。后者表示系统在同一时刻能处理的最大请求数量,比如次的并发。后续限流策略需要设定的具体标准数值就是从这些指标中来的。限流阈值不继续处理请求。 如果这是第二次看到我的文章,欢迎扫描文末二维码订阅我哟~本文长度为2869字,建议阅读8分钟。 可能你在网上看过不少「限流」相关的文章,但是z哥的这篇可能是最全面,最深入浅出的一篇了(容我...

    CollinPeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<