Spring Cloud Alibaba实战(四) - Sentinel之熔断

目录

(一)Nacos动态配置
(二)Nacos注册中心
(三)Sentinel之限流
(四)Sentinel之熔断
(五)Gateway之路由、限流
(六)Gateway之鉴权、日志
(七)Gateway搭配Nacos实现动态路由
(八)Dubbo + Nacos

正文

上一节中从服务生产者角度考虑,使用Sentinel对服务做了限流保护,那么从消费者角度上,需要考虑另一种情况。

假设在用户登录时,为了简化客户端处理,account服务的登录接口在处理成功后会调用payment服务查询余额接口获得余额信息一并返回给客户端。当payment服务严重卡顿时,我们希望登录接口不会被拖慢,而是快速失败并降级。来看看Sentinel是如何解决的。

以前文中的消费方应用account-service为基础,首先添加依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>${alibaba.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
            <version>1.6.0</version>
        </dependency>

修改bootstrap.yml

spring:
  application:
    name: account-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      eager: true
      transport:
        dashboard: localhost:8080
      datasource:
        ds1:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: ${spring.application.name}-degrade-rules
            data-type: json
            rule-type: degrade
ribbon:
  ConnectTimeout: 2000
  ReadTimeout: 5000
feign:
  sentinel:
    enabled: true

在Nacos后台新建配置:

dataId:account-service-degrade-rules
格式:JSON
内容:

[
  {
    "resource": "GET:http://payment-service/pay/balance",
    "count": 500,
    "grade": 0,
    "timeWindow": 10
  }
]

截图示例: 

以上配置的含义是:

当资源的平均响应时间超过阈值500毫秒之后,资源进入准降级状态。如果接下来1秒内持续进入5个请求的RT都持续超过这个阈值,那么在接下的时间窗口(timeWindow)之内,对这个方法的调用都会自动地熔断。

接下来修改Nacos中配置项payment-service-dev.properties的sleep值,修改为1000,让/pay/balance接口响应前先挂起1秒钟来模拟服务器卡顿情况。

分别启动两个服务,用浏览器打开http://localhost:8081/acc/user?id=1并连续刷新6次以上。可以观察到,从第7次开始接口不再等待1秒后返回,而是快速返回降级后的信息。

降级策略
grade说明count
0平均响应时间 (DEGRADE_GRADE_RT):当资源的平均响应时间超过阈值之后,资源进入准降级状态。如果接下来1s内持续进入5 个请求的RT都持续超过这个阈值,那么在接下的时间窗口之内,对这个方法的调用都会自动地熔断单位ms, 上线4900
1异常比例:当资源的每秒异常总数占通过量的比值超过阈值之后,资源进入降级状态0.0-1.0
2异常数:当资源近1分钟的异常数目超过阈值之后会进行熔断 

 

 

 

 

 

 

 

示例源码

链接:https://pan.baidu.com/s/1_oo1-yY0Jb-aC3hBoozk-w 
提取码:4uw7 

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值