定义限流和降级后的处理⽅法(Sentinel)

SentinelResource的使用

在定义了资源点之后,我们可以通过 Dashboard 来设置限流和降级策略来对资源点进⾏保护。同时还能通过 @SentinelResource 来指定出现异常时的处理策略。 @SentinelResource ⽤于定义资源,并提供可选的异常处 理和 fallback 配置项。

其主要参数

这⾥我们着重看当发⽣异常后处理逻辑

⽅式⼀ :直接将限流和降级⽅法定义在⽅法中,也就是说资源⽅法和处理⽅法都在⼀个类中。这种其实就是局部的写法。

1. 创建⼀个资源定义⽅法

2. 书写处理blockException的处理逻辑

3. 书写处理其他异常的处理逻辑(兜底⽅法)

 实际开发当中经常出现,服务限流,但是超出规则的默认返回提示,这样不太符合业务逻辑。可以使⽤ blockHandler 来指定⼀个出现异常的兜底⽅法。

⽅式⼆

上边讲解了使⽤了 blockHandler 和 fallback ,其实更多的是异常⽅法的指定,其实我们也可以使⽤ blockHandlerClass 和 fallbackClass 来处理这样的情形(全局兜底)。

1. 创建⼀个资源⽅法

2. 书写⼀个全局 blockException 的处理逻辑

3. 书写⼀个全局处理其他异常的处理逻辑

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sentinel 是一款开源的分布式系统防护组件,主要用于服务的流量控制、熔断降级和系统负载保护等。Sentinel 提供了一种基于注解和 API 的自定义限流方式。 自定义限流的主要步骤如下: 1. 定义资源名:在 Sentinel 中,资源是需要受到限流保护的对象。可以使用 `@SentinelResource` 注解来定义资源名。 ```java @SentinelResource(value = "myResource", blockHandler = "handleBlock") public void myMethod() { // 方逻辑 } // 定义限流规则 private void handleBlock(BlockException ex) { // 处理限流逻辑 } ``` 2. 配置限流规则:通过 Sentinel Dashboard 或者代码方式配置限流规则,即设置每个资源的 QPS 阈值、流控模式等。 3. 触发限流:当资源的访问量超过限流规则中的阈值时,Sentinel 会触发限流,执行 blockHandler 中定义的逻辑。 以上是基于注解的方式,如果希望基于 API 进行自定义限流,可以使用 Sentinel 提供的 `SphU` 和 `Tracer` 等类进行手动埋点和统计。例如: ```java // 定义资源名 String resourceName = "myResource"; // 手动埋点 Entry entry = null; try { entry = SphU.entry(resourceName); // 执行业务逻辑 } catch (BlockException ex) { // 处理限流逻辑 } finally { if (entry != null) { entry.exit(); } } // 手动统计指标 Tracer.traceCount(resourceName, 1); ``` 通过自定义限流,可以灵活地根据业务需要对不同的资源进行限流保护,提高系统的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值