首页 > 其他分享 >springcloud中流控和熔断

springcloud中流控和熔断

时间:2024-09-24 14:37:17浏览次数:9  
标签:请求 流控 springcloud 熔断 getOrder 控和 order String

接下去简单介绍下如何利用sentinel的dashboard进行流控和熔断。

一、流控(服务提供方设置)

1、在簇点链路找到对应资源名,点击流控,选择QPS或者线程数,单位是 秒 ,设置单机阈值

流控:QPS:每秒访问数;线程数:也就是时间段内只有对应的线程数处理,超过的线程请求会等待

2、流控模式:直接、关联、链路

①直接:只针对当前资源进行流控,默认模式。

②关联:关联资源的请求超出阈值,那么会对当前资源请求有影响,比如查询和插入两个动作进行流量控制,大促的时候,保证插入成功(下单),查询稍微慢一点

 下图所示,当请求/order/add接口的时候,如果1秒请求超过2次,那么就会对/order/flowThread进行限流,请求该接口提示该接口被限流

③链路:选择链路,需要填写入口资源,对入口资源进行控制,比如某个渠道的请求进行限制访问。demo如下

@SentinelResource不止可以作用于controller接口,还能作用于serviceImpl里面的方法

需要在配置文件中配置

spring:
  cloud:
    sentinel:
      web-context-unify: false

sentinel流控配置如下

简单理解就是:/order/yyy和/order/xxx接口都是getOrder流控的接口,但前者如果每秒超过2次请求就会被流控,而后者就不会,即同一个链路,有些请求会被控制,有些请求不会

代码编码如下:

controller

    @GetMapping("/xxx")
    public String xxx(){
        String msg = orderService.getOrder();
        return "xxx订单 " + msg;
    }

    @GetMapping("/yyy")
    public String yyy(){
        String msg = orderService.getOrder();
        return "yyy订单 " + msg;
    }

serviceImpl

    @Override
    @SentinelResource(value = "getOrder",blockHandler = "orderBlockHandler")
    public String getOrder() {
        return "order service";
    }

    public String orderBlockHandler(BlockException e){
        return "被流控";
    }

请求后如下:

 

 

3、流控效果:快速失败、warm up 、排队等待

快速失败:超出的请求直接就拒绝处理,提示被流控

warm up(激增流量):预热,即请求来时,是个慢慢增加请求处理数的过程。有个冷加载因子,默认是3,即默认是3个流量被处理,其余会拒绝,后来处理的请求慢慢的就是数量增多

排队等待(脉冲流量):超出阈值的请求,会等待设置的超时时间,一旦系统将现有请求处理完成,就会去处理等待的请求,有效的利用系统处理脉冲流量的时间间隙

 

二、熔断(服务消费端进行设置)

熔断策略:慢比例(默认)、异常比例、异常数

 慢比例:如上图所示,当请求数超过5次,有5*0.4=2个的请求响应时间超过1000ms,就会触发熔断,熔断时长为3s,在这3s熔断期间不会有请求通过(关闭),而过完3s后,会进入一个半开状态,即会放一个请求过去,如果这一个请求还是超过1000ms的慢调用,那会再次进入熔断。

异常比例:如上图所示,当请求次数超过10,其中10*0.2=2个出现异常,那么就会触发熔断,熔断时长5s。超过熔断5s后访问第一次请求就出现异常,那就再次进入到熔断状态。

异常数:如上图所示,当请求次数超过10个的时候,出现4个异常,就会触发熔断,熔断时长5s。超过熔断5s后访问第一次请求就出现异常,那就再次进入到熔断状态。

这流控和熔断都是防止系统出现级联故障,导致系统崩溃的处理,让系统更加健壮

 

以上内容纯学习使用!

 

标签:请求,流控,springcloud,熔断,getOrder,控和,order,String
From: https://www.cnblogs.com/qwg-/p/18429049

相关文章

  • springcloud整合sentinel
    此处只做个简单的springcloud中添加sentinel的demo1、下载sentinel的jar,访问网址:https://github.com/alibaba/Sentinel/releases 2、找到本地jar文件夹,使用cmd或者终端中打开,执行java-jar sentinel-dashboard-1.8.0.jar 启动完成 访问可视化页面,默认账号密码都是sent......
  • 滚雪球学SpringCloud[9.2讲]:CI/CD与自动化部署详解
    全文目录:前言1.持续集成与持续交付的基本概念1.1持续集成(CI)1.1.1持续集成的主要优势1.2持续交付(CD)1.2.1持续交付的主要特点1.3CI与CD的区别与联系2.使用Jenkins与GitLab实现CI/CD管道2.1使用Jenkins实现CI/CD2.1.1Jenkins简介2.1.2Jenkins的安装与配置2.1.3......
  • 滚雪球学SpringCloud[9.1讲]:Docker与容器化详解
    全文目录:前言9.1Docker与容器化Docker的基本概念与SpringBoot应用的容器化1.Docker的核心概念2.将SpringBoot应用容器化DockerCompose与微服务编排1.DockerCompose的核心概念2.使用DockerCompose编排微服务使用Kubernetes部署SpringCloud应用1.Kubernetes......
  • SpringCloud(九)配置中心和消息总线
    ##SpringCloudBusSpringcloudbus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Springbus的一个核心思想是通过分布式的启动器对springboot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式......
  • Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十九(用户中
    (4)创建mapper路径(5)编写配置文件server:port:8088spring:application:name:user-servicedatasource:url:jdbc:mysql://127.0.0.1:3306/yun6username:rootpassword:rootdriver-class-name:com.mysql.jdbc.Drivereureka:client:service-url:defaultZone......
  • springcloud组件openfeign超时时间设置
    openfeign超时时间设置有两种方式1、通过配置类;2、通过配置文件1、使用配置类代码如下:@ConfigurationpublicclassFeignConfig{@BeanpublicRequest.Optionsoptions(){//第一个参数是连接超时时间,第二个参数是处理超时时间returnnewReque......
  • 关于springcloud中openfeign中服务调用日志输出
    在使用openfeign进行服务调用的时候,我们可以通过一些配置,获取到服务调用的日志输出,可以从消费端看到日志有两种方法:一、使用配置类;二、使用配置文件配置日志输出级别有四种:NONE:不输出(默认)BASIC:只输出请求方式、url、请求成功与否HEADERS:输出请求头的部分信息等FULL:BASIC+HEA......
  • springcloud的ribbon懒加载负载均衡策略
    ribbon的默认是第一次调用的时候,才会去初始化负载均衡策略,那这个可能的后果就是服务第一次请求的是,因为需要初始化,有可能会慢一点那可以通过配置项目启动的时候,就进行初始化负载均衡策略,减少第一次请求时候的时间只需要再消费端的模块中添加如下配置:ribbon:eager-load:......
  • springcloud负载均衡组件ribbon使用
    一、微服务负载均衡ribbon策略如下:1、线性轮询策略:RoundRibbonRule 2、重试策略:RetryRule3、加权响应时间策略:WeightedResponseTimeRule4、随机策略:RandomRule5、最空闲策略:BestAvailableRule6、区域感知轮询策略:ZoneAvoidanceRule(默认)每个策略对应什么意思,基本也就是字......
  • springCloud整合nacos
    关于springCloud整合nacos主要步骤如下(主要介绍nacos作为注册中心使用的配置)1、添加依赖;2、添加配置;3、服务启动,查看注册信息1、添加依赖:<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-......