-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【文章推荐】介绍 5 种限流算法,7 种限流方式 #2506
Comments
这个主要是 Java 服务器端限流措施,可以参考 |
过了一遍,基本包括了我们常见限流策略方案,但是如果把各个限流策略 递进关系 和 相关性 这类核心概念补充一下,文章会让读者更加便于接受和总结。 首先计数器方式也有人说 固定窗口 的,实现简单,精确度不够,临界超QPS,简而言之就是有 流量突刺,所以引出 滑动窗口,好处在于能够一定程度上解决了精确度,但是又不稳定,不能完全消除这种超qps的概率,不是绝对的精确,并且随着你追求精确度去不断窗口细分,成本代价也不断增加,还是没有达到绝对精确,那有没有绝对精确的呢? 有,滑动日志,它解决了精确度问题,达到了完全精确,但是空间复杂度O(N)和时间复杂度O(logN)的问题,又使得滑动日志虽然达到了绝对精确但是牺牲了很大的成本,计算复杂度很高。并且还有一个问题,就是你虽然精确度完全精确了,但是你流量不够 平滑,在极小极限的时间窗口情况下,你流量平滑度还是不够,就算你通过计算复杂度去换取平滑度,但是做不到绝对平滑。简而言之就是你没法很好的去控制 速率,于是又有了 令牌桶 和 漏桶,设计思路基本都是控制平均访问速率,像 v ≤ N / T。区别就在于漏桶能保护下游服务,但是牺牲了响应性能,就是匀速流出肯定需要流量等待嘛,而令牌桶虽然没有很好保护了下游服务但是能应对突刺流量,也提升了响应体验。 另外,往细了说,令牌桶和漏桶就是滑动窗口的变种,无非加了速率控制和应对不同的流量模型和响应场景。 所以限流的设计,把读者往几方面引导,能更加了解限流的本质,例如:
另外还有,就是讲分布式限流方面,就变得复杂,引入了中心节点,引入了协调者,其中必然带来时延,并且节点通信间也带来了精确度问题,因此就稍复杂了些。 |
大佬总结的很好,回头来看这篇文章确实还有很多改进的空间,你的评价很受用! |
介绍 5 种限流算法,7 种限流方式
The text was updated successfully, but these errors were encountered: