美文网首页
动态限流算法

动态限流算法

作者: 七岁能杀猪 | 来源:发表于2018-07-18 11:14 被阅读0次

依赖redis做并发访问限流控制

//限流redisKey前缀
private String REDIS_RATE_LIMIT_PREX = "gw:rl:";

//初始化方法,系统启动时调用
public void init(){
    //删除所有限流Key
    jedisClient.keys(REDIS_RATE_LIMIT_PREX+"*").forEach(key -> jedisClient .delete(key));
    //从数据库中取出所有限流配置
    Map rateLimitMap = rateLimitDao.getAllRateLimit();
    //将限流配置加载进redis
    rateLimitMap.foreach((key,value) -> {if(value >= 0){
        jedisClient.set(REDIS_RATE_LIMIT_PREX+key,value);
    }});
}

//判断请求是否超出限制
public void tryAcquire(String key) throws RateLimitException{
    //原子操作减一
    if(jedisClient.increment(REDIS_RATE_LIMIT_PREX+key,-1) < 0){
        throw new RateLimitException("接口" + key + "处理中请求超过最大限制");
    }
}

//请求处理完之后回调
public void callBack(String key){
    //原子操作加一
    jedisClient.increment(REDIS_RATE_LIMIT_PREX+key,1);
}

/**
  * 动态设置限流请求数
  *
  * @param key 限流key
  * @param limit 限流数量
  */
public void setRate(String key,int limit){
    //查出原来限流数量
    RateLimit ratelimit = rateLimitDao.getByKey(key);
    //计算出增量限流数
    int incrementLimit = limit - rateLimit.getLimit();
    //执行redis原子增量操作
    jedisClient.increment(REDIS_RATE_LIMIT_PREX+key,incrementLimit);
    //修改数据库到新的限流数量
    rateLimit.setLimit(limit);
    rateLimitDao.update(rateLimit);
}

相关文章

  • 动态限流算法

    依赖redis做并发访问限流控制

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

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

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

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

  • 网关限流实例

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

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

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

  • 基础架构 | 限流算法

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

  • 2020-06-09

    目录 代理层限流 容器限流 API 限流 时间窗口 漏桶算法 令牌桶算法 总结 为了保护暴露在公网...

  • Redis+Lua脚本三步实现分布式系统限流

      在分布式系统中,说到限流方案我们一般会使用redis结合限流算法来做,一般的限流算法有令牌桶算法、漏桶算法、固...

  • 分布式架构

    大流量限流/削峰 常见的限流算法 计数器算法池化资源技术的限流就是通过计数器算法来控制全局的总并发数。 令牌桶算法...

  • 限流算法简介及Guava RateLimiter令牌桶限流介绍

    参考 常用4种限流算法介绍及比较 超详细的Guava RateLimiter限流原理解析 限流算法简介 1.计数器...

网友评论

      本文标题:动态限流算法

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