免费网页代理ip地址网站观澜做网站公司

pingmian/2025/10/9 15:06:57/文章来源:
免费网页代理ip地址网站,观澜做网站公司,wordpress查看,导购网站制作sentinel中监听器的运用–规则管理 规则结构 类图关系 类关系图如下 Rule 将规则抽象成一个类, 规则与资源是紧密关联的, 也就是说规则作用于资源。因此, 我们需要将规则表示为一个类, 并包含一个获取资源的方法 这里采用接口的原因就是规则是一个抽象概念而非具体实现。…sentinel中监听器的运用–规则管理 规则结构 类图关系 类关系图如下 Rule 将规则抽象成一个类, 规则与资源是紧密关联的, 也就是说规则作用于资源。因此, 我们需要将规则表示为一个类, 并包含一个获取资源的方法 这里采用接口的原因就是规则是一个抽象概念而非具体实现。所以我们将规则定义为接口, 让各个子类如黑白名单规则、流量控制规则、熔断降级等规则实现各自的逻辑 public interface Rule {// 获取资源 nameString getResource(); }AbstractRule 规则通用的三个字段, 设置抽象类实现Rule接口, 对下述字段复用 规则id资源名称限制来源 限制来源指的是诸如黑名单值、白名单值等, 也就是说限制哪些来源访问 // 实现规则 Rule 接口 public abstract class AbstractRule implements Rule {// 规则idprivate Long id;// 资源名称private String resource;// 限制来源, 多个用逗号隔开, 比如黑名单规则, 限制userId是1和3的访问, 那么就写setLimitApp(1,3)private String limitApp;Overridepublic String getResource() {return resource;} }为什么limitApp不使用 ListString 其实两者都是可行的, 你可以使用逗号分隔, 也可以使用 ListString, 只要能满足需求即可 规则管理 PropertyListener接口 如何管理这些规则呢比如如何感知到规则的变化 sentinel采用的是监听器监听规则的变化, 这个监听器是PropertyListener /*** 当SentinelProperty.updateValue(Object) 需要通知监听器时, 此类保存回调方法* 这里的泛型T存储的是规则, 如 AuthorityRule、DegradeRule、FlowRule 等*/ public interface PropertyListenerT {/*** 规则变更时触发的方法* param value 更新的value*/void configUpdate(T value);/*** 首次加载规则时触发* param value value加载的值*/void configLoad(T value); }为什么使用泛型 T 而不是接口 Rule我们 AuthorityRule、DegradeRule 等类不都是接口 Rule 的子类吗 这里使用泛型 T 是因为此接口不仅服务于规则 Rule, 还服务于Sentinel的其他场景, 所以采用了泛型 T 因此, 会有很多具体的类去实现 PropertyListenerT, 并传入具体的类型, 例如, FlowPropertyListener // com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManagerpublic class FlowRuleManager {// 其他代码...// 这个是内布类, 实现 PropertyListener 接口, 并传入具体的类型 ListFlowRuleprivate static final class FlowPropertyListener implements PropertyListenerListFlowRule {// 方法参数也是具体类型, 而不是泛型 TOverridepublic synchronized void configLoad(ListFlowRule value) {// 做一些变更逻辑}// 方法参数也是具体类型, 而不是泛型 TOverridepublic synchronized void configUpdate(ListFlowRule conf) {// 做首次初始化逻辑}}// 其他代码... }为什么类型是 ListFlowRule 而不是FlowRule呢? 因为一个资源可以对应多个规则, 而不是简单的一个规则, 比如上线的流控规则, QPS是一种, 线程数又是一种, 一个资源多种策略, 一对多的关系, 所以采用List集合 PropertyListenerT的实现类如下图 SentinelProperty接口 SentinelProperty 的类, 专门负责管理所有 PropertyListenerT 子类的监听器 包含以下方法 addListener(PropertyListenerT listener)添加监听器。removeListener(PropertyListenerT listener)移除监听器。updateValue(T newValue)当规则配置发生变化时, 调用此方法进行通知 public interface SentinelPropertyT {// 添加监听器void addListener(PropertyListenerT listener);// 移除监听器void removeListener(PropertyListenerT listener);// 当配置发生变化时, 通过调用 SentinelProperty 的 updateValue 方法通知所有的监听器boolean updateValue(T newValue); }DynamicSentinelProperty Sentinel 提供了一个默认的 SentinelProperty 实现DynamicSentinelProperty // 实现 SentinelProperty 接口 public class DynamicSentinelPropertyT implements SentinelPropertyT {// 使用 CopyOnWriteArraySet 存储所有监听器 PropertyListener 子类, 确保线程安全和高性能protected SetPropertyListenerT listeners new CopyOnWriteArraySet();private T value null;public DynamicSentinelProperty() {}public DynamicSentinelProperty(T value) {super();this.value value;}// 添加监听器到集合Overridepublic void addListener(PropertyListenerT listener) {listeners.add(listener);// 添加进来后就会初始化规则配置listener.configLoad(value);}// 移除监听器Overridepublic void removeListener(PropertyListenerT listener) {listeners.remove(listener);}// 更新值Overridepublic boolean updateValue(T newValue) {// 如果值没变化, 直接返回if (isEqual(value, newValue)) {return false;}// 如果值发生了变化, 则告知每一个“观察者value newValue;for (PropertyListenerT listener : listeners) {listener.configUpdate(newValue);}return true;} }监听器监听的是规则而规则又是和资源绑定的因此具体使用时我们可以创建一个 MapString resourceName, SetRule 这样的数据结构来保存资源和规则的关系 当规则首次初始化时调用 SentinelProperty#addListener() 方法注册监听器且进行初始化初始化的过程就是将资源和规则绑定到 Map 当中当规则发生变更时调用 SentinelProperty#updateValue() 方法将 Map 里的value进行变更 参考资料 通关 Sentinel 流量治理框架 - 编程界的小學生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

废旧网站那个做的最好网站模板出售

咨询区 Guilherme Ferreira:我通过 post 方式向我的一个webapi中提交数据,然后插入到数据库中,在 ui端,当用户点击某一个 button 之后,代码会将 button 禁用,但因为某些原因,点击按钮的速度比禁…

购物网站的首页是静态详细描述建设一个网站的具体步骤

文章目录 [toc]试题编号试题名称时间限制内存限制问题描述输入格式输出格式样例输入样例输出样例说明评测用例规模与约定Python实现 试题编号 202309-1 试题名称 坐标变换(其一) 时间限制 1.0s 内存限制 512.0MB 问题描述 对于平面直角坐标系上的坐标 (…

无锡专业做网站望野王绩翻译

Express 框架 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定…

网站搭建哪家好网站建设费用的会计分录

姑姑和堂弟从老家呼伦贝尔来北京,我拍下了这张照片。

龙华网站开发公司电话情人节给女朋友做网站

文章目录1. 进入配置文件2. 环境变量添加格式3.使配置文件立即生效4. 实例1. 进入配置文件 sudo vim /etc/profile2. 环境变量添加格式 export 变量名路径 export PATH${PATH}:${变量名}/子路径3.使配置文件立即生效 source /etc/profile4. 实例 export MAVEN_HOME/usr/lo…

网站开发制作报价单网站 多少篇文章才能上线

1、认识一下小小蛮驴真面目 1.1、组件部分 HaaS100核心板 HaaS100是一款物联网场景中的标准硬件,并配套嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。 HaaS100核心板有着丰富的外设接口,如下所示: 智…

做网站别名解析的目的是什么网站建设简讯

cc_gbif()是R语言包coordinatecleaner中的一个函数,用于清理GBIF(全球生物多样性信息设施)数据集的地理坐标。该函数可以识别潜在的坐标错误,并对其进行修正或删除。 以下是cc_gbifl()函数的一般用法和主要参数: cc_…

网站建设 企业机房托管

2019独角兽企业重金招聘Python工程师标准>>> 防止黑客入的方法有很多,但是世界上没有绝对安全的系统。我们只可以尽量避免被入侵,最大的程度上减少伤亡。那么,接下来天下数据将为您详细介绍防止黑客入侵的五大技巧。(本文为天下数…

著名设计案例网站网站一般用什么语言

vue2面试题:vue组件之间的通信方式有哪些? 回答思路:1.组件通信的目的-->2.组件通信的分类-->3.组件通信的方案1.组件通信的目的2.组件通信的分类3.组件通信的方案(1)通过props传递数据(2&#xff09…

网站建设到底怎么回事河南便宜网站建设费用

这个onvif工具可以实时监控画面,使用起来简单方便 左侧一栏是设备信息,中间上半部分是设备配置设置,下半部分是图像预览配置设置。 修改密码可通过该工具,点击User management后选择用户类型并且修改密码。

绍兴柯桥建设局网站广告设计软件手机版

MySQL提供了许多数字函数,用于对数字进行各种计算和处理。以下是一些常用的MySQL数字函数。 内容有点多,建议收藏以备后续用到查阅参考。 目录 一、SIGN 取数字的符号 二、ABS 取绝对值 三、COS 取余弦值 四、ACOS 取反余弦值 五、SIN 取正弦值 六…

枣庄做网站建设的公司附近培训电脑的地方

目录 一、下载程序 1. 点击Download 2. 点击Files for Microsoft Windows 3. 点击Apache Lounge 4. 点击httpd-2.4.54-win64-VSI6.zip ​5. 下载压缩包 6.解压到文件夹里 二、配置环境变量 1. 右键我的电脑 - 属性 2. 高级系统设置 3. 点击环境变量 4. 点击系统变…

深圳网站开发服务流行网站类型

列表查询中一对多查询循环查询优化,mysql循环查询优化描述比如查询学生列表,每一行需要包含该学生的家长列表,一个学生对应多个家长。循环查询方式先查出学生列表,再循环查询对应的家长列表,需要查询N1次但在循环中查询…

设计高端网站建设上海电子商务网站制作公司

摘要: 如果您是一个大数据开发工程师并且使用过hadoop的hive框架,那么恭喜您,阿里云的大数据计算服务-Maxcompute,您已经会了90%。这篇文章就来简单对比下Maxcompute和hive的异同,来方便刚开始使用Maxcompute的用户&am…

无锡网站制作推广公司专业外贸网站建设

今天继续给大家分享JVM的相关知识,今天介绍一下JVM内存区域的程序计数器。 1、程序计数器概念 JVM中的程序计数寄存器(Program Counter Register)中Register的命名来源于CPU的寄存器,寄存器用来存储指令相关的现场信息。 CPU只…

机械厂网站建设方案交易所网站建设

近日,国际权威IT咨询机构IDC发布《中国数据安全市场发展趋势,2023》报告,报告针对中国数据安全市场的发展现状进行调研,明确了最终用户数据安全建设的痛点、难点,阐述了市场中各技术服务提供商的服务方案和优势。 美创…

扬州网站建设价格安国网站建设

目录: 第一部分 IPv6的诞生背景和引起的主要变化 第二部分 IPv6数据报的基本首部和扩展首部 第三部分 IPv6地址 第四部分 IPv4向IPv6过渡 第一部分 IPv6的诞生背景和引起的主要变化 一.IPv6的诞生背景 IPv4存在设计缺陷: IPv4的设计者最初并没有想到该协议会在全球范围内广…

网站建设技术入股合同建设银行官方网站入口

最近GPT概念爆火,许多行业开始竞相发展AI ,工作就业也将面临跳转,目前测试就业形势就分为了两大类,一类是测试行业如功能、性能、自动化综合性人才就业技能需求,另一类便是AI测试行业的需求普遍增长,原本由…

哪些网站可以做翻译兼职湖北专业网站制作公司

在产品质量 检测过程中,对于字符、条码等标识信息的识别、读取、检测是非常重要的一部分,比如在食品饮料包装检测中,生产日期 、保质期 、生产批号 、条码等字符信息是产品管理和追溯必不可缺的,因此利用机器视觉技术进行OCR字符采…

东莞好的网站建设效果professional wordpress pdf

ISA Server的下个版本TMG2010已经发布有一段时间了,现在正在逐渐将原来的ISA Server 2006升级到TMG2010。由于TMG2010需要64位的CPU与Windows Server 2008操作系统,所以,如果原来的ISA Server 2006是安装在32位的CPU的服务器中,则…