1.5 规则持久化
一、规则管理模式
控制台规则管理有三种模式:
原始模式:Sentinel的默认模式,将规则保存在内存,重启服务会丢失
pull模式:控制台将配置的规则推送的Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后需会定时去本地文件或数据库中查询,更新本地规则
push模式:控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新(推荐)
二、实现push模式
push模式比较复杂,依赖于nacos,并且需要修改Sentinel控制台源码。
实现方式:
客户端操作
引入依赖
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>备注:Sentinel监听Nacos的依赖
配置nacos地址
spring: cloud: sentinel: datasource: flow: nacos: server-addr: localhost:8848 # nacos地址 dataId: orderservice-flow-rules groupId: SENTINEL_GROUP rule-type: flow # 还可以是:degrade、authority、param-flow备注:rule-type值得是具体的规则
flow:流控规则
degrade:降级
authority:授权
param-flow:热点参数限流
如果配置降级,需要将datasource下的配置赋值一份,将flow以及rule-type的值修改为对应的规则,如:
degrade: nacos: server-addr: localhost:8848 # nacos地址 dataId: orderservice-flow-rules groupId: SENTINEL_GROUP rule-type: degrade # 还可以是:degrade、authority、param-flow修改源码(这里只演示流控规则,因为修改nacos基本上全部规则都要修改!!)
下载源码
在sentinel-dashboard源码的pom文件中,nacos的依赖默认的scope是test,只能在测试时使用,这里要去除:
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>添加nacos的支持:将test目录下的rule/nacos复制到main文件加下(同样的层级)

修改nacos地址:修改NacosConfig类

添加nacos地址配置:在sentinel-dashboard的application.properties中添加nacos地址配置:
nacos.addr=localhost:8848配置nacos数据源
需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2类

修改前端页面:添加一个支持nacos的菜单
修改src/main/webapp/resources/app/scripts/directives/sidebar/目录下的sidebar.html文件:
将下面的注释打开

备注:还需要将
流控规则-v1修改成流控规则-Nacos对Sentinel-Dashboard进行编译打包(package)
运行,运行方式同之前
java -jar sentinel-dashboard.jar // 如果修改了nacos地址,不想重新编译 java -jar -Dnacos.addr=localhost:8848 sentinel-dashboard.jar
最后更新于
这有帮助吗?