当前位置: 首页 > news >正文

SpringCloud-Alibaba之Sentinel熔断与限流

在这里插入图片描述
在这里插入图片描述

一、下载安装运行

http://localhost:8080进行访问
登录账号和密码均为sentinel
github.com/alibaba/sentinel/releases

二、创建工程,并注册到nacos服务中心

  1. 依赖spring-cloud-starter-alibaba-nacos-discovery,spring-cloud-starter-alibaba-sentinel
    sentine-datasource-nacos (持久化)
  2. 配置文件
server:port: 8401
spring:application:name: cloudalibaba-sentinel-servicecloud:nacos:discovery:server-addr: localhost:8848sentinel:transport:dashboard: localhost:8080 # 8080监控8401port: 8719 # 假如被占用会自动从8719开始依此+1扫描,直至找到未被占用的端口
management:endpoints:web:exposure:include: '*'
  1. 启动类
@EnableDiscoveryClient
@SpringBootApplication
public class MainApp8401{public static void main(String[] args){SpringApplication.run(MainApp8401.class,args);}
}
  1. 业务类
@RestController
public class FlowlimitController{@GetMapping("/testA")public String testA(){return "------testA";}@GetMapping("/testB")public String testB(){return "-------testB";}
}

三、启动sentinel java -jar sentinel-dashboard-1.7.0.jar 启动微服务8401,查看sentinel控制台

Sentinel流控规则

在这里插入图片描述

QPS:每秒钟请求数量达到阈值进行限流,连续多次刷新请求即可。
线程数:调用该请求的线程数达到阈值进行限流,再代码中添加thread.sleep(3),然后多次刷新请求即可模拟出来

在这里插入图片描述

关联资源,当关联资源/testB的QPS阈值超过1,就限流/testA的Rest访问地址
利用postman进行模拟
在这里插入图片描述

Sentinel流控效果

在这里插入图片描述

严格控制请求通过的间隔时间,就是让请求匀速通过,对应的是漏桶算法。
在这里插入图片描述

降级规则

在这里插入图片描述
RT:平均响应时间,秒级。

  • 平均响应时间超出阈值且在时间窗口内通过的请求>=5,两个条件同时满足触发降级
  • 窗口期过后关闭断路器
  • RT最大4900(更大需要通过-Dcsp.sentinel.statistic.max.rt=XXXX才能生效)
    在这里插入图片描述
@GetMapping("/testD")
public String testD(){try{TimeUnit.SECONDS.sleep(1);}catch(InterruptedException e){e.printStackTrace();}log.info("testD测试RT");return "testD"
}

在这里插入图片描述

异常比例:秒级

  • QPS>=5且异常比例(秒级统计)超过阈值触发降级,时间窗口结束,关闭降级
    在这里插入图片描述
@GetMapping("/testD")
public String testD(){log.info("testD异常比例");int age = 10/0;return "testD"
}

在这里插入图片描述

异常数:分钟级

  • 异常数(分钟统计)超过阈值时,触发降级,时间窗口结束后,关闭降级
    在这里插入图片描述
@GetMapping("/testE")
public String testE(){log.info("testE测试异常数");int age = 10/0;return "testE 测试异常数";
}

热点Key限流

商品ID为参数,统计一段时间内最常购买的商品ID并进行限制
用户ID为参数,统计一段时间内频繁访问的用户ID进行限制
在这里插入图片描述

@GetMapping("/testHotKey")
@sentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey")
public String testHotKey(@RequeestParam(value = "p1",required = false) String p1,@RequeestParam(value = "p2",required = false) String p2){return "--------testE 测试异常数";
}public String deal_testHotKey(String p1,String p2,BlockException exception){return "--------deal_testHotKey 测试异常数";
}

对第0个参数p1,进行阈值限定。
在这里插入图片描述
在这里插入图片描述

参数例外项,对参数指定的值进行阈值设定,如下所示:当参数为5,限流阈值改为200
在这里插入图片描述

系统规则

在这里插入图片描述

自定义限流处理逻辑

@GetMapping("/rateLimit/customerBlockHandler")
@SentinelResource(value = "customerBlockHandler",blockHandlerClass = CustomerBlockHandler.class,blockHandler = "handlerException2") //指定处理限流的类以及方法
public CommonResult customerBlockHandler(){return new CommonResult(200,"按客户自定义",new Payment(2020L,"serial002"));
}
/**另外创建一个handler包创建CustomerBlockHandler类自定义限流处理逻辑可以定义多个方法
*/
public class CustomerBlockHandler{public static CommonResult handlerException(BlockException exception){return new CommonResult(444,"按客户自定义自定义处理",new Payment(2020L,"serial002"));}public static CommonResult handlerException2(BlockException exception){return new CommonResult(444,"按客户自定义自定义处理",new Payment(2020L,"serial002"));}
}

@SentinelResource注解的属性

Controller中

@SentinelResource(value = "fallback",fallback = "handlerFallback") //只负责业务异常@SentinelResource(value = "fallback",blockHandler = "blockHandler") //赋值sentinel控制台的设置出现异常

若blockHandler和fallback都进行了配置,则被限流降级而抛出BlockException时只会进入blockHandler处理逻辑

远程调用接口@FeignClinet进行Sentinel组合

Sentinel规则持久化

将限流配置规则持久化到Nacos保存,只要刷新rest地址,sentinel控制台就能显示出流控规则。

一、工程中引入依赖

sentinel-datasource-nacos

二、配置文件中
在这里插入图片描述
三、nacos中添加配置列表,添加json配置规则
在这里插入图片描述

四、sentinel控制台就可以查到流控规则
在这里插入图片描述

相关文章:

SpringCloud-Alibaba之Sentinel熔断与限流

一、下载安装运行 http://localhost:8080进行访问 登录账号和密码均为sentinel 二、创建工程,并注册到nacos服务中心 依赖spring-cloud-starter-alibaba-nacos-discovery,spring-cloud-starter-alibaba-sentinel sentine-datasource-nacos (持久化)配置文件 se…...

深“扒”云原生高性能分布式文件系统JuiceFS

JuiceFS 是一款面向云原生设计的高性能分布式文件系统,在 Apache 2.0 开源协议下发布。提供完备的 POSIX 兼容性,可将几乎所有对象存储接入本地作为海量本地磁盘使用,亦可同时在跨平台、跨地区的不同主机上挂载读写。 JuiceFS 简介 JuiceFS…...

opencv-18 什么是色彩空间?

1.什么是色彩空间类型? 色彩空间类型,也称为颜色空间类型或色彩模型,是一种表示图像中颜色的方式。在计算机图形学和数字图像处理中,有许多种色彩空间类型,每种类型有不同的表达方式和特点。 常见的色彩空间类型包括&a…...

RedHat离线安装工具yum+gcc+pcre+zlib+openssl+openssh

RedHat离线安装工具yumgccpcrezlibopensslopenssh 【一】安装gcc-c(解决yum不可用问题)(1)问题描述(2)替换安装yum(3)安装gcc 【二】安装pcre【三】安装zlib【四】安装openssl【五】…...

Redis概述及安装、使用和管理

目录 一、NoSQL非关系型数据库 1.NoSQL概述 2.关系型数据库和非关系型数据库区别 (1)数据存储方式不同 (2)扩展方式不同 (3)对事务性的支持不同 3.非关系型数据库使用场景 二、Redis概述 1.简介 2…...

【算法第十一天7.25】二叉树前、中、后递归、非递归遍历

链接:力扣94-二叉树中序遍历 链接:力扣144-二叉树前序遍历 链接:力扣145-二叉树后序遍历 树的结构 * public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { thi…...

Linux搭建Promtail + Loki + Grafana 轻量日志监控系统

一、简介 日志监控告警系统,较为主流的是ELK(Elasticsearch 、 Logstash和Kibana核心套件构成),虽然优点是功能丰富,允许复杂的操作。但是,这些方案往往规模复杂,资源占用高,操作苦…...

[PyTorch][chapter 44][RNN]

简介 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网…...

20230726----重返学习-vue3项目实战-知乎日报第3天-TS-简历

day-121-one-hundred-and-twenty-one-20230726-vue3项目实战-知乎日报第3天-TS-简历 vue3项目实战-知乎日报第3天 封装按钮组件 jsx函数式组件 只能做静态页面,内部没有方法让它自动更新。 封装第三方按钮-非计算属性版 封装第三方按钮-不使用计算属性 src/c…...

TypeScript 在前端开发中的应用实践

TypeScript 在前端开发中的应用实践 TypeScript 已经成为前端开发领域越来越多开发者的首选工具。它是一种静态类型的超集,由 Microsoft 推出,为开发者提供了强大的静态类型检查、面向对象编程和模块化开发的特性,解决了 JavaScript 的动态类…...

商业密码应用安全性评估量化评估规则2023版更新点

《商用密码应用安全性评估量化评估规则》(2023版)已于2023年7月发布,将在8月1日正式执行。相比较2021版,新版本有多处内容更新,具体包括5处微调和5处较大更新。 微调部分(5处) 序号2021版本202…...

【软件测试】单元测试工具---Junit详解

1.junit 1.1 junit是什么 JUnit是一个Java语言的单元测试框架。 虽然我们已经学习了selenium测试框架,但是有的时候测试用例很多,我们需要一个测试工具来管理这些测试用例,Junit就是一个很好的管理工具,简单来说Junit是一个针对…...

【算法基础:搜索与图论】3.4 求最短路算法(Dijkstrabellman-fordspfaFloyd)

文章目录 求最短路算法总览Dijkstra朴素 Dijkstra 算法(⭐原理讲解!⭐重要!)(用于稠密图)例题:849. Dijkstra求最短路 I代码1——使用邻接表代码2——使用邻接矩阵 补充:稠密图和稀疏…...

【Matlab】基于卷积神经网络的数据分类预测(Excel可直接替换数据)

【Matlab】基于卷积神经网络的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码6.完整代码7.运行结果1.模型原理 基于卷积神经网络(Convolutional Neural Network,CNN)的数据分类预测是一种常见的深度学习方法,广泛应用于图像识…...

【C++ 重要知识点总结】自定义类型-枚举和联合

复杂类型 除了类之外还有Union、Enum连个特殊的类型。 Union 概念 union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。 union Token{char cval;int ival;double dval; };用法 互斥赋值。在任意时刻&#xff0c…...

Centos MySql安装,手动安装保姆级教程

1.删除原有的mariadb,不然mysql装不进去 查询MAriaDB命令 rpm -qa|grep mariadb 删除 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 (yum -y remove mysql 如需要清除服务器上以前安装过的MySQL可执行此命令,执行前一…...

电脑C盘空间大小调整 --- 扩容(扩大/缩小)--磁盘分区大小调整/移动

概述: 此方法适合C盘右边没有可分配空间(空闲空间)的情况,D盘有数据不方便删除D盘分区的情况下,可以使用傲梅分区助手软件进行跨分区调整分区大小,不会损坏数据。反之可直接使用系统的磁盘管理工具进行调整…...

centos7设置网桥网卡

安装bridge-utils yum install bridge-utils修改ens33 网卡 TYPEEthernet BOOTPROTOnone DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno NAMEens33 UUID04b97484-25c8-45c7-8c8c-e335e8080e10 DEVICEens33 ONBOOTye…...

TCP模型和工作沟通方式

我们如何与客户沟通?理科生和技术人员可能在沟通技巧方面有所欠缺。 那么我们如何理解和掌握沟通的原则和技巧呢?我发现TCP网络交互模型很好的描述了沟通的原则和要点。下面我们就从TCP来讲沟通的过程。 TCP的客户端就像客户(甲方&#xff…...

Langchain 的 ConversationSummaryBufferMemory

Langchain 的 ConversationSummaryBufferMemory ConversationSummaryBufferMemory 在内存中保留最近交互的缓冲区,但不仅仅是完全刷新旧的交互,而是将它们编译成摘要并使用两者。但与之前的实现不同的是,它使用令牌长度而不是交互次数来确定何…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

Java高级 |【实验八】springboot 使用Websocket

隶属文章:Java高级 | (二十二)Java常用类库-CSDN博客 系列文章:Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…...

Ubuntu 可执行程序自启动方法

使用 autostart(适用于桌面环境) 适用于 GNOME/KDE 桌面环境(如 Ubuntu 图形界面) 1. 创建 .desktop 文件 sudo vi ~/.config/autostart/my_laser.desktop[Desktop Entry] TypeApplication NameMy Laser Program Execbash -c &…...

设备健康管理的范式革命:中讯烛龙全链路智能守护系统

当工业设备的“亚健康”状态导致隐性产能损失高达23%时,中讯烛龙推出 ​​“感知-诊断-决策-闭环”四位一体解决方案,让设备全生命周期健康管理成为企业增长的隐形引擎。 一、行业痛点:传统运维的三大断层 1. 健康感知盲区 某风电场因无法捕…...

分享今天做的力扣SQL题

其实做之前就打算分享的,但是做完又不想分享了。。。结果没几分钟,还是,写一下吧。我就当各位是监督我的。 说一下,这是第一天做SQL题,虽然我也是软件工程专业,但是学的本来就不好,又忘了个差不…...