Sentinel持久化规则

项目中有用到Sentinel,然后需要将Sentinel上配置的规则做持久化(或者初始化),通过改写Sentinel源码实现了需求,下面记录一下实现过程。

如果不知道Sentinel怎么搭,可以看看: 流控平台Sentinel搭建和接入教程_东皋长歌的博客-CSDN博客

一,背景

Sentinel是Alibaba开源的一款特别实用的流控平台,属于那种部署就能用的轻量级平台,不过正因为轻量,导致它不会对你设置的流控规则做持久化。什么意思呢?就是说如果你的Sentinel因为一些原因,比如服务器断电,或者服务器崩溃了,你配置的规则就没了(它们是存储在服务器本地内存的)。如果配置的少或者系统对限流不怎么依赖的话还好说,如果是一个大规模在线系统,配置的规则又很多的话,那就不好说了,估计有些人又得被祭天了(哭唧唧)。

不要慌!

下面就给大家讲怎么做持久化。

二,修改源码

1,下载源码

在Github上搜索,Sentinel,选择alibaba的
GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)https://github.com/alibaba/Sentinel下载源码到本地,解压,打开sentinel-dashboard项目

 

2,修改Nacos依赖的配置

在sentinel-dashboard源码的pom文件中,nacos的依赖默认的scope是test,只能在测试时使用,这里要去除:

 3,添加nacos的支持

实际上代码已经在test下面了,直接拷贝过来就可以

 4,修改Nacos里的配置地址

在NacosConfig类里加上@ConfigurationProperties(prefix="nacos") 和成员变量addr

这一步是用来定义nacos的地址,以便于可以讲规则持久化到nacos里去

 在sentinel-dashboard项目的application.properties里加上一行配置

nacos.addr=nacos部署的服务器IP:8848

5,修改数据源读取的类,使配置生效

修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2类:改成如下图中的(就是把Defaule改成Nacos)

 6, 修改前端页面展示

如下图,先将之前注释的打开,然后把里面的文字改成你自己想要的。

注意: 从这个入口进去的才会持久化。 

7,重新编译打包

到整个项目的上层,使用 mvn clean package -Dmaven.test.skip=true 打包

 

三,重新部署

使用上面的项目sentinel-dashboard文件夹里target目录下的新包,上传到服务器,再启动

nohup java   -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard  -Dnacos.addr=nacos服务器IP:8848    -jar sentinel-dashboard.jar > nohup.out 2>&1 &
echo "sentinel dashboard start success"

四,配置流控规则

1,从新的入口,配置流控规则

2,到nacos上检查

nacos上有你在sentinel上定义的规则,持久化成功

 

 3, 重启sentinel

会从nacos读取配置,初始化到Sentinel的规则里面来 

至于Sentinel流控规则的高级玩法,请看下集,敬请期待!

码字不易,记得点赞关注哟!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Sentinel持久化规则是指在Sentinel中进行规则配置时的持久化方法和规则的存储方式。Sentinel是一个开源的流量控制和熔断降级框架,它可以在分布式系统中通过限流、降级和熔断等手段来保护系统的稳定性和可用性。 在Sentinel中,持久化规则是通过官方提供的一个组件来实现的。具体来说,持久化规则官方文档提供了详细的说明和示例,帮助用户了解和使用该组件。 在进行Sentinel持久化规则配置时,可以通过配置文件、API接口或者直接在代码中进行配置。官方文档详细介绍了这些配置方法的具体步骤和示例。 持久化规则官方文档也介绍了规则的存储方式,其中包括本地存储和远程存储两种方式。本地存储是指将规则保存在本地文件或数据库中,远程存储是指将规则保存在远程的存储系统,如Redis等。官方文档对这两种存储方式进行了详细的说明和比较,帮助用户选择适合自己场景的存储方式。 通过官方文档,用户可以学习到如何在Sentinel中进行持久化规则的配置和管理,从而更好地使用该框架来保护自己的系统。官方文档的详细说明和示例可以帮助用户快速上手,并提供了一些最佳实践和注意事项。 总的来说,Sentinel持久化规则官方文档是一个非常实用的参考资料,它能够帮助用户了解和使用Sentinel持久化规则功能,从而更好地保护系统的稳定性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东皋长歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值