Alibaba Sentinel 管控规则

1、Sentinel控制台UI功能

Sentinel控制台UI功能:
在这里插入图片描述

菜单名称概述用法其他
实时监控采集当前资源的限流信息观察
簇点链路把代码中植入的资源上报统一熔断、限流自动上报功能,很棒
流控规则限流根据资源, 支持访问资源的QPS和访问资源的线程数限流一般是限制 QPS
降级规则熔断降级根据资源,请求超时、异常、数超阈值熔断异于hystrix,时间窗口后直接恢复
热点规则---
系统规则---
授权规则---
集群流控见名知意--
机器列表见名知意--

2、五类管控规则

基于Sentinel 1.8.1编写,目前支持的五种管控规则:
在这里插入图片描述

2.1、流控规则

参考:https://github.com/alibaba/Sentinel/wiki/流量控制

Field说明默认值
resource资源名,即限流规则的作用对象
count限流阈值
grade限流阈值类型(QPS 或 并发线程数)QPS
limitApp流控针对的调用来源若为 default 则不区分调用来源
strategy判断的根据是资源自身,还是根据其它关联资源(refResource),还是根据链路入口根据资源本身
controlBehavior流量控制效果(直接拒绝、Warm Up、匀速排队))直接拒绝
	/**
     * 初始化流控规则
     */
    private void initFlowRules() {
        //定义流控规则
        FlowRule flowRule = new FlowRule();
        flowRule.setResource(SentinelResourceKey.getUserPassById);//资源名
        flowRule.setCount(1);//限流阈值
        flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);//阈值类型
        flowRule.setLimitApp(RuleConstant.LIMIT_APP_DEFAULT);//流控针对的调用来源
        flowRule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT);//流控效果

        // 加载规则
        List<FlowRule> rules = new ArrayList<>();
        rules.add(flowRule);

        FlowRuleManager.loadRules(rules);
    }

在这里插入图片描述

2.2、降级规则

参考:https://github.com/alibaba/Sentinel/wiki/熔断降级

Field说明默认值
resource资源名,即限流规则的作用对象
count熔断阈值(最大RT / 比例阈值 / 异常数)
grade熔断策略(慢调用比例 / 异常比例 / 异常数)
limitApp熔断针对的调用来源若为 default 则不区分调用来源
timeWindow熔断时长,单位秒
rtSlowRequestAmount慢调用比例阈值,仅慢调用比例模式有效
minRequestAmount最小请求数
	/**
     * 初始化降级规则
     */
    private void initDegradeRules() {
        //定义规则
        DegradeRule degradeRule = new DegradeRule();
        degradeRule.setResource(SentinelResourceKey.getUserPassById);//资源名
        degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_RT);//熔断策略 RT
        degradeRule.setCount(10);//最大RT(单位ms) / 比例阈值 / 异常数
        degradeRule.setTimeWindow(60);//熔断时长,单位秒
        degradeRule.setRtSlowRequestAmount(1);//慢调用比例阈值,仅慢调用比例模式有效
        degradeRule.setMinRequestAmount(1);//最小请求数

        // 加载规则
        List<DegradeRule> rules = new ArrayList<>();
        rules.add(degradeRule);

        DegradeRuleManager.loadRules(rules);
    }

在这里插入图片描述

2.3、热点规则

参考:https://github.com/alibaba/Sentinel/wiki/热点参数限流

何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:

  • 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
  • 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
Field说明默认值
resource资源名,必填
count限流阈值,必填
grade限流模式QPS 模式
durationInSec统计窗口时间长度(单位为秒),1.6.0 版本开始支持1s
limitApp针对的调用来源若为 default 则不区分调用来源
controlBehavior流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持快速失败
maxQueueingTimeMs最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持0ms
paramIdx热点参数的索引,必填,对应 SphU.entry(xxx, args) 中的参数索引位置
paramFlowItemList参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面 count 阈值的限制。仅支持基本类型和字符串类型
clusterMode是否是集群参数流控规则false
clusterConfig集群流控相关配置
	/**
     * 初始化热点规则
     */
    private void initParamFlowRules() {
        //定义规则
        ParamFlowRule paramFlowRule = new ParamFlowRule();
        paramFlowRule.setResource(SentinelResourceKey.getUserPassById);//资源名
        paramFlowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);//阈值类型,只支持QPS模式
        paramFlowRule.setLimitApp(RuleConstant.LIMIT_APP_DEFAULT);//针对的调用来源
        paramFlowRule.setCount(10);//阈值
        paramFlowRule.setParamIdx(0);//指配热点参数的下标
        paramFlowRule.setDurationInSec(10);//统计窗口时间长度,单位秒

        // 加载规则
        List<ParamFlowRule> rules = new ArrayList<>();
        rules.add(paramFlowRule);

        ParamFlowRuleManager.loadRules(rules);
    }

在这里插入图片描述

2.4、系统规则

参考:https://github.com/alibaba/Sentinel/wiki/系统自适应限流

Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

Field说明默认值
highestSystemLoad最大的load1
highestCpuUsage所有入口流量的最大CPU使用率[0-1]的小数,代表百分比
avgRt所有入口流量的平均响应时间,单位秒
qps所有资源入口的QPS
maxThread所有资源入口的最大并发线程数
	/**
     * 初始化系统自适应规则
     */
    private void initSystemRules() {
        //定义规则
        SystemRule systemRule = new SystemRule();
		
        //支持5种控制维度
        systemRule.setHighestSystemLoad(20);//最大的load1
        systemRule.setHighestCpuUsage(0.7);//所有入口流量的最大CPU使用率([0-1]的小数,代表百分比)
        systemRule.setAvgRt(10);//所有入口流量的平均响应时间,单位ms毫秒
        systemRule.setQps(100);//所有资源入口的QPS
        systemRule.setMaxThread(60);//所有资源入口的最大并发线程数

        // 加载规则
        List<SystemRule> rules = new ArrayList<>();
        rules.add(systemRule);

        SystemRuleManager.loadRules(rules);
    }

在这里插入图片描述

2.5、授权规则

参考:https://github.com/alibaba/Sentinel/wiki/黑白名单控制

Field说明默认值
resource资源名,即限流规则的作用对象
strategy限制模式(白名单 / 黑名单)白名单
limitApp针对的调用来源若为 default 则不区分调用来源
	/**
     * 初始化授权规则
     */
    private void initAuthorityRules() {
        //定义规则
        AuthorityRule authorityRule = new AuthorityRule();
        authorityRule.setResource(SentinelResourceKey.getUserPassById);//资源名
        authorityRule.setStrategy(RuleConstant.AUTHORITY_WHITE);//限制模式:白名单 / 黑名单
        authorityRule.setLimitApp("appA,appB");//针对的调用来源,不同origin用 , 分隔,如 appA,appB

        // 加载规则
        List<AuthorityRule> rules = new ArrayList<>();
        rules.add(authorityRule);

        AuthorityRuleManager.loadRules(rules);
    }

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值