首页 > 其他分享 >springcloud的热点数据进行流控

springcloud的热点数据进行流控

时间:2024-09-25 10:22:55浏览次数:1  
标签:阈值 流控 springcloud 入参 限流 参数 热点 id

简单理解就是,同样请求一个接口的入参,针对该参数对应是规定值的数据请求,进行控制,比如我一个接口的一个参数为id,如果id值为1002、1003的入参进行热点控制,别的id值不控制随意请求。

采用的是sentinel进行热点数据控制

 

 设置如下

这个热点设置,需要借助@SentinelResource进行实现,这个资源名就是该注解中的value对应的值

限流模式:采用QPS模式;

参数索引:就是对该资源下哪个参数进行热点控制,比如接口中有3个入参,你需要对第二个入参进行热点控制,那此处就是填写1(注意,是从0开始的整数,0代表接口中第一个入参);

单机阈值:①如果大部分是热点数据,那就针对热点数据进行流控,即此处填写的热点流量的阈值(比如10000);②如果大部分是普通数据,那就针对普通流量进行设置阈值(比如10)。

统计窗口时长:可以根据场景设置。假如填写1s,意思就是1秒内QPS为10次的时候进行控制

点击高级选项,下面就是针对具体的需要特殊处理的热点数据进行流量控制,参数类型就是入参类型是什么,参数值就是该参数索引对应入参的那个值对应具体的数据,限流阈值也就是该入参为参数值的时候,超过这个限流阈值的时候就会被限流,如上图所示就是,当第1个参数(类型为int),值为1的时候,限流阈值2。

以下为代码demo:

@RestController
@RequestMapping("/order")
public class OrderController {


    @GetMapping("/hotData/{id}/")
    @SentinelResource(value = "getById",blockHandler = "HotDataBlockHandler")
    public String getById(@PathVariable Integer id){
        System.out.println("id = " + id);return "正常访问";
    }

    public String HotDataBlockHandler(@PathVariable Integer id,BlockException e){
        return "热点数据异常处理";
    }

当1秒内请求超过2次就会被限流

 当然,这里的热点配置,一个接口多个入参,而只能是一个入参设置为热点限流,也就是说,如果某个接口有四个参数,而这四个参数都需要做热点控制,那就需要设置四个(一般不会出现这样的情况),这个就很不人性化,应该是后面sentinel后面的版本会有更好的解决方法。

 

以上内容纯学习使用!

 

标签:阈值,流控,springcloud,入参,限流,参数,热点,id
From: https://www.cnblogs.com/qwg-/p/18430825

相关文章

  • springcloud中sentient整合openfeign组件
    openfeign作为微服务各个模块之间调用的组件,如果服务提供方出现异常,会将错误返回给服务消费方,消费方可以通过sentinel的服务降级方法,对如果调用异常的情况进行处理以下介绍下具体做法:一、服务消费方必须整合openfeign,方法可以参考:https://www.cnblogs.com/qwg-/p/18007449pom.x......
  • 基于django+vue热点新闻搜索系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,信息爆炸式增长已成为现代社会的重要特征。每日海量的新闻资讯充斥着各类媒体平台,用户如何快速、准确地从浩如烟......
  • springcloud中流控和熔断
    接下去简单介绍下如何利用sentinel的dashboard进行流控和熔断。一、流控(服务提供方设置)1、在簇点链路找到对应资源名,点击流控,选择QPS或者线程数,单位是秒,设置单机阈值流控:QPS:每秒访问数;线程数:也就是时间段内只有对应的线程数处理,超过的线程请求会等待2、流控模式:直接、关联......
  • 让人眼前一亮的开源项目「GitHub 热点速览」
    时隔两周,我又带着让人眼前一亮的开源项目回来了!告别数据线、蓝牙、WiFi和网络,只需用手机的摄像头扫描一张动图条形码(需安装应用),就能在设备间传输文件的libcimbar,一款无需联网和蓝牙的文件传输工具,仅用摄像头传输数据。用Rust编写的PostgreSQL数据库命令行管理工具rainfro......
  • springcloud整合sentinel
    此处只做个简单的springcloud中添加sentinel的demo1、下载sentinel的jar,访问网址:https://github.com/alibaba/Sentinel/releases 2、找到本地jar文件夹,使用cmd或者终端中打开,执行java-jar sentinel-dashboard-1.8.0.jar 启动完成 访问可视化页面,默认账号密码都是sent......
  • 滚雪球学SpringCloud[9.2讲]:CI/CD与自动化部署详解
    全文目录:前言1.持续集成与持续交付的基本概念1.1持续集成(CI)1.1.1持续集成的主要优势1.2持续交付(CD)1.2.1持续交付的主要特点1.3CI与CD的区别与联系2.使用Jenkins与GitLab实现CI/CD管道2.1使用Jenkins实现CI/CD2.1.1Jenkins简介2.1.2Jenkins的安装与配置2.1.3......
  • 滚雪球学SpringCloud[9.1讲]:Docker与容器化详解
    全文目录:前言9.1Docker与容器化Docker的基本概念与SpringBoot应用的容器化1.Docker的核心概念2.将SpringBoot应用容器化DockerCompose与微服务编排1.DockerCompose的核心概念2.使用DockerCompose编排微服务使用Kubernetes部署SpringCloud应用1.Kubernetes......
  • 上周热点回顾(9.16-9.22)
    热点随笔:· 从0到1搭建权限管理系统系列二.net8使用JWT鉴权(附当前源码) (陈逸子风)· WiFi基础(四):WiFi工作原理及WiFi接入过程 (liwen01)· 示例项目dotnet/eshop和dotnet/eshopsupport (张善友)· .NET开源工业级移动端仓库管理系统 (小码编匠)· .NET常见的几种......
  • SpringCloud(九)配置中心和消息总线
    ##SpringCloudBusSpringcloudbus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Springbus的一个核心思想是通过分布式的启动器对springboot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式......
  • Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十九(用户中
    (4)创建mapper路径(5)编写配置文件server:port:8088spring:application:name:user-servicedatasource:url:jdbc:mysql://127.0.0.1:3306/yun6username:rootpassword:rootdriver-class-name:com.mysql.jdbc.Drivereureka:client:service-url:defaultZone......