sentinel持久化配置
1.Sentinel规则持久化到Nacos#
在Sentinel Dashboard中配置规则后如果应用重启那么之前配置好的规则就会丢失,所以实际生产环境中需要将配置规则的持久化,Sentinel提供多种不同的数据源来持久化规则配置,包括file,redis、nacos、zk。
将限流规则持久化到Nacos保存,只要刷新应用某个接口地址,Sentinel控制台的流控规则就能感应到,同时只要Nacos里面的配置不删除,针对应用某个接口上Sentinel的流控规则就持续有效。
其实就是实现Sentinel Dashboard与Nacos之间的相互通信
通过Nacos配置文件修改流控规则---拉取--->Sentinel Dashboard界面显示最新的流控规则
注意:在Nacos控制台上修改流控制,虽然可以同步到Sentinel Dashboard,但是Nacos此时应该作为一个流控规则的持久化平台,所以正常操作过程应该是开发者在Sentinel Dashboard上修改流控规则后同步到Nacos,遗憾的是目前Sentinel Dashboard不支持该功能。
2.具体操作#
引入依赖:
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <version>1.8.1</version> </dependency>
配置yml:
server: port: 8401 spring: main: allow-circular-references: true application: name: sentinel-service-8401 cloud: nacos: discovery: # nacos注册中心地址 server-addr: 192.168.56.10:3333 sentinel: transport: # 配置Sentinel dashboard地址 dashboard: localhost:8080 # 默认8719端口,键入被占用会自动从8719+1,直到找到未被占用的端口 port: 8719 datasource: # 配置Sentinel的持久化 ds: nacos: serverAddr: 192.168.56.10:3333 groupId: DEFAULT_GROUP dataId: test-sentinel.json ruleType: flow
进入到Nacos控制台添加配置:
具体配置内容:
[ { "resource": "test1", "limitApp": "default", "grade": 1, "count": 2, "strategy": 0, "controlBehavior": 0, "clusterMode": false } ] ---------------具体内容含义----------------- resource:资源名称; limitApp:来源应用; grade:阈值类型,0表示线程数,1表示QPS; count:单机阈值; strategy:流控模式,0表示直接,1表示关联,2表示链路; controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待; clusterMode:是否集群。
启动类加入:@EnableDiscoveryClient注解
控制类:
@RestController public class OrderController { @GetMapping("/order/test1") @SentinelResource(value = "test1") public String test1() throws InterruptedException { return "test1 "; } }
测试:
当我们重启项目以后,我们访问对应接口http://localhost:8890/order/test1,就会在Sentinel界面上看到对应的限流规则:
标签:
Spring Cloud Alibaba
, 微服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构