首页/新闻资讯/正文详情

Spring Cloud Alibaba Sentinel控制台详解

发布时间:2026/9/25 16:50:14 来源:云帆数科 栏目:资讯中心
Spring Cloud Alibaba Sentinel控制台详解
一、前言Sentinel提供一个轻量级的开源控制台它提供机器发现以及健康情况管理、监控单机和集群规则管理和推送的功能。本节将详细记录何如通过Sentinel控制台控制Sentinel客户端的各种行为。Sentinel控制台的功能主要包括流量控制、降级控制、热点配置、系统规则和授权规则等。二、安装控制台Sentinel控制台下载地址https://github.com/alibaba/Sentinel/releases本节我们下载sentinel-dashboard-1.8.0.jar版本下载好后使用java -jar sentinel-dashboard-1.8.0.jar命令启动即可默认的端口号为8080账号密码都是sentinel。更多可用的启动参数配置Dsentinel.dashboard.auth.usernamesentinel用于指定控制台的登录用户名为 sentinelDsentinel.dashboard.auth.password123456用于指定控制台的登录密码为 123456如果省略这两个参数默认用户和密码均为 sentinelDserver.servlet.session.timeout7200用于指定 Spring Boot 服务端 session 的过期时间如 7200 表示 7200 秒60m 表示 60 分钟默认为 30 分钟-Dcsp.sentinel.dashboard.serverconsoleIp:port指定控制台地址和端口。三、搭建客户端3.1 项目搭建新建一个Spring Boot项目artifactId为spring-cloud-alibaba-sentinel-dashboard-guide项目pom内容?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.2.RELEASE/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.wno704/groupIdartifactIdspring-cloud-alibaba-sentinel-dashboard-guide/artifactIdversion0.0.1-SNAPSHOT/versionnameAlibaba-Sentinel-Dashboard-Guide/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionspring-cloud-alibaba.version2.2.3.RELEASE/spring-cloud-alibaba.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project引入了spring-cloud-starter-alibaba-sentinel和spring-boot-starter-web依赖。3.2 编写controller接着在com.wno704.alibaba目录下新建controller包然后在该包下新建TestControllerRestControllerpublicclassTestController{GetMapping(test1)publicStringtest1(){returntest1;}}3.3 配置application.ymlserver:port:8081spring:application:name:sentinel-dashboardcloud:sentinel:transport:dashboard:localhost:8080port:8719spring.cloud.sentinel.transport.dashboard指定了sentinel控制台的ip和端口地址spring.cloud.sentinel.transport.portsentinel客户端和控制台通信的端口默认为8719如果这个端口已经被占用那么sentinel会自动从8719开始依次1扫描直到找到未被占用的端口。3.4 测试启动项目使用http工具访问http://localhost:8081/test1然后登录sentinel控制台在簇点链路中可以看到刚刚那笔请求我们可以对它进行流控、降级、授权、热点等配置控制台是懒加载的如果没有任何请求那么控制台也不会有任何内容。四、流控规则在簇点链路列表中点击/test1后面的【流控】按钮资源名标识资源的唯一名称默认为请求路径也可以在客户端中使用SentinelResource配置针对来源Sentinel可以针对服务调用者进行限流填写微服务名称即spring.application.name默认为default不区分来源**阈值类型、单机阈值QPSQueries-per-second每秒钟的请求数量当调用该api的QPS达到阈值的时候进行限流线程数当调用该api的线程数达到阈值的时候进行限流。是否集群默认不集群流控模式直接当api调用达到限流条件的时直接限流关联当关联的资源请求达到阈值的时候限流自己链路只记录指定链路上的流量指定资源从入口资源进来的流量如果达到阈值则进行限流。流控效果快速失败直接失败Warm Up根据codeFactor冷加载因子默认值为3的值从阈值/codeFactor经过预热时长才达到设置的QPS阈值排队等待匀速排队让请求匀速通过阈值类型必须设置为QPS否则无效。4.1 QPS直接失败演示下QPS直接失败设置及效果。点击簇点链路列表中/test1请求后面的流控按钮上面设置的效果是1秒钟内请求/test1资源的次数达到2次以上的时候进行限流。点击新增按钮后列表会跳转到”流控规则”菜单下所以我们也可以在这里设置流控规则不过一般还是习惯直接在簇点链路列表中直接选中资源添加流控规则。新增后我们访问http://localhost:8081/test1看看效果当手速快点的时候1秒超过2次页面返回 Blocked by Sentinel (flow limiting)。4.2 线程数直接失败改造下TestControllerRestControllerpublicclassTestController{GetMapping(test1)publicStringtest1()throwsInterruptedException{TimeUnit.SECONDS.sleep(1);returntest1;}}让方法休眠1秒更容易出现效果。重启项目然后在sentinel控制台中添加如下流控规则多次访问http://localhost:8081/test1效果4.3 关联改造TestController添加一个新的api接口RestControllerpublicclassTestController{GetMapping(test1)publicStringtest1(){returntest1;}GetMapping(test2)publicStringtest2(){returntest2;}}重启项目浏览器中访问下这两个请求然后在sentinel控制台簇点链路列表中点击test1后的流控按钮上述流控规则表示当1秒内访问/test2的次数大于2的时候限流/test1。我们使用postman来密集访问/test2然后我们手动浏览器请求/test1看看效果。postman设置如下规则然后点击Run按钮我们回到HTTP工具访问http://localhost:8081/test14.4 链路在演示链路限流之前我们先改造改造sentinel客户端代码。在项目的com.wno704.alibaba目录下新建service包然后在该包下新建HelloServiceServicepublicclassHelloService{SentinelResource(hello)publicStringhello(){returnhello;}}SentinelResource(“hello”)将该方法标识为一个sentinel资源名称为hello。接着在TestController中使用该资源RestControllerpublicclassTestController{AutowiredprivateHelloServicehelloService;GetMapping(test1)publicStringtest1(){returntest1 helloService.hello();}GetMapping(test2)publicStringtest2(){returntest2 helloService.hello();}}在配置文件中新增收敛设置为无效spring:cloud:sentinel:web-context-unify:false注意:在spring-cloud-alibaba v2.1.1.RELEASE及前sentinel1.7.0及后关闭URL PATH聚合需要通过该方式spring-cloud-alibaba v2.1.1.RELEASE后可以通过配置关闭spring.cloud.sentinel.web-context-unifyfalse具体代码如下ConfigurationpublicclassFilterContextConfig{BeanpublicFilterRegistrationBeansentinelFilterRegistration(){FilterRegistrationBeanregistrationnewFilterRegistrationBean();registration.setFilter(newCommonFilter());registration.addUrlPatterns(/*);// 入口资源关闭聚合registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY,false);registration.setName(sentinelFilter);registration.setOrder(1);returnregistration;}}重启项目在浏览器中多次访问这两个api然后查看sentinel控制台簇点链路然后点击hello资源后面的流控按钮上述配置的意思是当通过/test1访问hello的时候QPS大于1则进行限流言外之意就是/test2访问hello请求并不受影响。我们回到HTTP工具访问http://localhost:8081/test14.5 预热Warm Up流控效果除了直接失败外我们也可以选择预热Warm Up。Warm UpRuleConstant.CONTROL_BEHAVIOR_WARM_UP方式即预热/冷启动方式。当系统长期处于低水位的情况下当流量突然增加时直接把系统拉升到高水位可能瞬间把系统压垮。通过”冷启动”让通过的流量缓慢增加在一定时间内逐渐增加到阈值上限给冷系统一个预热的时间避免冷系统被压垮。sentinel客户端的默认冷加载因子coldFactor为3即请求QPS从 threshold / 3 开始经预热时长逐渐升至设定的QPS阈值。比如上面的配置意思是对于/test1资源一开始的QPS阈值为310/3经过10秒后QPS阈值达到10效果我就不演示了大概效果就是使用浏览器访问http://localhost:8081/test1以最快的手速点刷新一开始会常看到Blocked by Sentinel (flow limiting)的提示10秒后几乎不再出现因为你的手速很难达到1秒10下。4.6 排队等待排队等待方式不会拒绝请求而是严格控制请求通过的间隔时间也即是让请求以均匀的速度通过。修改TestController的代码RestControllerSlf4jpublicclassTestController{GetMapping(test1)publicStringtest1(){log.info(test1);returntest1;}}重启项目浏览器访问http://localhost:8081/test1然后点击sentinel控制台簇点链路列表的/test1流控按钮上述配置的含义是访问/test1请求每秒钟最多只能1次超过的请求排队等待等待超过1000毫秒则超时。新增该规则后多次快速访问http://localhost:8081/test1sentinel客户端控制台日志打印如下每笔请求时间间隔1秒。五、降级规则降级配置页面5.1 基础介绍降级策略分为3种慢调用比例(SLOW_REQUEST_RATIO)选择以慢调用比例作为阈值需要设置允许的慢调用 RT即最大的响应时间请求的响应时间大于该值则统计为慢调用。当单位统计时长statIntervalMs内请求数目大于设置的最小请求数目并且慢调用的比例大于阈值则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态HALF-OPEN 状态若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断若大于设置的慢调用 RT 则会再次被熔断。异常比例(ERROR_RATIO)当单位统计时长statIntervalMs内请求数目大于设置的最小请求数目并且异常的比例大于阈值则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态HALF-OPEN 状态若接下来的一个请求成功完成没有错误则结束熔断否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0]代表 0% - 100%。异常数(ERROR_COUNT)当单位统计时长内的异常数目超过阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态HALF-OPEN 状态若接下来的一个请求成功完成没有错误则结束熔断否则会再次被熔断。熔断降级规则DegradeRule包含下面几个重要的属性Field说明默认值resource资源名即规则的作用对象grade熔断策略支持慢调用比例/异常比例/异常数策略慢调用比例count慢调用比例模式下为慢调用临界 RT超出该值计为慢调用异常比例/异常数模式下为对应的阈值timeWindow熔断时长单位为 sminRequestAmount熔断触发的最小请求数请求数小于该值时即使异常比率超出阈值也不会熔断1.7.0 引入5statIntervalMs统计时长单位为 ms如 60*1000 代表分钟级1.8.0 引入1000 msslowRatioThreshold慢调用比例阈值仅慢调用比例模式有效1.8.0 引入5.2 慢调用比例5.3 异常比例修改TestController的代码RestControllerpublicclassTestController{GetMapping(test1)publicStringtest1(){// 每次请求都抛出异常thrownewRuntimeException(服务异常);}}重启项目浏览器访问http://localhost:8081/test1然后点击sentinel控制台簇点链路列表的/test1降级按钮上面的配置含义是如果/test1的QPS大于5并且每秒钟的请求异常比例大于0.5的话那么在未来的1秒钟时间窗口内sentinel断路器打开该api接口不可用。也就是说如果一秒内有10个请求进来超过5个以上都出错那么会触发熔断1秒钟内这个接口不可用。还是使用上面的JMeter测试开启JMeter后使用http访问http://localhost:8081/test1关掉JMeter后再次访问http://localhost:8081/test15.4 异常数该策略为异常数时表示当指定时间窗口内请求异常数大于等于某个值时触发降级。比如有如下规则上面的规则表示在1秒内访问/test1请求异常的次数大于等于5则触发降级。测试一波六、热点规则热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的数据并对其访问进行限制。比如在TestController中有如下方法GetMapping(buy)SentinelResource(valuebuy)publicStringbuy(StringgoodName,Integercount){return买count份goodName;}对这个资源添加热点规则上面的配置含义是对buy资源添加热点规则当第0个参数的值为wno704的时候QPS阈值为10否则为1。此外如果第0个参数不传那么这笔请求不受该热点规则限制。效果如下七、系统规则系统规则则是针对整个系统设置限流规则并不针对某个资源设置页面如下阈值类型包含以下五种Load自适应仅对 Linux/Unix-like 机器生效系统的 load1 作为启发指标进行自适应系统保护。当系统 load1 超过设定的启发值且系统当前的并发线程数超过估算的系统容量时才会触发系统保护BBR 阶段。系统容量由系统的 maxQps minRt 估算得出。设定参考值一般是 CPU cores 2.5。CPU usage1.5.0 版本当系统 CPU 使用率超过阈值即触发系统保护取值范围 0.0-1.0比较灵敏。平均 RT当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护单位是毫秒。并发线程数当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。入口 QPS当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。比较直观就不演示了。八、授权规则授权规则用于配置资源的黑白名单上述配置表示只有appA和appB才能访问hello资源。

相关推荐

批量获取高清图全流程:从来源筛选到去重归档的工程实践
批量获取高清图全流程:从来源筛选到去重归档的工程实践

1. 先搞清楚“批量获取高清图”到底在解决什么问题很多人看到“批量获取高清图”这个说法,第一反应是去找某个“一键下载神器”,或者指望复制一段代码就能跑通。但实际做过图片采集的人都知道,真正花时间的从来不是“下载”这个动作本身&… · 2026/9/25 16:50:14

Spring Cloud Alibaba Sentinel @SentinelResource
Spring Cloud Alibaba Sentinel @SentinelResource

一、前言 Sentinel提供了SentinelResource注解用于定义资源,并提供可选的异常回退和Block回退。异常回退指的是SentinelResource注解标注的方法发生Java异常时的回退处理;Block回退指的是当SentinelResource资源访问不符合Sentinel控制台定义的规则时的… · 2026/9/25 16:50:14

GEO服务公司怎么选?按需求成熟度建立评估方法
GEO服务公司怎么选?按需求成熟度建立评估方法

GEO服务公司怎么选?按需求成熟度建立评估方法同样是做 GEO,不同企业需要的协作方式差别很大。有的团队已经有内容人员和业务资料,缺的是一套诊断与监控工具。有的企业刚启动,资料分散,也没人专门推进。先判断自身准备程… · 2026/9/25 16:50:02

直肠癌淋巴结转移智能诊断:DICOM预处理与多模态小样本建模
直肠癌淋巴结转移智能诊断:DICOM预处理与多模态小样本建模

简介:本资源是第七届“泰迪杯”数据挖掘挑战赛B题——直肠癌淋巴结转移智能诊断的初学者级完整解决方案,专为大学生及数据挖掘入门者设计,聚焦医学影像分析中的关键临床问题,提供从数据预处理、模型训练(UNet架构&… · 2026/9/25 18:01:53

AI Agent、LLM与智能体区别:Hermes、Claude Code、Codex部署实战
AI Agent、LLM与智能体区别:Hermes、Claude Code、Codex部署实战

9月份的AI Agent排行榜一出来,开发者群里立刻就炸了。Hermes直接登顶,Claude Code和Codex也挤进了前十。乍一看是三个名字在竞争,其实它们根本不在一条赛道上:Hermes代表的是“开源模型Agent框架”的组合生态,Claude C… · 2026/9/25 18:01:53

etcd clientv3 Go 客户端使用指南:连接配置、超时控制、错误处理与请求大小限制(基于 confd 集成实践)
etcd clientv3 Go 客户端使用指南:连接配置、超时控制、错误处理与请求大小限制(基于 confd 集成实践)

后端配置中心运维 【免费下载链接】confd Manage local application configuration files using templates and data from etcd or consul 项目地址: https://gitcode.com/gh_mirrors/co/confd 点击查看 免费下载 本文以 confd 仓库中 vendor 的 etcd 官方 Go 客户… · 2026/9/25 18:01:53

从对话Demo到可演进Agent平台:能力骨架与落地实践
从对话Demo到可演进Agent平台:能力骨架与落地实践

从 AI 对话 Demo 起步做 Agent 平台,这件事我前后折腾了快一年。最开始只是想做一个能连大模型 API、能闲聊、能记住几轮上下文的聊天示例,后来发现光有对话远远不够,因为真实业务需要的是“能干活”的 Agent:查数据、调接口、操作… · 2026/9/25 18:01:46

从零搭建蛋白质亚细胞定位预测流水线:特征工程与模型选型实战
从零搭建蛋白质亚细胞定位预测流水线:特征工程与模型选型实战

简介:这份PDF文献面向生物信息学、蛋白质组学方向的学习者与研究者,聚焦机器学习方法在蛋白质亚细胞定位预测中的应用,帮助读者理解如何从蛋白质序列中提取特征并构建分类模型,以弥补传统实验方法在通量与效率上的不足。资源包内仅… · 2026/9/25 18:01:46

从Higgsfield到本地复现:AI视频生成与角色一致性实战指南
从Higgsfield到本地复现:AI视频生成与角色一致性实战指南

这两天技术社区和短视频圈同时开始刷一个词:higgsfield。很多读者在后台问我这到底是一个物理概念,还是又冒出来一款 AI 视频工具。老实说,我第一次搜这个词的时候也有点恍惚——它确实不是单一指向。higgsfield 既可以理解成粒子物理里的希格… · 2026/9/25 18:01:46

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码