专栏名称: java1234
java知识分享网 www.java1234.com
目录
相关文章推荐
宝鸡市场监管  ·  速览|宝鸡市监每日动态(6月9日) ·  4 小时前  
海西晨报  ·  非法添加硼砂!石狮两家餐饮店被查 ·  昨天  
中国药闻  ·  “价格战”刹车,中国汽车加速! ·  3 天前  
51好读  ›  专栏  ›  java1234

你了解哪些限流算法?

java1234  · 公众号  ·  · 2025-05-24 00:00

正文

请到「今天看啥」查看全文


public TokenBucket ( int capacity, int refillTokens) {
this .capacity = capacity;
this .refillTokens = refillTokens;
this .tokens = new AtomicInteger ( 0 );
this .lastRefillTime = System.currentTimeMillis();
}

// 获取令牌
public boolean tryConsume () {
refillTokensIfNeeded();

if (tokens.get() > 0 ) {
tokens.decrementAndGet();
return true ;
}
return false ;
}

// 每秒重新填充令牌
private void refillTokensIfNeeded () {
long now = System.currentTimeMillis();
int refill = ( int ) ((now - lastRefillTime) / 1000 ) * refillTokens;
if (refill > 0 ) {
tokens.set(Math.min(capacity, tokens.get() + refill));
lastRefillTime = now;
}
}
}

2. 漏桶算法 (Leaky Bucket)

漏桶算法通过固定速率处理请求,不管请求到来的速率如何。当请求进入桶时,桶会以固定的速率泄漏出去。如果桶已满,新请求会被丢弃。它适合处理稳定输出速率的场景。

特点:

  • 稳定的请求处理速率。
  • 突发流量会被丢弃。

Java 实现: public class LeakyBucket {
private final int capacity; // 桶的容量
private







请到「今天看啥」查看全文