一、引入pom依赖
<!-- 限流熔断 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
二、配置文件
properties配置:
# sentinel默认不监控feign,需改成true
feign.sentinel.enabled=true
# 上面改成true后,启动会报注入失败,需改成懒加载
spring.cloud.openfeign.lazy-attributes-resolution=true
spring.cloud.sentinel.datasource.degrade.nacos.serverAddr=127.0.0.1:8848
spring.cloud.sentinel.datasource.degrade.nacos.namespace=train
spring.cloud.sentinel.datasource.degrade.nacos.groupId=DEFAULT_GROUP
spring.cloud.sentinel.datasource.degrade.nacos.dataId=sentinel-business-degrade
spring.cloud.sentinel.datasource.degrade.nacos.ruleType=degrade
nacos配置(选择json格式):
[{
"resource": "GET:http://member/member/feign/ticket/save",
"grade": 0,
"count": 201,
"timeWindow": 11,
"minRequestAmount": 6,
"startIntervalMs": 1000,
"slowRatioThreshold": 0.3
}]
三、FeignSerice
@FeignClient(value = "member",fallback = MemberFeignFallback.class)
public interface MemberFeign {
@GetMapping("/member/hello")
String hello();
@GetMapping("/member/feign/ticket/save")
CommonResp<Object> save(@RequestBody MemberTicketReq req);
}
四、熔断降级 MemberFeignFallback
@Component
public class MemberFeignFallback implements MemberFeign{
/**
* @return
*/
@Override
public String hello() {
return "Fallback";
}
/**
* @param req
* @return
*/
@Override
public CommonResp<Object> save(MemberTicketReq req) {
return new CommonResp<>("Fallback");
}
}
五、sentinel控制台已经出现了该配置
六、熔断规则
慢调用比例:在统计时长1000ms内,请求数量大于6,并且30%的请求响应时间大于201则会触发熔断。
异常比例:在统计时长1000ms内,请求熟练大于6,并且出现异常的比例超过30%出发熔断,熔断时长为3s
异常数:在统计时长1000ms内,请求熟练大于6,并且出现异常的次数超过5,则会出发熔断,熔断的时长为3s