当前位置: 首页 > news >正文

SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储至nacos完整配置步骤

前言

Sentinel 原生版本的规则管理通过API 将规则推送至客户端并直接更新到内存中,并不能直接用于生产环境。不过官方也提供了一种 Push模式,扩展读数据源ReadableDataSource,规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。这里我们通过配置 Nacos 来实现流控规则的统一存储配置。

架构

控制台推送规则至配置中心,客户端通过监听事件从配置中心获取流控规则。

客户端配置

pom.xml 引入:


<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <version>1.6.3</version> </dependency>

配置文件:


# nacos的访问地址,配置参考 https://blog.52itstyle.vip/archives/4174/ spring.cloud.sentinel.datasource.ds.nacos.server-addr=47.104.187.19:8848 #nacos中存储规则的dataId,对于dataId使用了${spring.application.name}变量,这样可以根据应用名来区分不同的规则配置 spring.cloud.sentinel.datasource.ds.nacos.dataId=${spring.application.name}-flow-rules #nacos中存储规则的groupId spring.cloud.sentinel.datasource.ds.nacos.groupId=SENTINEL_GROUP #定义存储的规则类型 spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow

控制台配置

修改 pom.xml,原来的<scope>test</scope>去掉:


<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>

src/test下面的包com.alibaba.csp.sentinel.dashboard.rule.nacos拷贝到src/main/java下面。

修改 NacosConfig:


/** * @author Eric Zhao * @since 1.4.0 */ @Configuration public class NacosConfig { @Value("${nacos.address}") private String address; @Bean public Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() { return JSON::toJSONString; } @Bean public Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() { return s -> JSON.parseArray(s, FlowRuleEntity.class); } @Bean public ConfigService nacosConfigService() throws Exception { Properties properties = new Properties(); properties.put("serverAddr",address); return ConfigFactory.createConfigService(properties); } }

application.properties 配置引入 Nacos:


# nacos的访问地址,配置参考 https://blog.52itstyle.vip/archives/4174/ nacos.address=47.104.197.19:8848

FlowControllerV2指定对应的 Bean 开启 Nacos 适配。


@Autowired @Qualifier("flowRuleNacosProvider") private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider; @Autowired @Qualifier("flowRuleNacosPublisher") private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

修改sidebar.html页面, 流控规则路由从dashboard.flowV1改成dashboard.flow


<-- nacos 动态规则配置--> <li ui-sref-active="active" ng-if="!entry.isGateway"> <a ui-sref="dashboard.flow({app: entry.app})"> <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则</a> </li>

如图所示,界面会多了一个回到单机页面的按钮,这里我们新增一个流控规则。

登录 Nacos 后台,配置管理->配置列表:

点击进入配置详情,配置内容如下:


[{ "app": "blog", "clusterConfig": { "fallbackToLocalWhenFail": true, "sampleCount": 10, "strategy": 0, "thresholdType": 0, "windowIntervalMs": 1000 }, "clusterMode": false, "controlBehavior": 0, "count": 2.0, "gmtCreate": 1568617671812, "gmtModified": 1568622253889, "grade": 1, "id": 6, "ip": "10.136.168.88", "limitApp": "default", "port": 8720, "resource": "blogView", "strategy": 0 }]

小结

生产环境下,推送规则正确做法应该是 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel。

案例

https://gitee.com/52itstyle/spring-boot-blog

参考

https://cloud.tencent.com/developer/article/1549863

https://github.com/alibaba/Sentinel

https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard

http://www.jsqmd.com/news/299460/

相关文章:

  • Java计算机毕设之基于springboot的社区志愿者服务系统SpringBoot驱动的居民志愿服务智慧系统(完整前后端代码+说明文档+LW,调试定制等)
  • 大模型开发面试全攻略:从基础到进阶的通关秘籍_AI大模型面试指南(含答案)!
  • 本地运行!开源AI音乐生成器HeartMuLa完整安装与使用指南
  • 大模型学习不迷茫!6大模块助你快速入门,实现职业跃迁!学习大模型的顺序,千万别弄反了
  • 程序员必看!企业级私有化部署开源大模型选型与实战指南(建议收藏)
  • 【保姆级教程】从0到1掌握大模型(LLM)学习路线图,建议收藏!_我愿称之为26年最详细的大模型学习路线!
  • AI Agent完全指南:从零开始掌握大模型新方向
  • 基于Spring AI的电商客服RAG系统实战教程,小白也能轻松上手
  • 2025.12.14日周报——文献阅读
  • 百炼-工作流-sb
  • 深入解析:Categraf | 国产化采集器实现:SQL Server 数据库指标采集、可视化、异常告警全流程
  • 1.25假期记录
  • 全网最全MBA必看TOP9 AI论文工具测评
  • 基于51单片机超声波智能垃圾桶控制系统红外感应舵机控制 DIY
  • 结构体struct类型定义的意义和一个vscode实用插件
  • 基于51单片机超声波智能垃圾桶控制系统
  • SpringBoot - yml配置文件
  • 【毕业设计】基于springboot的社会养老平台的设计与实现(源码+文档+远程调试,全bao定制等)
  • Hadoop数据过滤:高效查询的预处理
  • 【毕业设计】基于springboot的社区志愿者服务系统(源码+文档+远程调试,全bao定制等)
  • 【课程设计/毕业设计】 基于Spring Boot的智能养老服务平台基于springboot的社会养老平台的设计与实现【附源码、数据库、万字文档】
  • Java毕设项目推荐-基于springboot的社会养老平台的设计与实现 基于Spring Boot的智能养老服务平台【附源码+文档,调试定制服务】
  • 【计算机毕业设计案例】基于Springboot的智慧老年人中心服务平台的设计与实现基于springboot的社会养老平台的设计与实现(程序+文档+讲解+定制)
  • AI大模型薪资暴涨!北京人社局报告曝光2026年高薪趋势,程序员弯道超车指南
  • 【2025年AI大模型岗面试面经】常见面试题130道!Attention机制与Transformer详解:大模型面试通关必备指南
  • 数字员工与熊猫智汇是什么?主要提供哪些智能化解决方案?
  • 一文吃透网络传输七层协议:从原理到实际应用
  • Java毕设选题推荐:基于SpringBoot+Vue的智慧养老服务平台基于springboot的社会养老平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 计算机Java毕设实战-基于springboot的社会养老平台的设计与实现基于SpringBoot+Vue的智慧养老服务平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 亲测好用10个AI论文写作软件,继续教育学生必备!