一、Sentinel容错降级规则
降级规则就是设置当满足什么条件的时候,对服务进行降级。
Sentinel提供了三个降级的衡量条件
1、平均响应时间:
当资源的平均响应时间超过阈值(以ms为单位),资源进入准降级状态,如果接下来1s内持续进入5个请求,他们的RT都持续超过这个阈值,那么接下来的时间窗口(以s为单位)之内,就会对这个方法进行服务降级。(Sentinel默认统计的RT上限是4900ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配置项
-Dcsp.sentinel.statistic.max.rt=xxx来配置)
2、异常比例:
当资源的每秒异常总数占通过量的比值超过阈值之后,资源进入降级状态,即在接下来的时间窗口(以s为单位)之内,对这个方法的调用都会自动的返回,异常比率的阈值范围是[0.0,1.0]
3、异常数:
当资源近一分钟的异常数目超过阈值之后会进行服务降级,注意由于统计时间窗口是分钟级别的,若时间窗口小于60s,则结束熔断状态后仍可能再进入熔断状态。
模拟一个异常
package com.chenchen.controller;
import com.chenchen.service.impl.OrderServiceImpl3;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Sentinel服务容错测试 服务降级
*/
@RestController
@Slf4j
public class OrderController4 {
@Autowired
private OrderServiceImpl3 orderServiceImpl3;
/**************************************************************************/
int i = 0;
/**
* @return
*/
@RequestMapping("/message2")
public String message2() {
i++;
if (i % 3 == 0) {
throw new RuntimeException();
}
log.info("调用orderService3链路流控方法:{}", "message");
return "showMessage:" + new SimpleDateFormat("yyy-MM-dd HH:mm:ss").format(new Date());
}
}
设置异常比例
浏览器访问接口,服务可以降级。
然后降级策略修改成异常数
依然可以降级