10 | 雪崩(二):限流,抛弃超过设计容量的请求
该思维导图由 AI 生成,仅供参考
为什么需要限流
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了分布式系统中的限流问题,包括为何需要限流、限流的实现方法以及限流算法等方面。首先介绍了限流的必要性,指出熔断机制的被动处理方式不够优雅,而限流可以更主动地解决服务流程过载问题,避免系统失控。其次,讨论了限流的实现方法,包括固定窗口、滑动窗口、漏桶和令牌桶算法等,以及单节点和分布式场景下的限流机制的权衡。文章深入浅出地解释了限流算法的原理和应用,为读者提供了全面的限流知识体系。在单节点限流方面,文章探讨了限流机制作用的位置、阻塞式限流和否决式限流的选择。在分布式限流方面,文章提出了集中式限流和本地化处理、以及折中的方案,为读者提供了多种思路和方法。总之,本文全面而深入地探讨了分布式系统中的限流问题,为保障系统稳定性提供了有力支持。文章还探讨了限流阈值的设置和引入的脆弱性,提出在核心链路和核心服务上默认启用限流机制,在其他位置上手动启用限流机制,将其作为处理系统故障的一个手段。文章内容丰富,对于需要了解分布式系统中限流问题的读者具有很高的参考价值。
《深入浅出分布式技术原理》,新⼈⾸单¥59
全部留言(7)
- 最新
- 精选
- HappyHassonQ:令牌桶和漏桶在使用上有没有很明显的区别(除了上游流量的抖动可能会扩散到下游服务 )?我们业务每次在使用选择时都会犹豫比对很久,最后都选了令牌桶。
作者回复: 它们两个设计上的区别,令牌桶是限制进入的速率,漏桶是限制出的速率。一般来说,如果下游服务没有非常严格的速率限制,选择令牌桶会更好,它在效率和抗抖动之间的横权更好一些
2022-02-2025 - 宇智波鼬有个小建议:能否在每节课开始或结束时讲解下上节课的问题的参考答案
作者回复: 非常好的建议👍 由于课程快更新完了,看看怎么来放出参考答案。
2022-03-293 - 孙志强关于抗抖动能力,令牌桶和漏桶实现层面是如何防抖动的,比如60QPS,是把时间切分到Ms级别来处理吗
作者回复: 抗抖动主要是依靠桶的缓存能力,稳定的 QPS 控制是用来做流量整形的,精确的控制是依赖更小的时间片和滑动窗口来统计。
2022-04-211 - 不吃辣👾老师 前面讲的固定窗口和滑动窗口给人的感觉就是不如令牌桶和漏桶。难道固定窗口和滑动窗口就没有应用场景了吗?这两个窗口可以被两个桶替代?
作者回复: 固定窗口和滑动窗口相比于令牌桶和漏桶实现要简单并且需要的缓存要少,在一些简单的场景,这就是非常大的优势,选型的原则是合适才好。
2022-04-031 - 青鸟飞鱼老师,觉得检测cpu和内存情况,来实现限流阈值的根据,会不会更好呢?
作者回复: cpu 和 内存是系统级别的参数,粒度是非常粗的,限流需要做到接口级别,不过 cpu 和内存是非常好的过载指标,在扩容中会使用。
2022-03-1721 - peterQ1:令牌桶部分:“也就是当请求流量突增的时候,上游流量的抖动可能会扩散到下游服务” 有限流,怎么会扩散到下游?什么情况下会扩散到下游? Q2:单节点限流,是说服务端只有一个节点吗? 还是说服务端有多个节点但只在一个节点上进行限流? 从后面看,应该是说某一个服务只有一个实例,即该服务只有一个节点,对吗?
作者回复: Q1:令牌桶的流程速率是不限制的,所以在桶中的令牌满后,突然来大量的请求,由于令牌足够,所以下游的请求量也会短暂突增。 Q2:“某一个服务只有一个实例,即该服务只有一个节点”是对的,单节点限流是种简化的情况,为后面的分布式限流的讨论做准备。
2022-02-182 - Jxin1.限流限的是请求数,但哪怕是同接口的每个请求对资源的占用都是不相同的。在一个服务内多个接口的资源是共享的,所以限制单接口并无法阻止其他接口的请求占用导致的服务不可用。你根本没办法把服务的资源平分给每个接口的每个请求,所以限流的值准不了,仅能用来防止特殊时段特殊接口的激增场景导致的服务不可用。所以面向的是服务中可能有激争抢占大量资源的接口,与是否核心链路并没必要因果关系。核心链路上的限流,是在我们限掉了比如供应商拉单这些非核心链路的请求,让出全部资源后,还撑不住时追加的,比如下单。但不是所有核心链路都时常有这种激增场景,比如注册用户。 2.工作中都是eda 用mq,等于都是漏斗。2022-02-2513