改造Sentinel-dashboard源码

本文主要是对sentinel-dashboard源码进行改造,分为两块,一块是普通流控规则的改造,一个是网关流控规则的改造,完整的修改过的源码见文章最后源码下载,可以直接使用,修改Nacos配置就可以。

1、官网源码的下载

由于sentinel-dashboard的原始jar包,数据是存储在内存中,服务重启会导致配置的规则丢失,所以面临的第一个问题就是,需要将数据的保存逻辑,从保存到内存修改到保存到其他的数据源,这里选用的是nacos。

如下图,选择对应的版本,本文是1.8.4的版本,官方下载地址

如上sentinel-dashboard-1.8.4.jar是可执行jar包,但是我们需要下载其源码,也就是Source code去修改规则的保存逻辑。

由于sentinel的客户端选用的版本是1.8.0,所以最开始的控制台版本也选用了1.8.0的版本,但是1.8.0版本的控制台有bug,所以采用了1.8.4版本(其实控制台的各个版本区别不大,可以自行选用)

2、源码的改造

下载后的源码结构如下:

2.1 引入Nacos的相关依赖

去除pom文件中nacos存储相关依赖的test标签,目的是后续需要从nacos存取数据,可以看到其实数据源也可以选择Apollo和Zookeeper。

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
<!--  <scope>test</scope>-->
</dependency>
<!-- for Apollo rule publisher sample -->
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-openapi</artifactId>
    <version>1.2.0</version>
    <scope>test</scope>
</dependency>
<!--for Zookeeper rule publisher sample-->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>${curator.version}</version>
    <scope>test</scope>
</dependency>

2.2 普通流控规则相关的改造

1、在rule文件夹下,新增一个nacos文件夹,按权限、降级、限流、热点参数限、系统五个配置规则分开,另外增加了NacosConfig、NacosConfigUtil和JSONUtils两个工具类

2、然后修改对应的控制界面的controller接口,这边涉及到5个controller接口,截图如下:

 

2.3 网关流控规则相关的改造(需要集成到网关上才需要修改这一块)

1、增加网关流控和API管理在nacos的存取操作类

2、修改原有的网关流控和API管理的Controller接口,修改其添加、查询、修改和删除接口,将保存到内存操作修改为保存到nacos

2.4 给出修改逻辑和位置

1、例如查询接口,之前的逻辑是从内存中获取,现在的逻辑是从nacos查询

2、例如保存接口,之前的逻辑是保存在内存中,现在是保存都nacos中

3、其他的规则的接口也是同理修改,修改过的完整的源码见文章结尾

2.5 在application.properties配置文件中增加nacos的配置

这里填写nacos的ip和端口,还需要在nacos上新增一个命名空间,这个命名空间后续专门存放sentinel的规则,此处的命名空间要和后面集成Sentinel客户端配置相同,不然读取不到流控规则

#nacos的集群地址
nacos.address=xxxxx:8848
#二选一public为空,namespeace为uuid,这里与dubbo服务一致
#nacos.namespace=
nacos.namespace=6db12247-153b-4d0c-bef6-5c7c5e48faa3

3、修改后的完整源码下载

Sentinel-1.8.4

posted @ 2022-09-01 19:30  浪迹天涯的派大星  阅读(530)  评论(0编辑  收藏  举报