Guava RateLimiter 如何解决高并发场景下的限流问题?
令牌桶算法,要想通过限流器,必须拿到令牌。
1,令牌以固定的速率添加到令牌桶中,假设限流的速率是r/秒,则令牌每1/r秒会添加一个;
2,假设令牌桶的容量是b,如果令牌头桶已满,则新的令牌会被丢弃;
3,请求能够通过限流器的前提是令牌桶中有令牌。
限流的速率r,指的就是每隔1/r秒都会匀速产生一个令牌;请求只有在拿到令牌的情况下,才能通过限流器。而令牌桶的容量b,表示令牌可以一直匀速生产直到数量为b截止,超过容量则会丢弃。但是也可以支持突发流量,一次性消费b的令牌,然后再匀速生产。
show me code:


网友评论