
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
限流是我们在做服务抗压管理的时候会经常用到的一个编程技术,而本文我们就通过案例分析来简单了解一下,服务限流常用方法都有哪些。
1、计数器限流(固定窗口限流)
这个算法简单实用,基本可以满足很多业务场景的需要
大致原理是这样的,有一个全局的计数器,初始值为0,每次请求进来,计数器+1,然后再处理,如果计数器超过100,则不再处理请求,直接返回。
同时我们启动一个定时的线程,每过1分钟,就重置计数器为0;
2、滑动窗口
为了解决传统计数器限流的弊端,有人提出了滑动窗口的概念。所谓的滑动窗口,是指不存在固定的起止、结束的时间点。
滑动窗口如何实现呢?
我们可以使用一个HashMap或者干脆使用一个数组,然后统计每个时间单位内的请求,当判断是否限流时,只要统计时间窗内的请求次数是否满足即可。
同时map或者是数组我们并不需要无限大,我们可以反复利用其中已经过期的位置。另外滑动窗口的单位时间越小,整体的限流也就会越精准。
3、漏桶算法
滑动窗口的结尾我们有说时间单位越小,那么就越精准平滑,可是我们并不能把时间单位搞到无限小,或者说尽可能小的时候就出现偏差,比如1ns,但是可能你刚计算完限流后,已经到下一个时间单位了
为了解决这种问题,有人提出了漏桶算法。
4、令牌桶算法
漏桶算法会让请求更加平滑,但是当有突发请求冲击时,并且我们的下游处理速度又比较快(或者是使用固定频率)来处理,这样我们没有办法很好的控制请求的处理速率。
如果你设置固定频率,当某个时段请求冲击比较大,而我们也应该满足时,显然无法满足。当放开请求频率,又可能因为下游处理速度太快,对机器的整体性能造成冲击,而且我们又无法控制。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。