降级-熔断-限流-傻傻分不清楚

降级-熔断-限流-傻傻分不清楚
最新回答
╭⌒浅浅笑

2022-08-20 12:40:23

降级、熔断、限流的区别与联系

一、熔断

熔断是指在分布式系统中,当某个服务出现问题时,为了防止整个系统被拖垮,主动停止对该服务的调用,类似于电路中的保险丝。

  • 来源:熔断的概念来源于电路中的保险丝,当电压出现短路时,保险丝会熔断,电路断开,保护电器不受损害。
  • 作用:在分布式系统中,熔断器可以防止应用程序不断地尝试可能超时和失败的服务,从而避免整个系统被拖垮。当服务出现问题时,熔断器会主动断开对该服务的调用,等待服务恢复正常后再逐步恢复调用。
  • 实现:熔断器模式通常像代理一样工作,记录调用发生的错误次数,并根据次数决定是否继续调用或立即返回错误。业内流行的熔断器有阿里的Sentinel和Hystrix等。

二、降级

降级是指在系统资源不足或访问量激增时,为了保障核心业务的正常运行,主动放弃一些非核心功能或服务的策略。

  • 本质:降级是为了解决资源不足和访问量增加的矛盾,通过放弃一些非核心功能或服务,保障核心业务的正常运行。
  • 牺牲:降级可能涉及强强一致性变为最终一致性、停止访问不重要的功能、简化功能流程等。这些牺牲都是为了释放更多资源,保障核心业务的平稳运行。
  • 实现:降级可以通过在业务代码中配置开关或配置中心模式来实现。当达到一定的阈值(如吞吐量、响应时间、失败次数等)时,触发降级处理。

三、限流

限流是指通过对并发访问进行限速,以保护系统不被过载的策略。

  • 目的:限流的主要目的是保护系统不被过载,通过限制并发访问的数量,确保系统能够稳定运行。
  • 行为:限流可以采取拒绝服务、服务降级、特权请求、延时处理等方式。拒绝服务是最简单的方式,直接拒绝多余的请求;服务降级则是关闭一些非核心服务;特权请求可以优先处理一些重要用户的请求;延时处理则利用队列将请求缓存起来,等待系统处理。
  • 实现:限流可以通过计数器、漏斗模式、令牌桶等方式实现。计数器是最简单的方式,维护一个计数器来记录请求数量;漏斗模式则利用队列来缓存请求,当队列满时拒绝请求;令牌桶则按照一定的速率放入令牌,只有获取到令牌的请求才能被处理。

四、三者的关系

  • 熔断是降级方式的一种:熔断器在检测到服务异常时,会主动断开对该服务的调用,这实际上是一种降级策略,通过放弃对问题服务的调用,保护其他服务的正常运行。
  • 降级又是限流的一种方式:在系统资源不足或访问量激增时,通过降级策略放弃一些非核心功能或服务,可以看作是一种限流方式,通过减少系统负载来保护系统不被过载。
  • 三者都是为了保护系统:无论是熔断、降级还是限流,都是为了在系统面临压力时,通过一定的策略来保护系统不被拖垮或过载。它们在不同的场景下发挥着各自的作用,共同维护着系统的稳定性和可靠性。

综上所述,降级、熔断和限流是保护系统稳定性和可靠性的重要手段。它们在不同的场景下发挥着各自的作用,共同维护着系统的正常运行。