Sentinel 规则持久化 | Eddie'Blog
Sentinel 规则持久化

Sentinel 规则持久化

eddie 674 2020-08-10

前言

本身Sentinel默认不具备持久化,是保存在内存里面的,现在目的是想持久化推送到第三方保存,实现方式很多种,Zookeeper、Nacos都可以,本次说的是Nacos, 如果需要 Zookeeper 可以在本文底部留言Eddie。

一、官方资料

Sentinel

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

二、拉取官方最新版本

暂时我最新版本是 v1.7.2

git clone git@github.com:alibaba/Sentinel.git

三、Sentinel改造

3.1 将 test 这一行注释掉,即改为如下

        <!-- for Nacos rule publisher sample -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
<!--            <scope>test</scope>-->
        </dependency>

3.2 com.alibaba.csp.sentinel.dashboard.rule.nacos 复制到 com.alibaba.csp.sentinel.dashboard.rule.nacos,如下图:

图片.png

3.1 com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2 修改为刚刚复制类@Component($name)

    @Autowired
    @Qualifier("flowRuleNacosProvider")
    private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
    @Autowired
    @Qualifier("flowRuleNacosPublisher")
    private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

3.2 src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html 的42行至45行解除注释

          <li ui-sref-active="active" ng-if="entry.appType==0">
            <a ui-sref="dashboard.flow({app: entry.app})">
              <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则 V1</a>
          </li>

3.3 运行Maven指令打包

图片.png

3.5 运行sentinel-dashboard.jar文件

target/sentinel-dashboard.jar

java -jar sentinel-dashboard.jar


# SpringCloud