登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Spring Boot整合Sentinel之流量控制入门
Spring Boot整合Sentinel之流量控制入门
[ 复制链接 ]
存叭
5 天前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
目录
Sentinel简介
Sentinel 入门 demo
限流入门示例|done
结束语
Reference
摘要
介绍Spring Boot 4 如何整合流量治理神器Sentinel,入门案例以实现流量控制为切入点。
Sentinel简介
什么是Sentinel?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由/调度、流量控制、流量整形、熔断降级、系统自适应过载保护/实例摘除、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
Sentinel 具有以下特征:
♥丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
♥完备的实时监控:可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模集群的汇总运行情况。
♥广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。同时 Sentinel 提供 Java/Go/C++ 等多种语言的原生实现。
♥完善的 SPI 扩展机制:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
流量控制(flow control)原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。限流的直接表现是在执行 Entry nodeA = SphU.entry(resourceName) 的时候抛出 FlowException 异常。FlowException 是 BlockException 的子类,您可以捕捉 BlockException 来自定义被限流之后的处理逻辑。
『资源』是 Sentinel 的关键概念,只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。
『规则』围绕资源的实时状态设定的规则,可以包括「流量控制规则」、「熔断降级规则」以及「系统保护规则」。对于同一个资源,我们通过规则定义如何程序保护资源,所有规则可以动态实时调整。
Sentinel 的「设计理念」是让编码人员自由选择控制的角度,并进行灵活组合,从而达到想要的效果。它的流量控制规则由下表的关键属性组成:
字段名说明默认值resource资源名count限流阈值grade限流机制,1 QPS,0 并发线程数QPS 模式limitApp流控针对的调用来源default,代表不区分调用来源strategy调用关系限流,包括资源自身、其它关联资源 (refResource)和链路入口等根据资源本身controlBehavior流量控制效果(直接拒绝、预热和匀速排队等)直接拒绝 限流的直接表现是在执行Entry nodeA = SphU.entry(resourceName)的时候抛出FlowException异常。FlowException是BlockException的子类,您可以捕捉BlockException来自定义被限流之后的处理逻辑。
本文以《一步步搭建JDK 21 Spring Boot项目》搭建的Spring Boot项目为基础,演示Sentinel 限流功能。
Sentinel 入门 demo
使用 Sentinel 来进行资源保护,主要分为几个步骤:
定义资源
设置规则
验证规则
定义需要保护的资源后配置限流规则。我们可以理解为只要有了资源,就可以在任何时候灵活地定义各种流量控制规则。在编码之前考虑此代码片段是否需要保护,如果需要保护,就将其定义为一个资源。今天咱们就把Sentinel限流掰开揉碎讲清楚怎么对流量洪峰限流保证服务稳定性。
引入 Sentinel 依赖
如果您的应用使用了 Maven,则从maven仓库地址中找适合的sentinel版本并加入 pom.xml 文件中。我使用的是 JDK 21 + Spring Boot 4.0.0,故引入以下Sentinel依赖包:
<dependency>
<groupId>com.alibaba.csp</groupId>
sentinel-core</artifactId>
<version>1.8.9</version>
</dependency>
复制代码
限流入门示例|done
定义资源。我们一般会将 Java 中的方法定义为资源,也可以更灵活地对资源进行定义。在下面的例子中,我们定义的资源名是【my_resource】,将System.out.println("Hello Sentinel");这个代码片段作为被保护的资源,把它用Sentinel API SphU.entry("my_resource")和entry.exit()包裹起来。见如下代码中的函数sentinelDemo(String resourceName):
[code]import com.alibaba.csp.sentinel.Entry;import com.alibaba.csp.sentinel.SphU;import com.alibaba.csp.sentinel.slots.block.BlockException;import com.cactus.wiener.config.FlowRules;/** * @Author 楼兰胡杨 * @Description: 简单的限流示例 */public class SimpleSentinelDemo { public static void main(String[] args) { // 定义资源名称 String resourceName = "my_resource"; //加载流控规则 FlowRules.initFlowRules(resourceName); // 启动测试示例 sentinelDemo(resourceName); } public static void sentinelDemo(String resourceName) { Entry entry1 = null; for (int i = 1; i
Spring
Boot
整合
Sentinel
流量
相关帖子
Spring Boot整合Sentinel之QPS限流
Spring Boot Pf4j模块化开发设计方案
Spring AOP + Guava RateLimiter:我是如何用注解实现优雅限流的?
Spring Boot Pf4j模块化能力设计思考
海豚调度DolphinScheduler 和 Spring Cloud Data Flow 对比
Spring Cloud生态地图——注册、配置、网关、负载均衡与可观测的组合拳
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Spring Boot整合Sentinel之QPS限流
0
501
疝镜泛
2025-12-27
业界
Spring Boot Pf4j模块化开发设计方案
0
922
处匈跑
2025-12-28
业界
Spring AOP + Guava RateLimiter:我是如何用注解实现优雅限流的?
0
934
热琢
2025-12-29
业界
Spring Boot Pf4j模块化能力设计思考
1
978
辜酗徇
2025-12-30
业界
海豚调度DolphinScheduler 和 Spring Cloud Data Flow 对比
1
846
嫁吱裨
2025-12-31
安全
Spring Cloud生态地图——注册、配置、网关、负载均衡与可观测的组合拳
1
992
琉艺戕
2025-12-31
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
存叭
5 天前
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9994
6
宋子
9978
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9947
查看更多
今日好文热榜
190
如何编写figma插件
804
2026年北京陪诊机构排行
833
Ruoyi框架 | 扩展部门数据权限实现
244
2025再见,码农当自强,47岁尚能饭否
164
在 Web 前端实现流式 TTS 播放
186
2025年终总结——在奔跑中前行
136
吴恩达深度学习课程四:计算机视觉 第四周
231
一个关于时间、节奏和前端动画的小实验:新
301
实用程序:解放双手!Python 打造 PDF 手写
217
Perigon.CLI 10.0 重磅发布【AspNetCore开
206
MongoDB 详解、应用场景及案例分析(AI)
390
RL 策略优化 (4.2章节)
64
0基础转行产品经理:墨刀还是Axure?从背景
621
springboot~传统WEB应用开启CSRF
54
BI报表及可视化分析类工具使用经验总结(下
313
ComfyUI Docker 镜像部署指南
267
国内直连GPT、Claude和Gemini?N8N这次更新
479
2026 年 PHP 开发者进阶 快速高效开发学习
534
TryHackMe-SOC-Section 5:网络钓鱼分析
49
【踩坑】Roslyn 5与VS2022——不散的红色浪