1.5 规则持久化

一、规则管理模式

  1. 控制台规则管理有三种模式:

    1. 原始模式:Sentinel的默认模式,将规则保存在内存,重启服务会丢失

    2. pull模式:控制台将配置的规则推送的Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后需会定时去本地文件或数据库中查询,更新本地规则

    3. push模式:控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新(推荐)

二、实现push模式

  1. push模式比较复杂,依赖于nacos,并且需要修改Sentinel控制台源码。

  2. 实现方式:

    1. 客户端操作

      1. 引入依赖

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

        备注:Sentinel监听Nacos的依赖

      2. 配置nacos地址

        spring:
          cloud:
            sentinel:
              datasource:
                flow:
                  nacos:
                    server-addr: localhost:8848 # nacos地址
                    dataId: orderservice-flow-rules
                    groupId: SENTINEL_GROUP
                    rule-type: flow # 还可以是:degrade、authority、param-flow

        备注:rule-type值得是具体的规则

        ​ flow:流控规则

        ​ degrade:降级

        ​ authority:授权

        ​ param-flow:热点参数限流

        如果配置降级,需要将datasource下的配置赋值一份,将flow以及rule-type的值修改为对应的规则,如:

                degrade:
                  nacos:
                    server-addr: localhost:8848 # nacos地址
                    dataId: orderservice-flow-rules
                    groupId: SENTINEL_GROUP
                    rule-type: degrade # 还可以是:degrade、authority、param-flow
      3. 修改源码(这里只演示流控规则,因为修改nacos基本上全部规则都要修改!!)

        1. 下载源码

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

          <dependency>
              <groupId>com.alibaba.csp</groupId>
              <artifactId>sentinel-datasource-nacos</artifactId>
          </dependency>
        3. 添加nacos的支持:将test目录下的rule/nacos复制到main文件加下(同样的层级)

          添加nacos支持

        4. 修改nacos地址:修改NacosConfig类

          修改nacos配置

        5. 添加nacos地址配置:在sentinel-dashboard的application.properties中添加nacos地址配置:

          nacos.addr=localhost:8848
        6. 配置nacos数据源

          需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2类

          让nacos数据源生效

        7. 修改前端页面:添加一个支持nacos的菜单

          修改src/main/webapp/resources/app/scripts/directives/sidebar/目录下的sidebar.html文件:

          将下面的注释打开

          修改前端页面

          备注:还需要将流控规则-v1修改成流控规则-Nacos

        8. 对Sentinel-Dashboard进行编译打包(package)

        9. 运行,运行方式同之前

          java -jar sentinel-dashboard.jar
          // 如果修改了nacos地址,不想重新编译
          java -jar -Dnacos.addr=localhost:8848 sentinel-dashboard.jar

最后更新于

这有帮助吗?