美文网首页我的微服务
SpringCloud Alibaba之Sentinel的API

SpringCloud Alibaba之Sentinel的API

作者: 享学课堂 | 来源:发表于2020-01-09 16:01 被阅读0次

    前言

    之前大家介绍了如何利用Sentinel控制台,设置流控,降级,授权等功能。今天老顾带着大家来了解Sentinel的API,看看如何利用编码方式,对业务进行流控、降级管理。

    流量控制规则 (FlowRule)

    流量规则的定义

    重要属性:

    同一个资源可以同时有多个限流规则,检查规则时会依次检查。

    我们如何用代码进行流控规则的配置,其实也蛮简单;我们可以通过调用FlowRuleManager.loadRules() 方法来用硬编码的方式定义流量控制规则,比如:

    上面代码我们在应用启动的时候,初始化限流规则。启动后我们会发现控制台那边会有刚才代码定义的流控规则。

    熔断降级规则 (DegradeRule)

    熔断降级规则包含下面几个重要的属性:

    可以通过调用 ****DegradeRuleManager.loadRules() 方法定义流量控制规则。

    系统保护规则 (SystemRule)

    规则包含下面几个重要的属性:

    可以通过调用 SystemRuleManager.loadRules() 方法定义流量控制规则。

    访问控制规则 (AuthorityRule)

    授权规则,即黑白名单规则(AuthorityRule)非常简单,主要有以下配置项:

    • resource:资源名,即限流规则的作用对象
    • limitApp:对应的黑名单/白名单,不同 origin 用 , 分隔如 appA,appB
    • strategy:限制模式,AUTHORITY_WHITE 为白名单模式AUTHORITY_BLACK 为黑名单模式,默认为白名单模式

    可以通过调用 AuthorityRuleManager.loadRules() 方法定义流量控制规则。

    热点参数规则(ParamFlowRule)

    热点参数规则类似于流量控制规则(FlowRule): 可以通过 ParamFlowRuleManager 的 loadRules 方法更新热点参数规则

    定义资源

    Sentinel利用SphU进行资源的定义

    注意:SphU.entry(xxx) 需要与 entry.exit() 方法成对出现,匹配调用,否则会导致调用链记录异常,抛出 ErrorEntryFreeException 异常。

    定义了上面资源名后,配合之前的流控规则,现在就起到了流控保护了。一旦超出流量就提示限流了

    SphU.entry定义资源,对资源进行保护;Sentinel就会对这个资源的访问频率,异常等进行统计,监控;如果达到一定的阀值后,就会限流或降级。

    异常统计

    有些时候我们的业务代码发生了异常,我们希望可以进入业务异常监控,达到一定的阀值,直接限流处理。我们先来看看下面的代码

    上面代码表示如果参数a为空,就抛业务异常。我们再来设置一个降级规则 我们来运行访问一下 /test-api,故意不传参数a

    我们发现,不管怎么快速刷新,一直报异常,没有进入降级捕获业务处理流程。这个是怎么回事呢?这个是因为Sentinel只会对BlockException以及他的子异常进行统计监控,不会对其他业务异常进行统计监控。那我们如果处理呢?这个时候就需要我们把业务异常也加入到Sentinel的统计监控里面,看如下代码

    上面的代码我们捕获业务异常,并且到业务异常处理中,加入Tracer方法,把业务异常加入到统计中,这样业务异常就可以被降级了。

    调用来源

    大家是否记得在流控规则那里,有个针对来源

    那如何代码设置调用来源,看一下

    这样就是标记了调用来源。可以在流控规则那边设置针对来源的规则。

    总结

    Sentinel的核心的Api,SphU定义资源,Tracer定义统计,ContextUtil定义了上下文。小伙伴是不是也发现了,如果我们所有的代码都要用try-catch-finally方式进行处理,而且代码重复度很高,是不是很麻烦,也很恶心。下一篇老顾跟大家分享一下另一种实用的方式,谢谢!!!

    如果喜欢本文,可以关注我们的官方账号,第一时间获取资讯。
    你的关注是对我们更新最大的动力哦~

    今日福利(点击下方文字超链接获取)




    如果你的技术提升遇到瓶颈了,或者缺高级Android进阶视频学习提升自己,这有大量大厂面试题为你面试做准备!
    点击Android 学习,面试文档,视频收集大整理获取

    相关文章

      网友评论

        本文标题:SpringCloud Alibaba之Sentinel的API

        本文链接:https://www.haomeiwen.com/subject/uuxyactx.html