zoukankan      html  css  js  c++  java
  • 服务限流-令牌桶算法demo

    // 因为令牌桶对业务有一定的容忍度
    public class TokenBucket {
    
        private int bucketNums=100;  // 桶的容量
        private int rate=1;          // 流入速度
        private int nowTokens;      //  当前令牌数量
        private long timestamp=getNowTime();     //  时间
    
        private long getNowTime(){
            return System.currentTimeMillis();
        }
    
        private int min(int tokens){
            if(bucketNums > tokens){
                return tokens;
            }else{
                return bucketNums;
            }
        }
    
        public boolean getToken(){
            // 记录来拿令牌的时间
            long nowTime = getNowTime();
            // 添加令牌【判断该有多少个令牌】
            nowTokens = nowTokens + (int)((nowTime - timestamp)*rate);
            // 添加以后的令牌数量与桶的容量那个小
            nowTokens = min(nowTokens);
            System.out.println("当前令牌数量"+nowTokens);
            // 修改拿令牌的时间
            timestamp = nowTime;
            // 判断令牌是否足够
            if(nowTokens < 1){
               return false;
            }else{
                nowTokens -= 1;
                return true;
            }
        }
    }

    服务限流是高可用的一种手段

  • 相关阅读:
    form提交上传图片
    存储过程分页
    表格隔行换色效果
    C#获取本地局域网IP
    sql 拆分字符串并循环取值
    sql日期转换
    HDU 4858
    HDU 1199
    URAL 1306
    Codeforces Round #288 (Div. 2)
  • 原文地址:https://www.cnblogs.com/yintingting/p/9363979.html
Copyright © 2011-2022 走看看