SpringCloud Alibaba Sentinel 热点参数限流和系统保护规则

news2024/12/21 19:55:46

Wiki地址:WIKI热点参数限流

官网地址:https://sentinelguard.io/zh-cn/docs/parameter-flow-control.html

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

  • 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
  • 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制

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

在这里插入图片描述

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

① controller方法

这里使用注解@SentinelResource定义资源名和异常处理方法deal_testHotKey,该方法针对BlockException 有效。

@SentinelResource处理的是Sentinel控制台配置的违规情况,有blockHandler方法配置的兜底处理。方法运行时报出的运行时异常RunTimeException,@SentinelResource不管。如果需要处理方法运行时异常,可以考虑使用 fallback 配置。

@GetMapping("/testHotKey")
// 名字可以随意起,但为唯一标识
@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey")
// required 表示是否必须包含此参数
public String testHostKey(@RequestParam(value = "p1",required = false) String p1,
    @RequestParam(value="p2",required = false)String p2){
    System.out.println(p1);
    return "testHostKey";
}

public String deal_testHotKey(String p1, String p2, BlockException exception){
    return "deal_testHotKey";
}

② 添加热点规则

如下图所示当请求携带了方法参数索引下标为0,也就是第一个参数时,使用如下规则:QPS/1 。

在这里插入图片描述

频繁发送请求:http://localhost:8401/testHotKey?p1=a&p2=b,会出现如下提示。这里deal_testHotKey 是我们自定义异常处理方法返回的信息。

在这里插入图片描述

从监控界面可以看到拒绝QPS:

在这里插入图片描述

③ 不携带p1测试

我们频繁发送请求,http://localhost:8401/testHotKey?p2=b,如下图所示并没有限流

在这里插入图片描述

上图中第一个资源的通过QPS是第一个资源的2倍,应该是重复统计了,阿里的一个bug。

④ 参数例外项

其实就是特例情况,我们期望p1参数当它是某个特殊值时,它的限流值和平时不一样。假如当p1的值等于5时,它的阈值可以达到200。

我们可以 编辑热点规则,在高级选项那边添加例外项。这里热点参数必须是基本类型或者String。
在这里插入图片描述

如下所示,当我们频繁发起请求 http://localhost:8401/testHotKey?p1=5&p2=b,并没有被限流。

在这里插入图片描述

但是当我们把请求 修改为 http://localhost:8401/testHotKey?p1=3&p2=b,QPS大于1时就被限流。

在这里插入图片描述

⑤ 系统保护规则

官网文档:系统自适应保护

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

如下所示,可以添加不同维护的系统保护规则:其针对的是应用纬度而非资源纬度。

在这里插入图片描述

系统保护规则是从应用级别的入口流量进行控制,从单台机器的总体 Load、RT、入口 QPS 和线程数四个维度监控应用数据,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。入口流量指的是进入应用的流量(EntryType.IN),比如 Web 服务或 Dubbo 服务端接收的请求,都属于入口流量。

系统规则支持以下的阈值类型:

  • Load(仅对 Linux/Unix-like 机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的 maxQps * minRt 计算得出。设定参考值一般是 CPU cores * 2.5。
  • CPU usage(1.5.0+ 版本):当系统 CPU 使用率超过阈值即触发系统保护(取值范围 0.0-1.0)。
  • RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。
  • 线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
  • 入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。

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

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

相关文章

Mybatis中BaseEntity作用

新建各种对象的时候,一般来说,有几个属性是所有对象共有的,比如说id,is_del,is_enable这些,然后设置一个基础对象,以后新建所有对象的时候都继承它,就省的每次都要写这些共有的属性了

【Day01】0基础微信小程序入门-学习笔记

文章目录 今日学习目标小程序简介1. 小程序和普通网页开发的区别2. 体验小程序 第一个小程序1.第一个小程序-注册2.第一个小程序-安装开发者工具3.第一个小程序-创建小程序项目 小程序代码构成1.小程序代码构成-项目结构2. 小程序代码构成-JSON文件3. 小程序代码构成-WXML模板4…

视听分割相关论文阅读

1. End-to-End Referring Video Object Segmentation with Multimodal Transformers RVOS(视频中的参考对象分割)比RIS(图像中的参考对象分割)要困难得多,因为指代动作的文本表达通常无法从单个静态帧中正确推断出来。…

商超仓库管理系统

摘要 随着全球经济和互联网技术的快速发展,依靠互联网技术的各种管理系统逐渐应用到社会的方方面面。各行业的有识之士都逐渐开始意识到过去传统的人工管理模式已经逐渐成为企业发展的绊脚石,不再适应现代企业的发展需要。企业想要得到更好的发展&#…

工业AIoT竞赛

模块一:工业物联环境构建 # 查看节点状态 kubectl get nodes # 查看所有 pods 状态 kubectl get pods --all-namespaces cd /data/script/ ls | grep install_openyurt_manager # ./install_openyurt_manager_v5.sh是搜索到的脚本文件 ./install_openyurt_manager_v…

找不到com.fasterxml.jackson.core.exc.StreamWriteException的类文件

1. 前言: 使用springboot搭建的项目, 需要使用 jackson 更改json文件的内容; maven管理jar包, 导入jar包版本信息如下: <!-- 读写json文件所需依赖 --> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databin…

HarmonyOS最佳实践文档总结汇总(面试题可能会问)

api12 上面来了最佳实现方案&#xff0c;未来面试题有的问了 编号分类内容子类链接 1性能体验设计体验设计概述 文档中心用户体验设计 文档中心流畅评测指标 文档中心交互流畅体验设计 文档中心视觉流畅体验设计 文档中心2性能优化开发高性能ArkUIUI组件性能优化文档中心合…

QT-QPainter实现一个可切换的开关控件

1、效果 2、核心代码 #ifndef SWITCH_H #define SWITCH_H #include <QWidget> #include <QTimer>

前缀和+双指针,CF 131F - Present to Mom

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 131F - Present to Mom 二、解题报告 1、思路分析 很经典的一种把列看作cell 来进行双指针/递推的题型 我们考虑&#xff0c;可以预处理出原矩阵中的所有star 然后我们去枚举矩形的上下边界&#xff0c;把…

【教程】hexo 更换主题后,部署在 Github Page 无 CSS 样式

目录 前言环境hexo 更换主题解决部署到 Github Page 后无 CSS 样式的问题 前言 最近更换了 hexo 的主题后&#xff0c;重新部署到 Github Page 上发现不显示 CSS 样式&#xff0c;但在本地启动时又是正常的效果。此外&#xff0c;检查资源请求&#xff0c;发现多个 .css 文件请…

数据仓库与数据库的区别

在数据管理和分析的过程中&#xff0c;我们常常会听到“数据库”和“数据仓库”这两个术语。 虽然它们看起来相似&#xff0c;但实际上它们在设计目的、结构和使用场景上都有显著的区别。 数据库是什么&#xff1f; 数据库&#xff08;Database&#xff09;是一个用于存储和管…

如何调用讯飞星火认知大模型的API以利用其卓越功能

摘要 讯飞星火认知大模型&#xff0c;作为科大讯飞精心打造的一款人工智能模型&#xff0c;在自然语言理解和生成方面展现出了卓越的能力。这款模型通过深度学习技术和大量数据的训练&#xff0c;具备了强大的语言理解、文本生成和对话交互等功能。 一、模型功能概述 讯飞星…

单木:面试官超爱问的字符串,今天给它彻底讲透

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。今天这边文章&#xff0c;想和大家聊聊有关字符串的问题&#xff0c;字符串似乎很简单&#xff0c;但其实字符串几乎…

算法训练与程序竞赛题目集合(L2)

目录 L2-001 城市间紧急救援 输入格式: 输出格式: 输入样例: 输出样例: L2-002 链表去重 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; L2-003 月饼 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; …

“开放”的大模型到底有多“开放”?!

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

线程池的简介

定义 线程池就是使用多线程的方式&#xff0c;将任务添加到队列中任务都是runnable或者callable的实现类 优点 线程和任务分离&#xff0c;任务可以复用线程池统一管理线程&#xff0c;线程可以复用避免因为开启和销毁线程造成的资源浪费 官方线程池的参数分析 深度理解 线程池…

Spring Security+Spring Boot实现登录认证以及权限认证

基本概念 “Authentication(认证)”是spring security框架中最重要的功能之一&#xff0c;所谓认证&#xff0c;就是对当前访问系统的用户给予一个合法的身份标识&#xff0c;用户只有通过认证才可以进入系统&#xff0c;在物理世界里&#xff0c;有点类似于“拿工卡刷门禁”的…

百度安全X盈科全球数据合规服务中心:推进数据安全及合规智能化创新领域深化合作

6月19日&#xff0c;百度安全与盈科全球数据合规服务中心举行合作签约仪式&#xff0c;双方将充分发挥各自优势&#xff0c;在数据安全及合规智能化创新领域深化合作&#xff0c;在遵守国家法律法规和顺应市场规则的前提下&#xff0c;推动地方经济社会发展&#xff0c;促进企业…

2-11 基于matlab的BP-Adaboost的强分类器分类预测

基于matlab的BP-Adaboost的强分类器分类预测&#xff0c;Adaboost是一种迭代分类算法&#xff0c;其在同一训练集采用不同方法训练不同分类器&#xff08;弱分类器&#xff09;&#xff0c;并根据弱分类器的误差分配不同权重&#xff0c;然后将这些弱分类器组合成一个更强的最终…

20240620每日后端---------Spring Boot中的 5 大设计模式最佳实践和示例 这些是我经常使用的设计模式并且非常喜欢

在本文中&#xff0c;我们将深入探讨五种基本设计模式&#xff0c;并探讨在 Spring Boot 项目中有效应用它们的最佳实践。每个模式都将附有一个实际示例来演示其实现。 单例模式 Singleton 模式确保一个类只有一个实例&#xff0c;并提供对它的全局访问点。这对于管理资源&am…