sentinel持久化到nacos
·
sentinel 的持久化,我们希望这样:
- 可以在 sentinel 控制台中编辑 限流配置,并且同步到 nacos 做持久化
- 在 nacos 中修改了限流配置,也可以同步到 sentinel 控制台
要实现上述第一个功能需要对 sentinel 控制台的源码有所了解,并加依改造。
但 GitHub 上已经有人改造好了,做了个加强版 控制台。
https://github.com/CHENZHENNAME/sentinel-dashboard-nacos
- 打开上述网址,克隆项目到本地
- 打开根目录下的 pom.xml ,修改 sentinel 的版本
-
我的是 1.8.1
- 进入项目根目录,cmd,执行命令
mvn clean package
- 然后会生成一个 jar 包,这个 jar 包就是 sentinel 控制台
- 执行命令,启动控制台:
java -Dserver.port=7777 -Dnacos.serverAddr=localhost:8848 -Dnacos.namespace=9f977da3-20cc-4162-904b-2324b9bf31f6 -jar sentinel-dashboard.jar
# -Dserver.port 控制台端口号
# -Dnacos.serverAddr: nacos 地址
# -Dnacos.namespace: 你项目所在的 nacos 命名空间
java 后端配置文件:(其实,除了 spring.application.name 以外,这些配置可以写在公共的配置文件)
spring:
application:
name: order-service
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:7777
datasource:
ds1-flow: # 这个名字任意起
nacos:
server-addr: 127.0.0.1:8848
data-id: ${spring.application.name}-flow-rules # 和 nacos中保持对应
username: nacos
password: nacos
namespace: 9f977da3-20cc-4162-904b-2324b9bf31f6 # 和nacos中保持对应
group-id: SENTINEL_GROUP # 和nacos中保持对应
# 规则类型:流控
rule-type: flow
# 对于 nacos 数据类型
data-type: json
nacos:
# nacos 服务器地址
server-addr: 127.0.0.1:8848
discovery:
username: nacos
password: nacos
namespace: 9f977da3-20cc-4162-904b-2324b9bf31f6
然后浏览器访问:http://localhost:7777 , 最开始什么都没有,然后访问你自己的项目的任意一个要限流的接口,则 左侧会出现对于的 服务名称
我们清空之前 nacos 配置的 流控规则,连配置文件也删掉,重新配置:
-
点击 簇点链路,新增 一个流控规则:
-
注意,一定要点 带 2 的,只有带 2 的才能推送到 nacos,在 流控规则 选项中添加也不行,只能点击 蓝色方框 才能推送到 nacos
添加成功后,nacos 中,你指定的命名空间下会自动生成 ${application-name}-flow-rules
格式的配置文件
- 配置详情
当你在 sentinel 控制台中,无论增加规则,还是修改规则,都会同步到 nacos;相反,修改 nacos 中 配置文件的限流规则,也会同步到 sentinel 。
这样,当你的 服务停掉后,你的限流策略并不会消失,它被 nacos 持久化到了 MySQL 数据库。
更多推荐
已为社区贡献1条内容
所有评论(0)