首页 > 其他分享 >spring boot sentinel设置限流规则

spring boot sentinel设置限流规则

时间:2023-07-16 18:37:58浏览次数:501  
标签:spring 规则 boot 接口 限流 Boot Spring Sentinel

Spring Boot Sentinel 设置限流规则

引言

在高并发的系统中,为了保证系统的稳定性和可靠性,我们常常需要对系统的接口进行限流操作。限流是一种流量控制的手段,通过控制接口的访问频率或者并发数,保护系统不被过多的请求压垮。

在Spring Boot中,我们可以使用Sentinel来进行接口的限流。Sentinel是阿里巴巴开源的一款强大的流量控制工具,它提供了丰富的限流策略和规则配置,可以帮助我们更好的保护系统。

本文将介绍如何使用Spring Boot Sentinel来设置限流规则,并提供相关的代码示例。

步骤

步骤一:引入Sentinel依赖

首先,在Spring Boot项目的pom.xml文件中引入Sentinel的依赖:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-spring-boot-starter</artifactId>
    <version>1.8.2</version>
</dependency>

步骤二:配置限流规则

在Spring Boot项目中,我们可以通过配置文件或者代码的方式来设置Sentinel的限流规则。下面是通过配置文件的方式设置限流规则的示例:

resources目录下创建application.yml文件,并添加以下配置:

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            data-id: sentinel_flow_rule
            group-id: DEFAULT_GROUP
            data-type: json
            rule-type: flow

其中,dashboard配置项指定了Sentinel的可视化控制台的地址,datasource配置项指定了规则的数据源信息,这里我们使用了Nacos作为数据源。

步骤三:编写限流规则

resources目录下创建sentinel_flow_rule.json文件,并添加以下内容:

[
    {
        "resource": "demo", 
        "grade": 1,
        "count": 10,
        "limitApp": "default",
        "strategy": 0
    }
]

其中,resource字段表示需要限流的资源名称,grade字段表示限流的阈值类型,count字段表示限流的阈值数量,limitApp字段表示流量控制针对的调用来源,strategy字段表示限流的策略。

步骤四:编写接口代码

下面我们来编写一个简单的接口,并在该接口上添加限流注解:

@RestController
public class DemoController {

    @GetMapping("/hello")
    @SentinelResource(value = "demo", blockHandler = "handleBlock")
    public String hello() {
        return "Hello, World!";
    }

    public String handleBlock(BlockException ex) {
        return "流量过大,请求被限流!";
    }
}

在上述代码中,@SentinelResource注解用于标记需要进行限流的资源,blockHandler属性指定了限流触发时的处理方法。

步骤五:启动项目

最后,我们可以启动Spring Boot项目,并访问/hello接口进行测试。

当接口的请求次数超过限流规则中设置的阈值时,会触发限流,返回流量过大,请求被限流!的提示信息。

总结

通过使用Spring Boot Sentinel,我们可以方便地设置接口的限流规则,保护系统不被过多的请求压垮。本文介绍了使用Sentinel设置限流规则的步骤,并提供了相关的代码示例。希望本文能够帮助读者更好地理解和使用Spring Boot Sentinel。

本文代码示例可在GitHub上的仓库(

参考文档:

标签:spring,规则,boot,接口,限流,Boot,Spring,Sentinel
From: https://blog.51cto.com/u_16175435/6739256

相关文章

  • spring boot jar启动黑框就闪退
    如何解决“SpringBootJar启动黑框就闪退”问题简介在开发和部署SpringBoot应用程序时,有时候我们可能会遇到一个问题,即通过运行jar文件启动应用程序时,黑框闪现而无法正常启动。这个问题往往是由于缺少正确的启动命令所致。在本文中,我将向你介绍解决这个问题的步骤和相应的代码......
  • spring boot flowable 参数配置 重试参数配置
    SpringBootFlowable参数配置及重试参数配置概述在使用SpringBootFlowable框架开发工作流应用时,我们可能会遇到需要进行参数配置和重试参数配置的情况。本文将为刚入行的开发者介绍如何实现SpringBootFlowable参数配置及重试参数配置,并提供详细的步骤和代码示例。参数配置......
  • spring boot csv
    SpringBootCSV在现代的应用程序中,处理CSV(逗号分隔值)文件是一种常见的任务。CSV是一种以文本形式存储数据的文件格式,它使用逗号来分隔不同的值。在本文中,我们将介绍如何使用SpringBoot来处理CSV文件。什么是SpringBoot?SpringBoot是一个用于创建基于Spring框架的独立、可运行......
  • spring boot apk 后台下载
    使用SpringBoot实现后台下载APK文件在移动应用开发中,经常需要在后台下载APK文件,以便更新应用或提供新的版本。本文将介绍如何使用SpringBoot框架实现后台下载APK文件的功能。为什么选择SpringBoot?SpringBoot是一个开源的Java框架,可以帮助开发者快速构建独立的、生产级别的Sp......
  • Spring+SpringMVC+Thymeleaf 示例
    目录参考资料开发工具1环境准备2使用maven模板构建war工程2.1File->New->Other2.2选择【MavenProject】2.3选择maven模板2.4输入GroupId、ArtifactId、package2.5生成的项目工程2.6配置项目2.7完整工程目录3配置SpringMVC3.1引入Springjar3.2配置......
  • Spring Cloud 之OpenFeign
    SpringCloud之OpenFeign一:简介​ Feign是一个声明式(对比RestTemplate编程式)的服务客户端,即通过@FeignClient注解即可声明一个接口(interface)。还支持多种插拔式的配置如encoders/decoders(加解码),clients(不同的链接框架)......。SpringCloud集成了Eureka、SpringClo......
  • SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏
    场景SpringBoot中整合ShardingSphere实现数据加解密/数据脱敏/数据库密文,查询明文:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131742091上面讲的是数据库中存储密文,查询时使用明文的脱敏方式,如果是需要数据库中存储明文,而在查询时返回处理后的数据,比如身份......
  • springboot中解决redissonClien无法注入,封装工具雷
    引用:https://blog.csdn.net/feiying0canglang/article/details/120464693问题来源前几天遇到一个循环依赖问题,是RedissonClient这个bean引起的。RedissonClient是由一个配置类(@Configuration注解的类)提供的,这配置类在初始化时(@PostConstruct注解的方法中)去获取RedissonClient这......
  • spring完整笔记
    第一章初识Spring1.1Spring简介Spring是一个为简化企业级开发而生的开源框架。Spring是一个IOC(DI)和AOP容器框架。IOC全称:InversionOfControl【控制反转】将对象控制权由程序员自己反转交个SpringDI全称:DependencyInjection【依赖注入】Spring管理对象与对......
  • Springboot JPA 集成多租户
    背景:​ iot-kit项目用的是jpa,不是mybatis,项目中需要引入多租户参考文章:【讲解多租户的实现与原理】https://www.bilibili.com/video/BV1F84y1T7yf/?share_source=copy_web&vd_source=981718c4abc87423399e43793a5d3763https://callistaenterprise.se/blogg/teknik/2020/10/17......