当前位置: 首页 > news >正文

11-sentinel利用nacos作持久化

本文介绍sentinel配置数据的持久化方法。由于sentinel官方并没有提供持久化功能,大家在测试过程中也能发现sentinel服务重启后,原来配置的数据就丢了,本文就是来处理这一问题的。

做好心理准备,我们要修改sentinel的源代码,是不是感觉高大上。

0、环境

  • jdk 1.8
  • sentinel 1.8.2
  • nacos 2.0.3
  • mysql 8.0.29

1、sentinel源码下载

点击链接:sentinel源码下载。

2、修改sentinel源代码

下载完成后,解压源代码,找到sentinel-dashboard目录,再用idea(你可以用任何你喜欢的工具)打开,等待maven下载依赖完成。完成后,按以下步骤开始改造:

2.1、修改pom.xml依赖

找到sentinel-datasource-nacos,注释掉test scope,如下代码:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><!--便于与nacos集成,注释掉test期<scope>test</scope> -->
</dependency>

2.2、复制nacos包

打开sentinel-dashboard项目下的test目录,找到com.alibaba.csp.sentinel.dashboard.rule.nacos包,复制这个包,复制到main目录下,包名和测试目录保持一致。复制完成后,如下图:
在这里插入图片描述

2.3、修改NacosConfig

如上图,打开NacosConfig类,找到nacosConfigService(), 按以下代码修改:

 @Beanpublic ConfigService nacosConfigService() throws Exception {//添加nacos配置//注意,这里硬编码,你可以用配置文件的方式Properties prop = new Properties();prop.setProperty("serverAddr", "localhost:8848");prop.setProperty("namespace", "dev");return ConfigFactory.createConfigService(prop);}

2.4、修改controller

找到FlowControllerV2类,位于com.alibaba.csp.sentinel.dashboard.controller.v2包下。按如下代码修改:
在这里插入图片描述
至此,sentinel后端改造完成。

2. 5、前端页面改造

找到sidebar.html文件,位于**sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/**目录下。加入如下代码:

<li ui-sref-active="active"><a ui-sref="dashboard.flow({app: entry.app})"><i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则--持久化版</a>
</li>

到这里,sentinel的持久化就改造完成了,注意,只有上面我们刚刚加的那个目录支持。

现在可以打包了,用idea或mvn 命令行都行,打包成功后,在target目录能找到对应的jar文件。

3、微服务改造

从这里开始,改造我们的微服务,按以下步骤来:

3.1、添加依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><version>1.8.0</version>
</dependency>

3.2、添加配置

在application.yml文件中,加入以下配置:

spring:cloud:sentinel:transport:port: 8719dashboard: localhost:8080datasource:my-flow:nacos:# 注意,这里的配置,要和NacosConfig里写的一致server-addr: localhost:8848namespace: dev# 在NacosConfigUtil中定义,这里的配置要和类中保持一致groupId: SENTINEL_GROUPdataId: ${spring.application.name}-flow-rulesrule-type: flow

注意事项我已经写了注释。

4、测试

结合上面的一系列改造,现在终于可以测试了,先跑起来改造后的sentinel-dashboard。关于nacos的配置,请参见我的另一篇博文: nacos环境搭建。

4.1、跑sentinel-dashboard

执行如下命令:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

注意,这里一定是改造后的jar包!浏览器登录后,如下图效果:
在这里插入图片描述
下面手动添加一个规则

4.2、添加规则

在这里插入图片描述
保存后,再打开nacos ,打开config配置,如下图:
在这里插入图片描述
可以看到,刚才配置的限流规则已经同步到nacos里了。OK!

http://www.lryc.cn/news/428765.html

相关文章:

  • 密码学之哈希算法
  • 杰发科技AC7801——GPIO通过寄存器地址控制高低电平
  • 代码随想录算法训练营第三十一天| 01背包问题 二维 01背包问题 一维 416. 分割等和子集
  • github删除历史所有commit
  • C++前向声明简介
  • 华为手机是越贵越好吗?
  • 【java基础】IDEA 的断点调试(Debug)
  • MPLS相关实验
  • 从零开始学习SLAM(五):极几何与极约束
  • Freertos学习笔记
  • 线程(Thread)的使用方法和锁(同步代码块,lock锁)的问题
  • Java 反射机制
  • 详解MBR分区结构以及GPT分区结构
  • jvm 调优篇
  • Spring AOP应用指南:概念、通知与表达式分析
  • 汽车的UDS诊断01
  • MySQL——单表查询(二)按条件查询(6)DISTINCT 关键字作用于多个字段
  • python从入门到精通:数据容器
  • Java 中都有哪些引用类型?
  • 使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B
  • mybatisplus 通过xml 定义接口
  • 上周稼先社区的活动
  • day_45
  • SQL 时间盲注 (injection 第十六关)
  • nginx核心配置示例
  • 【面向对象】04面向对象三大特征之——继承
  • 计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计
  • 用基础项目来理解spring的作用
  • Json-复杂泛型解析工具类
  • CLIP-VIT-L + Qwen 多模态学习笔记 -3