登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Spring Boot整合Sentinel之流量控制入门
Spring Boot整合Sentinel之流量控制入门
[ 复制链接 ]
存叭
3 小时前
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
目录
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 WebSocket方案终极指南:Netty与官方Starter对比与实践
Spring用构造函数注入,别用:@Autowired或者@Resource的字段注入了
流量洪峰冲不垮的秘密:揭秘系统过载保护的核心防线
流量洪峰下的交通指挥家:详解负载均衡与限流实战
Spring Boot 项目部署与开机自启详解
Spring Boot整合Sentinel之QPS限流
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Spring Boot WebSocket方案终极指南:Netty与官方Starter对比与实践
1
848
襁壮鸢
2025-12-23
安全
Spring用构造函数注入,别用:@Autowired或者@Resource的字段注入了
0
893
愿隙
2025-12-23
业界
流量洪峰冲不垮的秘密:揭秘系统过载保护的核心防线
0
1008
章海
2025-12-24
业界
流量洪峰下的交通指挥家:详解负载均衡与限流实战
0
115
忿惺噱
2025-12-26
安全
Spring Boot 项目部署与开机自启详解
0
182
胥望雅
2025-12-27
业界
Spring Boot整合Sentinel之QPS限流
0
488
疝镜泛
2025-12-27
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
存叭
3 小时前
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9996
6
宋子
9979
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9948
查看更多
今日好文热榜
565
Spring Boot整合Sentinel之流量控制入门
678
如何使用『页脚HTML代码』-实现自推广 -『A
488
Spring Boot整合Sentinel之QPS限流
895
红米AX6 扩容 刷Uboot+openwrt 经历
327
总结 Next.js 中的 Server Actions
374
Python 潮流周刊#133:为什么要多读技术博
426
规划中主要使用的曲线类型
376
Sidecar不就是在Pod里多跑一个容器吗!
603
基于莱布尼茨公式的编程语言计算性能基准测
547
AI生成原创歌曲真的来了!支持19种语言,还
987
从快手直播故障,看全景式业务监控势在必行
795
SP100 BABTWR - Tower of Babylon
181
Spring Boot 项目部署与开机自启详解
872
DolphinScheduler 工作原理与使用指南
743
别让你的密钥在互联网上“裸奔”!用 pytho
389
【面试题】详细描述一条 SQL 语句在 MySQL
42
大模型榜单周报(2025/12/27)
947
数据存储和传输的二进制编码格式概述
169
FFmpeg开发笔记(九十五)国产的开源视频美
64
【2025年最新】全面解析 poloapi.top:一站