springCloud-Alibaba——改造sentinel控制台数据规则推送持久化到nacos

目录

A、核心思路:

B、自己修改—注释流控规则内存页:

C、自己修改—注释流控规则回到单机页面按钮:

D、自己修改—簇点链路中流控存到nacos:

E、自己修改—增加可配置nacos地址:

F、微服务接入控制台增加配置信息:

G、启动测试:

F、个人修改后安装包下载地址:


本文采用的是生产环境使用的Push模式将sentinel规则持久化到nacos:

官方说明:

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel

网上大佬修改步骤:https://www.imooc.com/article/289464

网上大佬修改后源码地址(使用1.6.2版本):https://github.com/eacdy/Sentinel-Dashboard-Nacos/tree/1.6.2-NACOS

本人修改也是在网上大佬修改后的1.6.2源码基础上进行稍微修改,如果以后需要对高版本的官网源码修改时,可参照网上大佬修改后的1.6.2源码版本以及大佬修改步骤进行修改。

A、核心思路:

从Sentinel 1.4.0开始,Sentinel 控制台提供DynamicRulePublisher 和DynamicRuleProvider接口用于实现应用维度的规则推送和拉取,并提供了相关的示例。Sentinel 提供应用维度规则推送的示例页面(/v2/flow),用户改造控制台对接配置中心后可直接通过 v2 页面推送规则至配置中心。

因此对于流控规则、降级规则、系统规则、授权规则、热点规则等5种数据规则,后台修改都是一个思路。创建对应的实体类,实现DynamicRulePublisher 和DynamicRuleProvider接口,并指定接口传递对应的5种数据规则的实体的集合,分别重写对应的push、getRules方法,方法核心就是将数据推送到nacos中或从nacos中获取数据。

在sentinel控制台源码中向nacos推送数据需要注意:sentinel控制台读取的数据规则格式与sentinel在微服务中的客户端获取的数据规则格式不同,因此在nacos中一种数据规则存储2个dataId的配置文件,一个是让sentinel控制台读取的,一个是让sentinel微服务中客户端读取的。两个配置文件中配置的数据规则是一致的。

通过这样就可以实现在sentinel控制台修改数据规则,数据规则马上推送到nacos中进行保存,并且nacos是持久化到mysql中的,因此sentinel控制台配置的数据规则也就持久化到nacos对应的mysql数据库中了,sentinel微服务中的客户端会根据配置文件中配置的nacos中的数据文件进行获取并监听配置是否发生变化,如果发生变化就会自动获取最新数据规则。即便是重新启动sentinel控制台和微服务,以前配置的数据规则也正常运行,因为已经持久化到nacos中的mysql数据库了。

B、自己修改—注释流控规则内存页:

自己的修改,都是在网上大佬修改的1.6.2版本源码基础上进行修改的。

将下图内容注释掉,下图自己修改后的是:

C、自己修改—注释流控规则回到单机页面按钮:

将下图内容注释掉,下图自己修改后的是:

D、自己修改—簇点链路中流控存到nacos:

由于簇点链路中流控默认的是将数据保存在内存中的,因此修改按钮调用的请求地址,将地址转到自己修改好的保存在nacos中即可。将1修改为2即可,图片中是修改后的:

E、自己修改—增加可配置nacos地址:

配置文件增加nacos地址参数:

后台代码读取配置文件nacos地址参数:

F、微服务接入控制台增加配置信息:

在上方描述了微服务接入控制台步骤,配置好以后,增加配置微服务中的sentinel客户端从nacos中读取对应的5种数据规则。

配置信息demo:

注意:下面配置的信息,只有server-addr中的地址修改成自己nacos-config的地址即可,其余信息都不需要动,尤其是groupId、dataId的格式(应用名-flow-rules、应用名-degrade-rules、应用名-system-rules、应用名-authority-rules、应用名-param-flow-rules)、rule-type不能修改,这个是与sentinel控制台源码中推送数据到nacos约定好的。

spring:
  cloud:
    sentinel:
      datasource:
        # 名称随意,流控数据规则配置
        flow:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-flow-rules
            groupId: SENTINEL_GROUP
            # 规则类型,取值见:
            # org.springframework.cloud.alibaba.sentinel.datasource.RuleType
            rule-type: flow
        # 名称随意,降级数据规则配置
        degrade:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-degrade-rules
            groupId: SENTINEL_GROUP
            rule-type: degrade
        # 名称随意,系统数据规则配置
        system:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-system-rules
            groupId: SENTINEL_GROUP
            rule-type: system
        # 名称随意,授权数据规则配置
        authority:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-authority-rules
            groupId: SENTINEL_GROUP
            rule-type: authority
        # 名称随意,热点数据规则配置
        param-flow:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-param-flow-rules
            groupId: SENTINEL_GROUP
            rule-type: param-flow

G、启动测试:

启动nacos、sentinel控制台,各个微服务业务项目。先在浏览器中访问微服务接口,然后在sentinel控制台可以看到对应微服务服务名下各种数据规则和监控,在sentinel中配置数据规则,然后登录到nacos控制台在配置列表就可以看到对应的微服务服务名开头的两个配置文件,一个是sentinel控制台读取用的,一个是微服务中的sentinel客户端读取用的。并且配置的数据规则立马就会对浏览器中访问的对应接口产生效果。

经过此次修改,数据规则推送和使用改造完毕。

F、个人修改后安装包下载地址:

个人经过完善修改后的sentinel运行包下载地址如下:

sentinel-1.6.2数据规则持久化nacos的控制台运行包:

https://download.csdn.net/download/LSY_CSDN_/12253762

sentinel-1.6.2控制台增加监控数据持久化mysql和规则数据持久化nacos部署jar包:

https://download.csdn.net/download/LSY_CSDN_/12254178

sentinel-1.6.2控制台增加监控数据持久化mysql和规则数据持久化nacos部署war包:

https://download.csdn.net/download/LSY_CSDN_/12254182

发布了176 篇原创文章 · 获赞 26 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览