SpringBoot轻松整合Sentinel限流

前言

Sentinel是阿里开源的用于服务器容错的综合解决方案,是一个面向分布式服务的轻量级的流控框架,它主要是以流量为切入点,从流量的控制、服务熔断降级、服务负载保护等方面来维护系统的稳定性。承载了阿里很多大型业务场景的核心处理逻辑,例如双十一的秒杀、消息处理、流量控制、实时服务熔断等场景。

Sentinel的核心分为两个部分:核心库(Java客户端),能够运行于所有Java运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持;以及控制台(Dashboard),基于SpringBoot开发,打包后可以直接运行。

下面我们就来看看Spring Boot应用中如何使用Sentinel实现服务限流操作。

安装Sentinel

下载

可以从Sentinel的GitHub地址进行下载;

https://github.com/alibaba/Sentinel/releases

解压

下载完成之后,解压对应的压缩包到指定的路径下。

运行

在Linux系统中可以通过如下的命令来启动

复制代码
./start.sh

启动之后,可以访问浏览器的http://localhost:8080地址来查看Sentinel控制台。如下所示。

在控制台中,你可以根据需要配置流控规则、降级规则、系统规则等,以实现对应用程序的监控和流量控制。

添加POM依赖

在你的Spring Boot项目中添加Sentinel的依赖。你可以在pom.xml文件中添加以下依赖:

复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

配置Sentinel

application.yml中配置Sentinel的相关信息,例如:

复制代码
spring.cloud.sentinel.transport.port=8719
spring.cloud.sentinel.transport.dashboard=127.0.0.1:8080

这里配置了Sentinel的控制台地址为127.0.0.1:8080,用于监控和管理限流规则。

定义限流的规则

在Sentinel控制台中定义限流规则,可以定义URL、资源名、流控模式、阈值等限流参数。这里就不做详细介绍了。

使用限流操作

在需要进行限流的方法上添加**@SentinelResource**注解,代码如下:

复制代码
@RestController
public class MyController {

    @GetMapping("/test")
    @SentinelResource(value = "test", blockHandler = "handleBlock")
    public String test() {
        // Your business logic here
        return "Test API";
    }

    // Block handler for handling blocked requests
    public String handleBlock(BlockException ex) {
        return "Blocked due to flow control";
    }
}

在上面这个例子中test接口上被添加了**@SentinelResource,**并且指定了限流的资源名称,以及限流的执行策略,并且在下面的内容中添加了处理策略,当然也可以指定统一拒绝策略。这个可以根据具体的业务场景来定。

项目启动之后,可以调用指定的接口来看看接口的限流策略配置执行情况。

相关推荐
软件技术NINI19 分钟前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
GISer_Jing20 分钟前
Agent相关岗位时收集的各类技术面试题
后端·ai·langchain
量化分析码农42 分钟前
【Python量化波动率实战 06】一键输出风险看板:波动率仪表盘工程化
后端
Flynn Liang1 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
RuoyiOffice2 小时前
固定资产维修管理:从报修、审批到办结,原资产卡怎么回查?
spring boot·固定资产·ruoyi office·资产维修·维修审批·维修办结·资产履历
噢,我明白了2 小时前
JAVA中的一些基础应用知识点
java·开发语言
招风的黑耳2 小时前
SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)
vue.js·spring boot·mysql
花间相见2 小时前
【计算基础|Redis02】【上手】五大数据类型命令逐条实操
数据库·redis·后端
GISer_Jing2 小时前
AI Agent秋招面试万字通关指南|架构、ReAct、上下文工程、RAG、评测、生产运维全解
后端·ai·langchain
SL_staff2 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java