[分布式系统] 高并发系统限流算法

当请求流过大时,可能导致服务接口不可用或者整个服务系统崩溃。

一般解决办法为引流或者限流,常用的限流算法包括漏桶和令牌桶算法。

1.漏桶算法

即将请求缓存在桶中,桶底限制一个最大速率来对接口进行请求。

漏桶算法可以限制请求的平均数量,但当需要允许某些突发传输情况时可能不合适。

2.令牌桶算法

系统以恒定速率向桶中放入令牌,接受到的请求需要从桶中取得令牌以得到服务,否则会拒绝服务。

Google开源的Guava提供的限流工具类RateLimiter即基于令牌桶算法进行限流。

3.适用场景

令牌桶算法适用于自己的服务,即自己能够预留一定余量来应对部分突发流量。

漏桶算法则用在请求第三方调用库,对方有严格的速率限制时。

posted @ 2021-10-26 09:43  Cheung-10  阅读(1)  评论(0)    收藏  举报