Sentinel限流熔断降级

0

我们需要区分这几个词:限流、熔断、降级

限流:某个服务资源的QPS
熔断:服务出现问题被禁用(超时、异常、调用时间过长)
降级:限流或者熔断后服务返回一个临时结果(活动火爆稍后重试)

限流和熔断都可以出现降级

主要区别fallbackblockHandler参数,如果没有配置blockHandler,都会进入到fallback,因为限流异常也属于异常。
还有就是两个方法的异常类型是不能修改的,如果需要全局处理可以定义异常处理ControllerAdvice

感觉对于微服务内部限流没啥太大必要,主要还是控制外部请求就可以了。
所以sentinel的dubbo适配和dashboard也没啥用,感觉只会增加系统负担。
当然个人理解,没有大型系统的经验,可能有点浅薄。有时候人总是想把握住太多,导致失去的更多。

	@PostConstruct
	public void init() {
		List<FlowRule> rules = new ArrayList<>();
		FlowRule rule = new FlowRule();
		rule.setResource("name");
		rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
		rule.setCount(1);
		rules.add(rule);
		FlowRuleManager.loadRules(rules);
	}
	
	@GetMapping("/name")
	@SentinelResource(value = "name", fallback = "nameFallback", blockHandler = "nameBlockHandler")
	public String name() {
		return this.userService.name();
	}
	
	/**
	 * 异常:异常类型可以没有不能修改
	 */
	public String nameFallback(Throwable e) {
		return "fallback:" + e;
	}
	
	/**
	 * 限流:异常类型可以没有不能修改
	 * 如果没有配置blockHandler默认进入fallback
	 */
	public String nameBlockHandler(BlockException e) {
		return "nameBlockHandler:" + e;
	}

详细资料:https://sentinelguard.io/zh-cn/docs/annotation-support.html