24 | 稳定性实践:限流降级
赵成
该思维导图由 AI 生成,仅供参考
本周我们继续来讨论稳定性实践的内容。在现实情况下,当面对极端的业务场景时,瞬时的业务流量会带来大大超出系统真实容量的压力。
为了应对,前面我们介绍了容量规划方面的实践经验。不过,我们不会无限度地通过扩容资源来提升容量,因为无论从技术角度,还是从成本投入角度,这样做都是不划算的,也是不现实的。
所以,我们通常采取的策略就是限流降级,以保障承诺容量下的系统稳定;同时还有业务层面的开关预案执行,峰值时刻只保障核心业务功能,非核心业务功能就关闭。
今天我们就先来介绍一下限流降级的解决方案。
什么是限流和降级
首先,我们先梳理清楚限流和降级的概念,明白它们会发挥怎样的作用,这样才便于我们理解后续的解决方案。
限流,它的作用是根据某个应用或基础部件的某些核心指标,如 QPS 或并发线程数,来决定是否将后续的请求进行拦截。比如我们设定 1 秒 QPS 阈值为 200,如果某一秒的 QPS 为 210,那超出的 10 个请求就会被拦截掉,直接返回约定的错误码或提示页面。
降级,它的作用是通过判断某个应用或组件的服务状态是否正常,来决定是否继续提供服务。以 RT 举例,我们根据经验,一个应用的 RT 在 50ms 以内,可以正常提供服务,一旦超过 50ms,可能就会导致周边依赖的报错或超时。所以,这时我们就要设定一个策略,如果应用的 RT 在某段时间内超过 50ms 的调用次数多于 N 次,那该应用或该应用的某个实例就必须降级,不再对外提供服务,可以在静默一定时间后(比如 5s 或 10s)重新开启服务。
这里再特别说一下降级,今天我们讲的内容可以理解为服务降级,后面我会介绍业务开关,可以理解为业务降级。这里只是叫法不同,不同的人有不同的理解,所以我们在讨论概念时,还是尽量回到我们要解决的问题和场景上来,上下文保持一致了,在观点和思路上也更容易达成一致。
讲到这里,再提个问题,我们讲的降级,和熔断这个概念是什么关系?你不妨停下来,按照我们刚刚讲过的思路思考一下。
常见的限流解决方案
我们先看几种常见的限流类型。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
限流降级是保障系统稳定性的关键策略,面对极端业务场景时尤为重要。限流通过拦截超出系统承载能力的请求,保障系统稳定;而降级则根据服务状态决定是否继续提供服务,确保核心业务功能的稳定。本文深入浅出地介绍了限流降级的概念、作用和常见解决方案,包括接入层限流、应用限流和基础服务限流等技术点的应用。文章强调了限流降级的难点和关键在于整体技术栈的统一,以及对每个应用限流降级资源策略的准确把握和配置。在实际推广过程中,技术栈的统一是关键挑战,而对应用的限流降级资源策略的把握则需要对应用和业务有深入的了解。此外,限流和降级的具体策略需要来源于线上实际运行维护的经验,是一个动态调测和完善的过程。最终,文章提出了借助机器学习算法的手段来帮助分析最合理的设置。通过本文,读者能够快速了解限流降级的重要性、技术细节和实践经验,为保障系统稳定性提供了有益的参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《赵成的运维体系管理课》,新⼈⾸单¥59
《赵成的运维体系管理课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- Tom又看到机器学习了
作者回复: 场景复杂到一定程度,体量大到一定规模,就必须要靠算法的力量了
2018-03-071 - xiaoyaoNginx 限流 ,有具体的案例吗2020-03-2712
- as-范限流与(服务)降级个人在理解上还是有点混淆,其中的区别是什么?首先两者都是从服务提供方入手,是说限流在无论多么恶劣的条件下都保证最低限度的可用(比如200qps),而降级可以做到服务直接不提供服务的差别么?文中以判断服务状态/核心指标,来决定提供后续服务/拦截后续请求,从我的理解上来看,都是同一件事儿,rt与qps都算是服务的指标,不提供后续服务和拦截后续请求也可以是同样的处理手段。另外熔断个人理解是client对服务端异常时的主动处置,文中留了思考题,没有在本文中找到答案,后面还会认真的去寻找。作为开发能从本课中拎出运维的体系,把零散的运维动作串起来,对系统建设有自己的深入理解,感谢分享,也感谢互联时代~2022-05-09
- patch_bug降级呢?2021-08-09
收起评论