nginx限流算法

作者: dark68 | 来源:发表于2021-06-03 08:24 被阅读0次

1 限流算法

1.令牌桶


图片来源于网络,侵权删

算法思想:
*令牌以固定速率产生,并缓存到令牌桶中;
*令牌桶放满时,多余的令牌被丢弃;
*请求要消耗等比例的令牌才能被处理;
*令牌不够时,请求被缓存。
2.漏桶


图片来源于网络,侵权删
算法思想:
*水(请求)从上方倒入水桶,从水桶下方流出(被处理);

*来不及流出的水存在水桶中(缓冲),以固定速率流出;
*水桶满后水溢出(丢弃)。
*这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。
总结:
相比漏桶算法,令牌桶算法不同之处在于它不但有一只“桶”,还有个队列,这个桶是用来存放令牌的,队列才是用来存放请求的。 从作用上来说,漏桶和令牌桶算法最明显的区别就是是否允许突发流量(burst)的处理,漏桶算法能够强行限制数据的实时传输(处理)速率,对突发流量不做额处理;而令牌桶算法能够在限制数据的平均传输速率的同时允许某种程度的突发传输。

2 Nginx限速模块

Nginx按请求速率限速模块使用的是漏桶算法,即能够强行保证请求的实时处理速度不会超过设置的阈值。
Nginx主要有两种限速方式:按连接数限速(ngx_http_limit_conn_module)、按请求速率限速(ngx_http_limit_req_module)。

用php实现

/*** 漏桶的大小是固定的,处理速度也是固定的,但是请求的速率的不固定的。在突发的情况下,会丢弃很多请。** */ 
function LeackBucket() { 
    $redis = new \Redis(); 
    $redis->connect('127.0.0.1', 6379); 
    //桶的容量 
    $maxCount = 1000; 
    //时间 
    $interval = 10; 
    //每分钟流出的数量 
    $speed = 20; 
    //用户 
    $time = $redis->time(); 
    $key = $time[0].$time[1]; 
    //时间判断 
    $check = $redis->exists('outCount'); 
    if ($check){ 
        //出桶的速率的请求数量 
        $outCount = $redis->incr('outCount'); 
        if ($outCount<=$speed){ 
            //业务处理 
            echo "规定的时间内只能访问20次 $outCount"; 
        } else { 
            echo "你已经超过每分钟的访问 $outCount"; 
        } 
    } else { 
        $outCount = $redis->incr('outCount'); 
        $redis->Expire('outCount',$interval); 
        echo "时间过了";
        exit; 
    } 
}

相关文章

  • 【NGINX入门】11.Nginx限流算法及配置实践

    1. 摘要 本文介绍Nginx限流算法及限流配置实践及测试验证。 2. 限流算法 高并发系统有三把利器:缓存、降级...

  • Nginx限流算法及配置实践

    1. 摘要 本文介绍Nginx限流算法及限流配置实践及测试验证。 2. 限流算法 高并发系统有三把利器:缓存、降级...

  • nginx限流算法

    1 限流算法 1.令牌桶 算法思想:*令牌以固定速率产生,并缓存到令牌桶中;*令牌桶放满时,多余的令牌被丢弃;*请...

  • Nginx限流

    Nginx限流模块包含 连接数限流模块 ngx_http_limit_conn_module 漏桶算法实现的请求限...

  • 限流框架系列之常见限流算法

    四种常见的限流算法 固定时间窗口限流算法 滑动时间窗口限流算法 令牌桶限流算法 漏桶限流算法 算法比较 算法确定参...

  • 高并发下的Nginx实用配置 - 限流和黑白名单

    1. 限流算法 漏桶算法 令牌桶算法 更多限流算法相关知识,请查看【单机限流 - 限流算法及隔离策略】[https...

  • 秒杀系统设计思路

    一、限流与降级 客户端限流 按钮置灰 js控制每秒只能发送一个请求 站点层限流 1. Nginx限流 Nginx官...

  • 网关限流实例

    描述 限流是指将处理请求数限定在单位时间的阀值内。常用的限流算法固定时间窗口限流算法和滑动时间窗口限流算法。固定时...

  • 高并发环境下的限流策略

    本文将从以下几个方面分析限流策略: 什么是限流限流算法限流算法的应用 什么是限流 在开发高并发系统时,有很多手段来...

  • 基础架构 | 限流算法

    限流算法 令牌桶算法 漏桶算法

网友评论

    本文标题:nginx限流算法

    本文链接:https://www.haomeiwen.com/subject/ryxusltx.html