Sentinel:SentinelResourceAspect

2021-02-05 19:15

阅读:693

  1. SphU.entry(...)
    请求进来前先调用 entry(...)方法,它有一个 String resourceName 参数用来表示要访问的资源。内部先创建一个全新的 Entry 对象,然后进行链式的规则校验:授权、流控、降级、系统保护、黑名单等。
    若通过了规则校验,则放行本次请求并记录统计信息;否则抛出 BlockException 的子类对象,对应规则链上第一个未通过的规则,开发者通过 catch 这个异常并判断其类别来处理请求被拒绝的业务逻辑。

  2. 访问资源
    通过规则校验的请求则可以访问资源,资源先简单粗暴的理解成将要调用的方法。
    若在访问资源的过程中出现了错误,开发者可以 catch Throwable 并用 Tracer.trace(ex) 将异常放入对应的 Entry 对象。

  3. entry.exit(...)
    entry(...)方法和 entry.exit(...)必须成对使用,通常 entry.exit(...) 放在 finally 中,确保它最后会被执行。
    该方法对本次请求进行统计收尾工作,比如:计算本次请求的响应时长,处理第 2 步中可能存在的异常等。


评论


亲,登录后才可以留言!