【Spring Cloud】Sentinel限流

news2024/12/23 18:08:54

控制台下载https://github.com/alibaba/Sentinel/releases

# 控制台启动
java -Dserver.port=10888 -Dcsp.sentinel.dashboard.server=localhost:10888 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

  1. 引入依赖
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- 支持nacos作为数据源  -->
<dependency>
	<groupId>com.alibaba.csp</groupId>
	<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
  1. 使用nacos作为数据源,定义流控规则
spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:10888
      datasource:
        #流控规则
        flow: # 指定数据源名称 限流
          # 指定nacos数据源
          nacos:
            server-addr: http://127.0.0.1:8848
            # 指定配置文件
            dataId: ${spring.application.name}-flow-rules
            # 指定分组
            groupId: SENTINEL_GROUP
            # 指定配置文件规则类型
            rule-type: flow
            # 指定配置文件数据格式
            data-type: json
  1. 流控配置内容为

在 Sentinel 中,可以使用 JSON 格式的配置文件来配置流量控制规则。以下是一个简单的示例,演示了如何编写一个 JSON 格式的 Sentinel 流量控制规则配置文件:

限流

${spring.application.name}-flow-rules
json
[
    {
        "resource":"findByPage",
        "limitApp":"default",
        "grade": 1 ,
        "count":1,
        "strategy": 0,
		"controlBehavior": 0
    }
]

对应一个com.alibaba.csp.sentinel.slots.block.flow.FlowRule的对象列表
resource:需要限流的资源名称,可以是路径名称,也可以是SentinelResource注解的value值
limitApp:对应的黑名单/白名单,不同 origin 用 , 分隔,如 appA,appB
grade:限流类型,这里使用 QPS(每秒查询率)。
count:每秒查询率的阈值,例如 100。
strategy:流控模式,此处直接使用直接方式
controlBehavior: 流控效果, 0 快速失败 1 Warm Up 2 排队等待

4.流控代码中使用

@Service("goodsFishInfoService")
public class GoodsFishInfoServiceImpl extends ServiceImpl<GoodsFishInfoMapper, GoodsFishInfo> implements GoodsFishInfoService {

    @Resource
    private TokenUtil tokenUtil;

    @Resource
    GoodsFishInfoMapper goodsFishInfoMapper;

    @Resource
    FilterKeyWordMapper filterKeyWordMapper;

    @Override
    @SentinelResource(value = "findByPage", blockHandler = "handleException", blockHandlerClass = ExceptionUtil.class)
    public ResultModelPage<GoodsFishInfo> findByPage(GoodsFishInfoVO goodsFishInfoVO) {
        PageHelper.startPage(goodsFishInfoVO.getPage(), goodsFishInfoVO.getPageSize());
        goodsFishInfoVO.setDelFlag(DelFlagEnum.ENABLE.getStatus());
        Page<GoodsFishInfo> page = (Page<GoodsFishInfo>) baseMapper.findByPageVo(goodsFishInfoVO);
        return ResultModelPage.resultModelTrue(Paging.of(page));
    }
}

public final class ExceptionUtil {
	/**
     * 此处返回值和参数必须要和注解对应的方法一致 且后面添加一个BlockException参数
     * 必须为 public static 方法
     * @param goodsFishInfoVO
     * @param ex
     * @return
     */
    public static ResultModelPage handleException(GoodsFishInfoVO goodsFishInfoVO, BlockException ex) {
        System.out.println("Oops: " + ex.getClass().getCanonicalName());
        return ResultModelPage.resultModelFalse("系统繁忙稍后再试");
    }
}

结果展示:
在这里插入图片描述

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

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

相关文章

hadoop分布式环境ssh设置免密登陆之后目标主机更换无法连接解决

在进行hadoop分布式环境搭建时&#xff08;三台机&#xff0c;master&#xff0c;slave1&#xff0c;slave2&#xff09;&#xff0c;后期slave2系统出现问题&#xff0c;更换新机后&#xff0c;master与slave2文件传输失败&#xff1a; 以为是秘钥过期的问题&#xff0c;更换…

微信小程序调用百度智能云API(菜品识别)

一、注册后生成应用列表创建应用 二、找到当前所需使用的api菜品识别文档 三、点链接看实例代码 这里需要使用到如下几个参数&#xff08;如下&#xff09;&#xff0c;其他的参数可以不管 client_id &#xff1a; 就是创建应用后的API Keyclient_secret&#xff1a; 就是创建…

连续八年在3·15发布新酿造年份国标酒,国台真实年份印记深入人心

对许多酱酒爱好者来说&#xff0c;每年的315已经成为与国台的年度约定日。 自2017年开始&#xff0c;国台都会在这个特殊的日子发布新酿造年份的国台国标酒&#xff0c;至今已连续8年。回首往届盛会依旧历历在目&#xff0c;这一天已然成为国台与所有国粉的约定日&#xff0c;…

【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

docker和K8S理解 一、docker的问世虚拟机是什么&#xff1f;Docker的问世&#xff1f;docker优点及理解 二、Kubernetes-K8SK8S是什么&#xff1f;简单了解K8S架构Master节点Node节点K8S架构图 一、docker的问世 在LXC(Linux container)Linux容器虚拟技术出现之前&#xff0c;业…

Anaconda几个优势

目录 简介优势一、虚拟环境&#xff0c;方便配置版本二、版本清晰可见三、快速打开虚拟环境下的jupyter 简介 Anaconda是一个流行的开源Python和R编程语言的发行版&#xff0c;用于科学计算、数据科学和机器学习任务。它包含许多常用于这些领域的包和库&#xff0c;如NumPy、Sc…

电脑高温怎么办?教你几招,迅速降温!

电脑在长时间运行或者负载较高时&#xff0c;容易出现高温问题&#xff0c;这不仅会影响电脑的性能和稳定性&#xff0c;还可能导致硬件损坏。因此&#xff0c;了解如何解决电脑高温问题是至关重要的。在本文中&#xff0c;我们将介绍三种常见的方法&#xff0c;以分步骤详细说…

前端项目部署后,如何提示用户版本更新

目录 前言解决方案1、public目录下新建manifest.json2、写入当前时间戳到manifest.json3、检查版本更新4、woker线程5、入口文件引入 可能出现的问题 前言 项目部署上线后&#xff0c;特别是网页项目&#xff0c;提示正在操作系统的用户去更新版本非常 important。一般我们都会…

深度学习 精选笔记(12)卷积神经网络-理论基础1

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

C语言学习笔记day8

一维数组冒泡排序法 1. 作用 将乱序的一维数组按照从小到大的顺序排列 2. 原理示意图 3. 代码 #include <stdio.h> #include <stdlib.h> #include <time.h>int main(void) {int a[5] {0};int len sizeof(a) / sizeof(a[0]);int i 0;int j 0;int tmp …

【每日算法】理论:常见AIGC模型; 刷题:力扣单调栈

上期文章 【每日算法】理论&#xff1a;生成模型基础&#xff1b; 刷题&#xff1a;力扣单调栈 文章目录 上期文章一、上期问题二、理论问题1、stable diffusion模型的网络架构2、T5的网络架构&#xff08;Text-To-Text Transfer Transformer模型&#xff09;3、SDXL模型4、DA…

打靶记录(个人学习笔记)

一、信息收集 1、主机发现 通过nmap对此网段进行扫描&#xff0c;可以确定靶机ip为192.168.189.144 2、端口扫描 确定了靶机ip之后&#xff0c;我们来扫描端口 发现80端口开放&#xff0c;先访问80端口 用插件识别出一些信息 Wappalyzer插件获得信息&#xff1a;Web服务&am…

服务器开机不输入密码自动进系统, 与设置开机启动项

打开运行[win R ] 输入&#xff1a; control Userpasswords2设置开机启动项 运行 输入 shell:startup在这里插入图片描述

Java自定义注解实现参数校验

1、 定义注解内 自定义如下&#xff0c;本例子以校验手机号码为例 需要校验手机号码标上此注解即可。 其中Mobilelidator 类则是实现自定义校验ConstraintValidator类的接口实现类 2、ConstraintValidator 定义接口实现 ConstraintValidator 自定义接口实现如下图

【打工日常】使用Docker部署zyplayer_doc团队协作文档

一、zyplayer-doc介绍 1.zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具&#xff0c;提供在线化的知识库管理功能&#xff0c;专为私有化部署而设计&#xff0c;最大程度上保证企业或个人的数据安全&#xff0c;公司小团队的话完全可以局域网部署一个。 2.它也可以…

计算机冯诺依曼体系结构

文章目录 前言一、冯诺依曼体系结构构成二、各硬件单元之间效率 前言 冯诺依曼体系结构是构成计算机的基本单元&#xff0c;是一个计算机架构&#xff0c;对于计算机来说冯诺依曼体系是基于计算机硬件的一套体系结构&#xff0c;现在的计算机都是遵循冯诺依曼体系结构建立设计…

ZooKeeper是如何保证数据一致性的?

目录 一、分布式一致性原理 二、ZooKeeper架构 2.1 ZAB 协议操作顺序性 2.2 领导者选举 成员身份 成员状态 领导者选举 三、总结 在分布式系统里的多台服务器要对数据状态达成一致&#xff0c;其实是一件很有难度和挑战的事情&#xff0c;因为服务器集群环境的软硬件故障随时…

信息学奥赛一本通之MAC端VSCode C++环境配置

前提 安装 Visual Studio CodeVSCode 中安装 C/C扩展确保 Clang 已经安装&#xff08;在终端中输入命令&#xff1a;clang --version 来确认是否安装&#xff09;未安装&#xff0c;在命令行执行xcode-select --install 命令&#xff0c;会自行安装&#xff0c;安装文件有点大…

ENVI实战—地物波谱分类

实验1&#xff1a;浏览内置波谱库 目的&#xff1a;学会使用波谱浏览器&#xff0c;浏览内置波谱库&#xff0c;以进行课程后继实验 过程&#xff1a; ①打开ENVI软件&#xff0c;在窗口选择“显示”并点击&#xff0c;找到“波谱库浏览器”并打开&#xff0c;此时可以浏览ENVI…

天童美语开学季|开启“热辣滚烫”的新学期

新学期伊始&#xff0c;孩子们即将踏入一个充满挑战和机遇的学习环境。在这个关键时刻&#xff0c;学校和家庭需要更加紧密地协调合作&#xff0c;以确保孩子们能够得到充分的支持和帮助&#xff0c;顺利成长。    在假期生活分享中开启新学期第一课      寒假里孩子们…

聚观早报 | 追觅科技亮相AWE2024;三星家电举办发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月18日消息 追觅科技亮相AWE2024 三星家电举办发布会 深蓝汽车将采用华为HI模式 字节跳动2023年全球营收 特斯…