其他分享
首页 > 其他分享> > HM-SpringCloud微服务系列8.5【规则持久化】

HM-SpringCloud微服务系列8.5【规则持久化】

作者:互联网

现在,sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们必须确保这些规则的持久化,避免丢失。

1. 规则管理模式

规则是否能持久化,取决于规则管理模式,sentinel支持三种规则管理模式:
image

1.1 原始模式(默认)

原始模式:控制台配置的规则直接推送到Sentinel客户端,也就是我们的应用。然后保存在内存中,服务重启则丢失。
image

1.2 pull模式

pull模式:控制台将配置的规则推送到Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后会定时去本地文件或数据库中查询,更新本地规则。
image

1.3 push模式(推荐)

push模式:控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新。
image

1.4 小结

image

2. 实现push模式

image

2.1 步骤1

image
修改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

image
image
重启order服务

例如以后需要在限流配置上+降级配置,可以如下配置(复制一份换名即可)
image

2.2 步骤2

image

2.3 步骤3

image
image

2.4 步骤4

image
image

PS:步骤2&3&4较为繁琐,在此不做演示,只用课程资料中老师修改完打包好的直接运行查看效果
image
先停掉之前开启的正常未修改的sentinel服务
image
启动方式跟官方一样:通过命令java -jar sentinel-dashboard.jar
注意:如果要修改nacos地址,需要添加参数:-D

nacos地址须与order服务中配置的一致,如果待开启包内原先配置的不是,则可以通过+命令-Dnacos.addr=localhost:8848进行修改
此处实际加不加都行,因为包内老师改的就是8848,以下命令仅做演示

image
浏览器访问nacos控制台
image
image
image
访问sentinel控制台发现的啥也木有
image
访问http://localhost:8088/order/101触发簇点链路
image
image
F12打开调试模式清空当前页面缓存
image
image
在此页面添加的流控规则会被持久化保存到nacos


测试一下吧
image
image
image
image
此时访问http://localhost:8088/order/101,发现已被限流
image

现在重启order服务,再次访问发现规则还在,还是被限流ok(此前没有持久化保存时,重启服务后会丢失规则,即限流失效)
image
image
image

标签:配置,8.5,SpringCloud,HM,nacos,限流,规则,sentinel,order
来源: https://www.cnblogs.com/yppah/p/16118719.html