SpringCloudAlibaba-服务熔断-Sentinel

Sentinel是一种服务治理工具,提供服务熔断功能,防止级联故障。本文通过实例展示了如何配置资源熔断降级,包括异常数和异常比例策略。在服务出现异常时,Sentinel会触发熔断,返回预设的兜底数据,并在一段时间后尝试恢复。同时,介绍了慢调用比例策略,包括最大响应时间、比例阈值和统计时长等关键参数,帮助优化服务稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是熔断(发生异常的托底)

熔断机制是对服务链路的保护机制,如果链路上的某个服务不可访问,调用超时,发生异常等,服务会触发降级返回托底数据,然后熔断服务的调用(失败率达到某个阀值服务标记为短路状态),当检查到该节点能正常使用时服务会快速恢复。

简单理解就是当服务不可访问了或者服务器报错了或者服务调用超过一定时间没返回结果,就立马触发熔断机制配合降级返回预先准备的兜底数据返回,不至于长时间的等待服务的相应造成大量的请求阻塞,也不至于返回一些错误信息给客户端,而是返回一些兜底数据。

服务器发生熔断之后,在一定时间后会对其进行重试,如果仍然是异常状态,则继续熔断,并且反复的重试,如果返回正常,则服务器取消熔断状态。

二、Sentinel熔断

Sentinel的服务熔断机制会对调用链上的某个不稳定(宕机,异常,超时)的资源,做出请求限制,快速失败,避免影响到其它的服务而导致级联错误。资源熔断后,在后续的一定时间(时间窗口)之内,对该服务的请求都自动熔断,抛出 DegradeException异常。

三、Sentnel熔断实例

一.资源熔断降级

    // 限流,参数和返回值与源方法一致
    public User exceptionHandler(@PathVariable Long id, BlockException ex) {
        ex.printStackTrace();
        System.out.println("服务限流");
        return new User(-1L,"限流了","限流了");
    }
    // 熔断
    public User getByIdfallback(@PathVariable Long id){
        System.out.println("熔断降级");
        return new User(id,"zs:"+id, "熔断托底了");
    }

    @GetMapping("/user/{id}")
    //限流降级
    //@SentinelResource(value="user",blockHandler="exceptionHandler")
    @SentinelResource(value="user",blockHandler="exceptionHandler",fallback = "getByIdfallback")
    public User getById(@PathVariable Long id){
        int i = (int) (1 / id);	//方法异常,触发熔断
        return new User(id,"zs:"+id, "我是zs");
    }

二.资源熔断降级

在这里插入图片描述

三.熔断测试

http://localhost:8401/user/1
http://localhost:8401/user/0

先调用user/1刷高请求数量,再调用user/0两次达到异常数,调用user/0发生异常的时候就会调用熔断的兜底方法:fallback = “getByIdfallback”,之后就会进行服务限流,无论调用user/1或者user/0都会调用blockHandler="exceptionHandler"限流的兜底方法,过了四秒之后,服务会重新尝试去回复,此时调用user/1会是正常的数据返回。

四、Sentnel熔断策略(1.8.2)

一.慢调用比例

在这里插入图片描述

1、资源名

@SentinelResource(value="user",blockHandler="exceptionHandler",fallback = "getByIdfallback")

中的value

2、最大RT:最大响应时间

最大的响应时间,Sentinel 默认统计的 RT 上限是 4900 ms

3、比例阈值(取值范围0.0-1.0)

慢调用统计数对于最小请求数的占有比例;

4、熔断时常

设置熔断时间,超过熔断时间后,服务器会尝试着进行恢复

5、最小请求数

触发熔断的最小请求数目,若当前统计窗口内的请求数小于此值,即使达到了熔断条件也不会触发;

6、统计时长

统计时间段,相当于可以自定义单位时长。

二.异常比例

在这里插入图片描述

三.异常数

在这里插入图片描述

1、异常数

发生异常的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值