dubbo-TpsLimitFilter

提供者端限流

从调用url中获取接口、方法名、version、serviceKey,根据上面几个参数进行拼接限流key。

限流方式

DefaultTPSLimiter本地维护一个ConcurrenMap,key为限流的key(接口、方法名、version、serviceKey),value为StatItem对象,

StatItem中定义了限流基础信息,rate、interval、lastResetTime、token(AtomicInteger),

内部对token原子对象进行增减已达到限流作用。

public boolean isAllowable() {
    long now = System.currentTimeMillis();
    if (now > lastResetTime.get() + interval) {
        token.set(rate);
        lastResetTime.set(now);
    }

    return token.decrementAndGet() >= 0;
}

 

posted @ 2024-05-07 10:25  使用D  阅读(1)  评论(0编辑  收藏  举报