Sentinel+nacos实现push模式规则持久化
一、源码下载
-
官方源码地址:Sentinel的源码托管在GitHub上,可以通过以下地址下载:
https://github.com/alibaba/Sentinel
-
版本选择:建议选择稳定版本,1.8.6。可以通过GitHub的releases页面下载特定版本:
https://github.com/alibaba/Sentinel/releases
二、源码修改(以Nacos持久化为例,修改好的源码放在文章最后)
1. 基础环境准备
- 使用IDEA或Eclipse导入
sentinel-dashboard
项目 - 确保Java版本为1.8或以上
2. 主要修改步骤
- 修改pom.xml:
- 注释掉
sentinel-datasource-nacos
依赖的test scope
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><!--<scope>test</scope>--> </dependency>
- 注释掉
-
移动测试代码:
- 将
test/com.alibaba.csp.sentinel.dashboard.rule.nacos
下的文件复制到main/java
对应目录
- 将
-
修改nacos地址:
在sentinel–dashboard的application.properties中添加nacos地址配置:
-
修改规则发布/拉取实现:
-
修改控制台页面:
-
打包发布:
最后在运行jar包的时候可以指定nacos的地址
- 客户端的配置:
引入依赖:
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
在application.yml增加sentinel以下配置:
spring:# profiles:# active: companyapplication:name: order-service # 服务名称cloud:datasource:flow:nacos:server-addr: 192.168.56.11:8848data-id: order-service-flow-rulesgroup-id: SENTINEL_GROUPrule-type: flow
最后运行客户端程序。
- 测试效果:
在控制台添加流控规则:
查看nacos上的配置文件,可以看到已经将规则配置持久化到nacos里了:
用jmeter测试客户端规则是否生效,可以看到已经触发限流规则:
至此,sentinel的规则持久化就已经实现
3. 其他持久化方案
除了Nacos,还可以改造支持:
- Apollo:类似Nacos改造方式,使用
apollo-openapi
依赖 - MySQL:修改源码实现监控数据持久化到数据库
改造后的源码连接:git源码