美文网首页
单机限流算法笔记

单机限流算法笔记

作者: 瓢鳍小虾虎 | 来源:发表于2021-01-17 21:03 被阅读0次

限流算法为了防止问题:并发过高导致内存吃不消,系统崩溃。

计数器

计数器算法的特点是把系统运行时间划分为一个一个时间段,每个时间段通过计数器限制请求量,超过了则放弃掉。

这种算法适合长时间高并发访问的情况,但是互联网环境很多时候有点类似潮汐,某些时间点会出现大量并发访问,其他时间则访问很少。这会造成临界问题。

滑动窗口

滑动窗口的特点依然是先把时间划分为多个小段,然后使用一个时间窗口来扫描时间,请求数没满就加入到队列中,满了则抛弃。这个算法看似和计数器差不多,如果时间段设定合理,倒是可以缓解洪峰带来的损失。区间越小,算法需要的空间容量越大。

漏斗

这个算法有2个部分,一个是容器,用来存放“水滴”,另一个就是漏斗口,用来消费“水滴”,关键在于漏斗口通过控制能处理的最大速率来起到限流作用。这个算法重点关注的是保护cpu处理的能力,如果设置的漏口过小,则在高峰时期会影响到业务处理的效率。

令牌桶

令牌桶也有一个容器,也有一个控制流量的阀门,但是令牌空关注的是访问速率,完全放开cpu的限制,这个思路比漏斗要优的地方就是可以处充分利用处理能力,问题就是访问量的控制如果太宽松,系统也会有承受不住的问题。

令牌桶算法是目前主流的单机限流方案。也有一些框架例如guava,对这个算法提供了封装,并且再这个基础上进一步做了优化。比如平滑预热限流平滑突发限流

相关文章

网友评论

      本文标题:单机限流算法笔记

      本文链接:https://www.haomeiwen.com/subject/rjziaktx.html