美文网首页
spring-cloud限流降级熔断

spring-cloud限流降级熔断

作者: Wu杰语 | 来源:发表于2021-05-29 18:35 被阅读0次

限流降级熔断确保服务高可用的必要手段,Spring Cloud Hystrix和Spring Cloud sentinel是Spring Cloud完成此功能的两大组件,这两大组件以SDK的方式提供。

基本原理

限流的方法有滑动窗口、漏桶、令牌桶等算法。

  • 滑动窗口有静态滑动窗口和动态滑动窗口,其中静态滑动窗口,如果流量都集中在窗口交接处,也会产生不平均现象。而动态滑动窗口实现比较复杂。
  • 漏桶法。固定桶大小,如果桶已满,则流入桶的请求将会被丢弃。可以应对瞬间高流量。
  • 令牌桶。以一个固定的速度产生令牌,服务请求如能拿到令牌则可以继续处理,否则就丢弃。
    这三种方法是限流的主要算法。

熔断降级主要判断依据为并发线程数和调用时间,基本规则是异常数、异常比例、调用平均时间。

Hystrix和Sentinel都提供了基本的限流降方式。

Hystrix

在Netflix套件中,Openfeign组件集成了hystrix组件,见如下定义

public @interface FeignClient {
    @AliasFor("name")
    String value() default "";

    String contextId() default "";

    @AliasFor("value")
    String name() default "";

    /** @deprecated */
    @Deprecated
    String qualifier() default "";

    String[] qualifiers() default {};

    String url() default "";

    boolean decode404() default false;

    Class<?>[] configuration() default {};

    Class<?> fallback() default void.class;

    Class<?> fallbackFactory() default void.class;

    String path() default "";

    boolean primary() default true;
}

https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#spring-cloud-feign-circuitbreaker中1.5和1.6有相关介绍,其中OpenFeign的fallback就是降级实现。

sentinel

sentinel的实现是FlowRule和DegradeRule两个实现,具体使用参见
https://www.jianshu.com/p/f1f052413d1c
其中几个块的关系

image.png
服务启动时从nacos中拉取规则,并且在运行过程中可以通过nacos随时修改规则,通过sentinel Dashboard查看限流熔断情况。

另外sentinel提供了集群限流功能。

小结

在程序设计的时候,我们一般会从算法角度考虑程序,即空间复杂度和时间复杂度,一般情况下,在高并发系统,都会考虑空间复杂度,如上漏桶设计,就是以时间换空间的一种设计方式。例如说处理消息,使用blockingqueue限制队列大小,消息从MQ拉去,如果blockingqueue满则阻塞,处理的速率就看服务的处理能力了。通过这种限流的方式,有效的限制了空间大小,让服务始终保持在一个平稳高效的状态。

相关文章

  • spring-cloud限流降级熔断

    限流降级熔断确保服务高可用的必要手段,Spring Cloud Hystrix和Spring Cloud sent...

  • 【GO】golang 降级|熔断|限流实战

    golang 降级|熔断|限流实战 前言 做为本文的前言,首先向读者介绍一下降级、熔断和限流的概念与关系。也许很多...

  • 限流,熔断,降级

    转自https://blog.csdn.net/chunlongyu/article/details/532590...

  • 限流&降级&熔断

    分布式系统关注点——限流该怎么做?https://www.infoq.cn/article/UhixHoWebU_...

  • 熔断、降级、限流

    架构的基础有两点,一点是分层,一点是RPC。衡量架构的一个重要指标就是健壮性和稳定性(也可以用来衡量人),这就需要...

  • 限流、熔断、降级

    一、限流、熔断、降级概念 1.1 限流: 在高并发系统中一定要用,高并发的所有请求进来,不是让每个请求都打到后台集...

  • 微服务 11: Sentinel的微服务 限流与 熔断降级(文末

    1:微服务限流? 2:什么是熔断降级? 3:需要进行熔断的服务的Pom文件(consumer 或者 provid...

  • 服务限流

    保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流可是Nginx接入层面的限流,也可以是服务层面的限流。 ...

  • 限流算法

    前言 保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流包括Nginx层面的限流以及业务代码逻辑上的限流。...

  • hystrix入门-原生API使用

    熟悉spring-cloud的同学都知道,hystrix是用来做服务熔断降级用的,在Springloud中使用hy...

网友评论

      本文标题:spring-cloud限流降级熔断

      本文链接:https://www.haomeiwen.com/subject/rfvxsltx.html