Sentinel的持久化规则

前言:

  • 大家关闭服务8401后,sentinel控制台上的流控规则就会消失,这种就是临时的,不是永久的。
  • 如今,sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们要配置一对配置,一旦重启(app)应用后都消失啦,这个问题就很严重,so我们必须确保这些规则的持久化,避免丢失。

规则管理模式 

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

  • 原始模式:Sentinel的默认模式,将规则保存在内存,重启服务会丢失。
  • 拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更;
  • 推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacosicon-default.png?t=N7T8https://github.com/alibaba/nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。

 

推模式示例展示 

1.在pom.xml中添加依赖,使用nacos配置规则,nacos 是阿里中间件团队开源的服务发现和动态配置中心。Sentinel 针对 Nacos 作了适配,底层可以采用 Nacos 作为规则配置数据源。

<!--Springcloud ailibaba sentinel-datasource-nacos后续做特久化用-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency

2.修改resources中的application.yml文件,在spring.cloud.sentinel中添加

spring:
  cloud:
    sentinel:​
      datasource:
         ds1:
           nacos:
             server-addr: localhost:8848
             data-id: cloudalibaba-sentinel-service
             group-id: DEFAULT_GROUP
             data-type: json
             rule-type: flow

​

 3.添加nacos的业务规则配置,这里与sentinel相互联系:

4.这里着重对上面配置内容进行解释:

  • resource:资源名称,
  • limitApp:来源应用;
  • grade:阈值类型,0表示线程数,1表示QPS;
  • count:单机阈值;
  • strategy:流控模式,0表示直接,1表示关联,2表示链路;
  • controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;
  • clusterMode:是否集群。

 5.点击发布后,配置列表存在

 6.启动8401后刷新路径sentinel客户端上面业务规则就存在了

7.验证sentinel持久化规则(动态规则,DataSource 扩展实现) 

7.1停止8401服务,查看sentinel界面,我们发现业务规则没有了

7.2重启8401服务,调用url反复刷新,查看sentinel界面,我们发现业务规则又存在了,不用再手动去配置规则了

结语:

 我们在没有使用sentinel动态规则之前,都是通过 API 手动直接修改 (loadRules),这只是(硬编码方式)一般仅用于测试和演示,而我们生产上一般通过动态规则源的方式来动态管理规则。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值