常见手段:缓存(减少对数据库读写操作),降级(非核心链路),限流;

限流的常用处理手段有:计数器、滑动窗口、漏桶、令牌。

计数器:简单算法,多用在接口层面。原理:在一段时间内,进行计数,与阀值进行比较,到了时间临界点,将计数器清0。

但如果面对时间临界点发出大量访问,计数器则不好使用。

如何应对大流量?

滑动窗口:可避免时间临界点问题,但窗口大小影响其精度。

漏桶思想:有一个固定的桶,进水的速率是不确定的,但是出水的速率是恒定的,当水满的时候是会溢出的。对于瞬时大流量,不适用。

如何应对大流量?

令牌桶:如果桶未满,则去请求拿令牌,如拿到则处理,如拿不到则拒绝。避免系统挂掉。

如何应对大流量?

典型:Guava RateLimiter

相关文章: