其他分享
首页 > 其他分享> > @SentinelResource注解使用详解

@SentinelResource注解使用详解

作者:互联网

@SentinelResource注解最主要的两个用法:限流控制和熔断降级的具体使用。另外,该注解还有一些其他更精细化的配置,如忽略某些异常的配置,默认降级函数等等。

@SentinelResource属性介绍:

实现限流控制

复制代码
@RestController
public class TestController {

    @Autowired
    private TestService testService;

    @GetMapping("/hello")
    public String hello() {
        estService.doSomeThing("hello " + new Date());
        return "didispace.com";
    }

}
复制代码

启动测试应用,启动Sentinel-Dashboard。发一个请求,可以在Sentinel-Dashboard上看到这个请求的相关信息。

实现限流的异常处理

默认情况下,Sentinel对控制资源的限流处理是直接抛出异常。这样对用户不友好,需要处理一下。

复制代码
@Slf4j
@Service
public class TestService {

    // 限流与阻塞处理
    @SentinelResource(value = "doSomeThing", blockHandler = "exceptionHandler")
    public void doSomeThing(String str) {
        log.info(str);
    }

    public void exceptionHandler(String str, BlockException ex) {
        log.error("blockHandler:" + str, ex);
    }

    // 熔断与降级处理
    @SentinelResource(value = "doSomeThing2", fallback = "fallbackHandler")
    public void doSomeThing2(String str) {
        log.info(str);
        throw new RuntimeException("发生异常");
    }

    public void fallbackHandler(String str) {
        log.error("fallbackHandler:" + str);
    }

}
复制代码

注意:

实现熔断降级

@SentinelResource注解除了可以用来做限流控制之外,还能实现与Hystrix类似的熔断降级策略。

复制代码
@RestController
public class TestController {

    @Autowired
    private TestService testService;

    @GetMapping("/hello2")
    public String hello2() {
        testService.doSomeThing2("hello2 " + new Date());
        return "didispace.com";
    }

}
复制代码 复制代码
@Slf4j
@Service
public class TestService {

    // 熔断与降级处理
    @SentinelResource(value = "doSomeThing2", fallback = "fallbackHandler")
    public void doSomeThing2(String str) {
        log.info(str);
        throw new RuntimeException("发生异常");
    }

    public void fallbackHandler(String str) {
        log.error("fallbackHandler:" + str);
    }
}
复制代码

启动测试应用,启动Sentinel-Dashboard。发一个请求到/hello2接口上,使得Sentinel-Dashboard上可以看到名为doSomeThing2的资源点。然后点击”降级“按钮,为该资源设置降级规则。这里使用异常比例策略,比例设置为0.5(即:50%的异常率),时间窗口设置为2(秒)。

验证熔断降级,根据上面的降级策略配置,当doSomeThing2方法的调用QPS >= 5,如果异常率超过50%,那么后续2秒内的调用将直接出发熔断降级,默认情况会直接抛出DegradeException异常。

标签:降级,String,SentinelResource,详解,str,注解,fallback,异常,public
来源: https://www.cnblogs.com/okeyl/p/16318405.html