Sentinel 热点规则 (ParamFlowRule)

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。

Springboot+Dubbo+Nacos 集成 Sentinel(入门)-CSDN博客

1.热点规则介绍

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。

Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。

热点参数规则(ParamFlowRule)类似于流量控制规则(FlowRule):

属性说明默认值
resource资源名,必填
count限流阈值,必填
grade限流模式QPS 模式
durationInSec统计窗口时间长度(单位为秒),1.6.0 版本开始支持1s
controlBehavior流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持快速失败
maxQueueingTimeMs最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持0ms
paramIdx热点参数的索引,必填,对应 SphU.entry(xxx, args) 中的参数索引位置
paramFlowItemList参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面 count 阈值的限制。仅支持基本类型和字符串类型)
clusterMode是否是集群参数流控规则false
clusterConfig集群流控相关配置

2.资源名(resource)

资源名,即限流规则的作用对象(可以是代码中指定名称或者指定路由)。

3.限流模式(grade)

默认QPS 模式。

4.参数索引(paramIdx)

热点参数的索引,必填,对应 SphU.entry(xxx, args) 中的参数索引位置。

5.限流阈值(count)

6.统计窗口时长(durationInSec)

统计窗口时间长度(单位为秒),1.6.0 版本开始支持。非集群模式

7.流控效果(controlBehavior)

流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持 ,默认快速失败

7.1 最大排队等待时长(maxQueueingTimeMs)

最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持。

8.是否是集群(clusterMode)

是否是集群参数流控规则。

8.1 集群阈值模式 (clusterConfig)

9.参数例外项(paramFlowItemList)

参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面 count 阈值的限制。仅支持基本类型和字符串类型)。

10. 测试示例

10.1 客户端代码

    @GetMapping(value = "/api/user/{id}")
    @SentinelResource(value = "u-getUserById")
    public String getUserById(@PathVariable("id") Long id) {
        return userService.getName();
    }

10.2 控制台-简单配置

10.3 控制台-例外配置 

特别注意:例外参数类型要与客户端参数一致否则类外配置失效 !!!

11.规则持久化

Sentinel 规则持久化-CSDN博客

持久化Json数据格式

[
	{
		"resource": "u-getUserById",
		"grade": 1,
		"paramIdx": 0,
		"count": 1,
		"controlBehavior": 0,
		"maxQueueingTimeMs": 0,
		"burstCount": 0,
		"durationInSec": 1,
		"paramFlowItemList": [
			{
				"object": "0",
				"count": 20,
				"classType": "long"
			}
		],
		"clusterMode": false,
		"clusterConfig": {
			"flowId": null,
			"thresholdType": 0,
			"fallbackToLocalWhenFail": true,
			"sampleCount": 10,
			"windowIntervalMs": 1000
		}
	}
]
spring:
  application:
    name: user
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        prefix: dubbo-user-api
        file-extension: yml
    sentinel:
      transport:
        dashboard: 127.0.0.1:6780
      eager: true # 取消懒加载
      datasource:
        ds-user-paramFlow-rule:
          nacos:
            server-addr: 127.0.0.1:8848
            dataId: user-paramFlow-rule
            groupId: user-sentinel
            namespace: sentinel
            rule-type: PARAM_FLOW # AUTHORITY(授权规则) DEGRADE(熔断规则) FLOW(流控规则) GW_API_GROUP GW_FLOW PARAM_FLOW(热点规则) SYSTEM(系统规则)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ui自动化概念 + Web自动化测试框架介绍!

1.UI自动化测试概念:我们先明确什么是UI UI,即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试,UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 …

远程文件包含演示

远程文件包含 基本介绍 受害机器 10.9.47.181 攻击者机器1 10.9.47.41 攻击者机器2 10.9.47.217 实现过程 受害者机器开启phpstudy 并且开启允许远程连接 攻击者机器1上有一个文件,内容是phpinfo(); 攻击者机器1提供web服务使得受害者机器能够访问到攻击者…

Linux latin1字符集转成UTF-8

latin1字符集,我用命令iconv转换后依旧乱码,但是本地用Notepad转成utf-8再入库数据,却是正常的 查看文件编码 vi WeakcoverReason_20231120.csv:set fileencoding使用编码转换命令,将latin1改成UTF-8 iconv -f latin1 -t UTF-8 W…

Android Termux安装MySQL,内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

管家婆订货易在线商城任意文件上传漏洞复现

0x01 产品简介 管家婆订货易,帮助传统企业构建专属的订货平台,PC微信APP小程序h5商城5网合一,无缝对接线下的管家婆ERP系统,让用户订货更高效。支持业务员代客下单,支持多级推客分销,以客带客,拓…

单链表相关面试题--5.将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的

/* 解题思路: 此题可以先创建一个空链表,然后依次从两个有序链表中选取最小的进行尾插操作进行合并。 */ typedef struct ListNode Node; struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){if(l1 NULL)return l2;else if(l2 …

【监控系统】日志可视化监控体系ELK搭建

1.ELK架构是什么 ELK是ElasticsearchLogstashKibana的简称。 Elasticsearch是一个开源的分布式搜索和分析引擎,可以用于全文检索、结构化检索和分析,它构建在Lucene搜索引擎库之上,是当前使用较为广泛的开源搜索引擎之一。 Logstash是一个…

如何实现MATLAB与Simulink的数据交互

参考链接:如何实现MATLAB与Simulink的数据交互 MATLAB是一款强大的数学计算软件,Simulink则是一种基于模型的多域仿真平台,常用于工程和科学领域中的系统设计、控制设计和信号处理等方面。MATLAB和Simulink都是MathWorks公司的产品&#xff0…

软件工程第十一周

面向对象 面向对象编程(Object-Oriented Programming, OOP)不仅仅是一种程序设计方法,它更是一种深刻的软件工程开发思想。这种思想的核心在于通过抽象和封装来模拟现实世界中的对象和概念,以便更好地管理和解决复杂的软件工程问…

渗透测试流程是什么?7个步骤给你讲清楚!

在学习渗透测试之初,有必要先系统了解一下它的流程,静下心来阅读一下,树立一个全局观,一步一步去建设并完善自己的专业领域,最终实现从懵逼到牛逼的华丽转变。渗透测试是通过模拟恶意黑客的攻击方法,同时也…

数字引领,智慧赋能|袋鼠云与易知微共同亮相2023智慧港口大会

2023年10月19日,由中国港口协会、中国交通通信信息中心、天津港(集团)有限公司主办,中国港口协会智慧港口专业委员会、《港口科技》杂志社等单位承办的以“数字引领 智慧赋能”为主题的“2023智慧港口大会”在天津顺利召开。 袋鼠…

el-tree 与table表格联动

html部分 <div class"org-left"><el-input v-model"filterText" placeholder"" size"default" /><el-tree ref"treeRef" class"filter-tree" :data"treeData" :props"defaultProp…

用对了吗?正确打开文件传输助手的方式

在这个高速发展的信息时代&#xff0c;我们每天都会面临一个重要的问题&#xff1a;如何在手机和电脑之间快速、高效地传输文件&#xff1f; 有时候&#xff0c;我们需要把工作中的一份报告从电脑传到手机&#xff0c;以便在路上查看&#xff1b;有时候&#xff0c;我们又想把手…

【Flask使用】全知识md文档,4大部分60页第3篇:状态cookie和session保持

本文的主要内容&#xff1a;flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用&#xff1a;宏、继承/包含、模板中特有变量和函数、Flask-WTF 表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy…

PC 477B西门子触摸屏维修6AV7853-0AE20-1AA0

西门子触摸屏维修故障有&#xff1a;上电黑屏, 花屏,暗屏,触摸失灵,按键损坏,电源板,高压板故障,液晶,主板坏等,内容错乱、进不了系统界面、无背光、背光暗、有背光无字符&#xff0c;上电无任何显示 &#xff0c;Power灯不亮但其他一切正常&#xff0c;双串口无法通讯 &#x…

密码加密解密之路

1.背景 做数据采集&#xff0c;客户需要把他们那边的数据库连接信息存到我们系统里&#xff0c;那我们系统就要尽可能的保证这部分数据安全&#xff0c;不被盗。 2.我的思路 1.需要加密的地方有两处&#xff0c;一个是新增的时候前端传给后端的时候&#xff0c;一个是存到数…

MySQL 之多版本并发控制 MVCC

MySQL 之多版本并发控制 MVCC 1、MVCC 中的两种读取方式1.1、快照读1.2、当前读 2、MVCC实现原理之 ReadView2.1、隐藏字段2.2、ReadView2.3、读已提交和可重复读隔离级别下&#xff0c;产生 ReadView 时机的区别 3、MVCC 解决幻读4、总结 MVCC&#xff08;多版本并发控制&…

公网环境下使用VNC远程连接Ubuntu系统桌面

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

基于变形卷积和注意机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)

原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…

基于Qt中操作MySQL数据库示例

# 一、安装驱动 ##(1)安装 在Qt中操作MySQL数据库首先要安装mysql的驱动文件,将MySQL下的libmusql.dll文件复制到Qt的安装路径下的bin文件夹下即可。 直接将libmysql.dll文件粘贴到此文件夹中。 ## (2)验证驱动是否安装成功 复制成功之后来测试一下驱动程序是否安装成功…