我是靠谱客的博主 爱听歌小土豆,这篇文章主要介绍Sentinel熔断(非控制台),现在分享给大家,希望可以做个参考。

熔断,在微服务中表示下游服务出现故障时,为防止上游服务继续调用,而根据设置的策略进行断开连接。目前SpringCloud提供了四种熔断框架:Netfix Hystrix(仅维护不更新)、Resilience4J、Sentinel、Spring Retry。

地址为:Spring Cloud Circuit Breaker

目前国内使用的Sentinel比较多,但是大多都依赖控制台,这里以单项目进行测试,没采用控制台模式。

1. pom配置

复制代码
1
2
3
4
5
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>2.1.3.RELEASE</version> </dependency>

由于本人的SpringBoot版本为 2.1.7.RELEASE,对应的sentinel就是上面这个版本。具体版本对应关系地址为:组件版本关系 

2. 配置熔断策略

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Configuration public class DegradeConfig { @PostConstruct public void initDegradeRule(){ List<DegradeRule> degradeRuleList=new ArrayList<>(); //定义降级规则 DegradeRule degradeRule=new DegradeRule(); //设置降级规则所对应的资源名称 degradeRule.setResource("testPid"); //根据发生异常的次数进行降级 degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT); //至少要有两次请求才会降级,第一次请求时发生异常也不会降级 degradeRule.setMinRequestAmount(2); //发生异常的次数达到1后开始降级 degradeRule.setCount(1); //降级的时间窗口,在10秒内,所有的请求都直接降级 degradeRule.setTimeWindow(10); //表示熔断后10秒内的其他调用都走熔断方法 degradeRule.setStatIntervalMs(10000); //把降级规则添加到降级规则列表 degradeRuleList.add(degradeRule); //把降级列表添加到降级规则管理器 DegradeRuleManager.loadRules(degradeRuleList); } }

3.注解式熔断入口

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@GetMapping("/test") @SentinelResource(value="testPid",entryType= EntryType.OUT,blockHandler ="exceptionHandler",fallback = "helloFallback") public RestResult test() { Long aa = PidFeignClient.getSnowId(); return RestResultUtils.success(aa); } public RestResult exceptionHandler(BlockException ex){ ex.printStackTrace(); return RestResultUtils.fail("Oops,error occurred at "); } public RestResult helloFallback() { return RestResultUtils.fail("fallback error 调用异常了 "); }

如果需要切面的话,可以配置:

复制代码
1
2
3
4
@Bean public SentinelResourceAspect sentinelResourceAspect() { return new SentinelResourceAspect(); }

调用方法即可发现,第二次熔断后,10s内的其他调用直接返回熔断后的方法。

最后

以上就是爱听歌小土豆最近收集整理的关于Sentinel熔断(非控制台)的全部内容,更多相关Sentinel熔断(非控制台)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部