HM-SpringCloud微服务系列8.5【规则持久化】
作者:互联网
现在,sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们必须确保这些规则的持久化,避免丢失。
1. 规则管理模式
规则是否能持久化,取决于规则管理模式,sentinel支持三种规则管理模式:
1.1 原始模式(默认)
原始模式:控制台配置的规则直接推送到Sentinel客户端,也就是我们的应用。然后保存在内存中,服务重启则丢失。
1.2 pull模式
pull模式:控制台将配置的规则推送到Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后会定时去本地文件或数据库中查询,更新本地规则。
1.3 push模式(推荐)
push模式:控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新。
1.4 小结
2. 实现push模式
2.1 步骤1
修改OrderService,让其监听Nacos中的sentinel规则配置。
在order-service中引入sentinel监听nacos的依赖:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
在order-service中的application.yml文件配置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
重启order服务
例如以后需要在限流配置上+降级配置,可以如下配置(复制一份换名即可)
2.2 步骤2
2.3 步骤3
2.4 步骤4
PS:步骤2&3&4较为繁琐,在此不做演示,只用课程资料中老师修改完打包好的直接运行查看效果
先停掉之前开启的正常未修改的sentinel服务
启动方式跟官方一样:通过命令java -jar sentinel-dashboard.jar
注意:如果要修改nacos地址,需要添加参数:-D
nacos地址须与order服务中配置的一致,如果待开启包内原先配置的不是,则可以通过+命令
-Dnacos.addr=localhost:8848
进行修改
此处实际加不加都行,因为包内老师改的就是8848,以下命令仅做演示
浏览器访问nacos控制台
访问sentinel控制台发现的啥也木有
访问http://localhost:8088/order/101触发簇点链路
F12打开调试模式清空当前页面缓存
在此页面添加的流控规则会被持久化保存到nacos
测试一下吧
此时访问http://localhost:8088/order/101,发现已被限流
现在重启order服务,再次访问发现规则还在,还是被限流ok(此前没有持久化保存时,重启服务后会丢失规则,即限流失效)
标签:配置,8.5,SpringCloud,HM,nacos,限流,规则,sentinel,order 来源: https://www.cnblogs.com/yppah/p/16118719.html