概述
1. 常用限流算法
1.1 计数器算法
统计一段时间内允许通过的请求数。比如 qps为100,即1s内允许通过的请求数100,每来一个请求计数器加1,超过100的请求拒绝、时间过1s后计数器清0,重新计数。这样限流比较暴力,如果前10ms 来了100个请求,那剩下的990ms只能眼睁睁看着请求被过滤掉,并不能平滑处理这些请求,容易出现常说的“突刺现象”。
计数器算法流程图如下
1.2漏桶算法
请求到来时先放入漏桶中,漏桶再以匀速放行请求,如果进来请求超出了漏桶的容量时,则拒绝请求,这样做虽然能够避免“突刺现象”,但是过于平滑并不能应对短时的突发流量。
具体实现可采取将到来的请求放入队列中,再另起线程从队列中匀速拿出请求放行。
1.3令牌桶算法
假设有个桶,并且会以一定速率往桶中投放令牌,每次请求来时都要去桶中拿令牌,如果拿到则放行,拿不到则进行等待直至拿到令牌为止,比如以每秒100的速度往桶中投放令牌,令牌桶初始化一秒过后桶内有100个令牌,如果大量请求来时会立即消耗完100个令牌,其余请求进行等待,最终以匀速方式放行这些请求。此算法的好处在于既能应对短暂瞬时流量,又可以平滑处理请求。
令牌桶限流流程图
最后
以上就是精明花瓣为你收集整理的java 网关限流_网关限流总结的全部内容,希望文章能够帮你解决java 网关限流_网关限流总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复