首页 > 其他分享 >Sentinel规则之黑白名单规则

Sentinel规则之黑白名单规则

时间:2023-01-14 22:00:54浏览次数:37  
标签:黑名单 黑白 rule 白名单 AUTHORITY 规则 Sentinel entry


Sentinel规则之黑白名单规则


☞ ​​博客导航​​,​​带你有序的阅读和学习!​


概述

很多时候,我们需要根据调用方来限制资源是否通过,这时候可以使用 Sentinel 的黑白名单控制的功能。黑白名单根据资源的请求来源(​​origin​​)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。

调用方信息通过 ​​ContextUtil.enter(resourceName, origin)​​​ 方法中的 ​​origin​​ 参数传入

规则配置

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

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

源码

public class AuthorityRule extends AbstractRule {
//Mode: 0 for whitelist; 1 for blacklist.
private int strategy = RuleConstant.AUTHORITY_WHITE;
}

实验

这个规则比前面的规则都更加简单,而且更加容易理解:

public static void testAuthorityRuleWithWhite() {
ContextUtil.enter("entrance1","App3");
Entry entry = null;
try {
entry = SphU.entry("login");
System.out.println("访问通过!");
} catch (BlockException e) {
System.out.println("访问受限!");
} finally {
if (entry != null) {
entry.exit();
}
}
}

public static void initAuthorityRule() {
List<AuthorityRule> rules = new ArrayList<>();
AuthorityRule rule = new AuthorityRule();
rule.setResource("login");
//配置白名单
rule.setStrategy(RuleConstant.AUTHORITY_WHITE);
rule.setLimitApp("App1,App2");
rules.add(rule);
AuthorityRuleManager.loadRules(rules);
}

上面代码测试结果为:访问受限!

  • 通过​​Strategy​​ 来设置规则策略,白名单和黑名单。
  • 通过​​LimitApp​​ 来配置白名单列表或黑名单列表。多个之间使用逗号隔开。

上面的初始化规则在页面显示如下:

Sentinel规则之黑白名单规则_App


标签:黑名单,黑白,rule,白名单,AUTHORITY,规则,Sentinel,entry
From: https://blog.51cto.com/u_12131813/6007934

相关文章

  • Redis-多机数据库-Sentinel
    SentinelSentinel(哨岗、哨兵)是Redis的高可用性(highavailability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主......
  • FPGA:逻辑代数的基本公式和规则
    逻辑代数的基本公式基本公式逻辑代数的基本公式0、1律:$A+0=A\quadA+1=1\quadA\cdot1=A\quadA\cdot0=0$互补律:$A+\bar{A}=1\quadA\cdot\bar{A}=0$交换......
  • 篮球场规则
    篮球场规则欢迎来到本篮球场,这里是全市最大的篮球场。在这里你可以无忧无虑地打篮球,但请在进入场馆前仔细阅读这项规则,保证您的生命安全。1.本篮球场禁止穿背带裤,禁止......
  • Jmeter学习:配置原件--Random 随机变量/自定义变量/Jmeter 变量作用域和规则
    一、Random随机变量其用法与Counter计数器一样。后两个参数不常用,就不说明了  二、自定义变量通常用于进行脚本的参数化,将多个场景出现的常量采用变量统一替换,简......
  • 008statefulset的pvc命名规则
    有状态服务的存储状态下面我们来继续探究StatefulSet对存储状态的管理机制,在前面我们创建Pod需要使用存储的时候,只需要在资源文件中添加spec.volumes字段声明使用volume就......
  • MQTT+RocketMq+ICE规则引擎+BladeX实现车辆预警功能
     1.MQTT与车辆终端通讯接收V2X数据。2.消费emqx,监听同时将数据发送到rocketMQ的生产者。3.MQ消费者监听V2X的topic,且要保证消费顺序。4.feigin调用报警服务中的规则......
  • 规则不是用来打破的-设计规则-PCB系列教程1-8
     走在路上,有交通规则;玩个游戏,也有游戏规则。画PCB,当然也有PCB的设计规则。PCB的规则,一般用于约束PCB的布局与布线行为,不满足规则的行为无法实现,或者能够检查出来。比如说在......
  • Sentinel Go-毫秒级统计数据结构揭秘
    作者:binbin0325背景介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。在2020年,Sentinel社区推出SentinelGo版本,朝着云原生方向演进。SentinelGo是一......
  • Prometheus windows 监控规则 rules
    groups:-name:Redis.rulesrules:-alert:WinInstanceMemUsageHighexpr:100-(windows_os_physical_memory_free_bytes/windows_cs_physical_memo......
  • 【规则引擎】简易规则引擎在菜单权限的应用
    背景在年底,突发奇想,想对公司内部现有的菜单权限进行重新设计。观察了令人头疼的硬编码后,想出可用规则引擎进行重构。分析观察如下代码,硬编码,很临时,很敷衍。但其实用数......