服务治理:高可用的三大利器熔断限流降级
Posted 志波同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务治理:高可用的三大利器熔断限流降级相关的知识,希望对你有一定的参考价值。
在我们进行系统设计时,必须要考虑系统的高性能、高并发、高可用。本文分享的是关于高可用的三大利器:熔断、限流、降级,我们使用通俗、易懂的语句将三个概念讲清楚。
一、熔断
在服务的依赖调用中,被调用方出现故障时,出于自我保护的目的,调用方会主动停止调用,并根据业务需要进行相应处理。调用方这种主动停止调用的行为我们称之为熔断。
为什么要熔断
假定服务A依赖服务B,当服务B处于正常状态,整个调用是健康的,服务A可以得到服务B的正常响应。当服务B出现故障时,比如响应缓慢或者响应超时,如果服务A继续请求服务B,那么服务A的响应时间也会增加,进而导致服务A响应缓慢。如果服务A不进行熔断处理,服务B的故障会传导至服务A,最终导致服务A也不可用。
二、限流
限流是针对服务请求数量的一种自我保护机制,当请求数量超出服务的处理能力时,会自动丢弃新来的请求。
为什么要限流
任何一个系统的处理能力都是有极限的,假定服务A的处理能力为QPS=100,当QPS<100时服务A可以提供正常的服务。当QPS>100时,由于请求量增大,会出现争抢服务资源的情况(数据库连接、CPU、内存等),导致服务A处理缓慢;当QPS继续增大时,可能会造成服务A响应更加缓慢甚至奔溃。如果不进行限流控制,服务A始终会面临着被大流量冲击的风险。做好系统请求流量的评估,制定合理的限流策略,是我们进行系统高可用保护的第一步。
三、降级
降级是通过开关配置将某些不重要的业务功能屏蔽掉,以提高服务处理能力。在大促场景中经常会对某些服务进行降级处理,大促结束之后再进行复原。
为什么要降级
在不影响业务核心链路的情况下,屏蔽某些不重要的业务功能,可以节省系统的处理时间,提供系统的响应能力,在服务器资源固定的前提下处理更多的请求。
相关文章:聊聊系统的强弱依赖
本文通过通俗、易懂的语言描述了熔断、限流、降级的概念,后续会逐步分享更多关于服务治理方面的内容。文章内容仅代表个人观点,如有不正之处,欢迎批评指正,谢谢大家。
以上是关于服务治理:高可用的三大利器熔断限流降级的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud 2.x版本 Gateway熔断限流教程
阿里开源分布式限流框架 -Sentinel Go 0.3.0 发布,支持熔断降级能力