sentinel如何在代码中简单的实现对服务进行降级?

提问者:帅平 问题分类:微服务
sentinel如何在代码中简单的实现对服务进行降级?
2 个回答
理解的心
理解的心
直接在request方法上添加@sentinelResource即可,示例如下:
@GetMapping("/order/{id}")
    @SentinelResource(
        value = "queryOrder", 
        fallback = "queryOrderFallback",  // 服务异常降级方法
        blockHandler = "queryOrderBlockHandler"  // 限流/熔断降级方法
    )
    public String queryOrder(@PathVariable String id) {
        // 模拟调用外部服务(如库存查询)
        if (id.equals("0")) throw new RuntimeException("服务异常");
        return "订单详情:" + id;
    }
    // 服务异常降级处理
    public String queryOrderFallback(String id, Throwable e) {
        return "服务繁忙,请稍后再试!";
    }
    // 限流/熔断降级处理
    public String queryOrderBlockHandler(String id, BlockException e) {
        return "当前请求过多,请稍后再试!";
    }
发布于:2周前 (04-16) IP属地:
思念是一种病
思念是一种病
代码动态配置规则,比如基于响应时间触发降级:
@Configuration
public class SentinelConfig {
    @PostConstruct
    public void initRules() {
        DegradeRule degradeRule = new DegradeRule();
        degradeRule.setResource("queryOrder");
        degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_RT);  // 响应时间模式
        degradeRule.setCount(100);  // 阈值:100ms
        degradeRule.setTimeWindow(10);  // 熔断时间窗口:10秒
        DegradeRuleManager.loadRules(Collections.singletonList(degradeRule));
    }
}
发布于:2周前 (04-16) IP属地:
我来回答