Sentinel+nacos实现push模式规则持久化

发布于:2025-07-13 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、源码下载

  1. 官方源码地址:Sentinel的源码托管在GitHub上,可以通过以下地址下载:

    https://github.com/alibaba/Sentinel
    
  2. 版本选择:建议选择稳定版本,1.8.6。可以通过GitHub的releases页面下载特定版本:

    https://github.com/alibaba/Sentinel/releases
    

二、源码修改(以Nacos持久化为例,修改好的源码放在文章最后)

1. 基础环境准备

  • 使用IDEA或Eclipse导入sentinel-dashboard项目
  • 确保Java版本为1.8或以上

2. 主要修改步骤

  1. 修改pom.xml
    • 注释掉sentinel-datasource-nacos依赖的test scope
    <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-datasource-nacos</artifactId>
        <!--<scope>test</scope>-->
    </dependency>
    

在这里插入图片描述

  1. 移动测试代码

    • test/com.alibaba.csp.sentinel.dashboard.rule.nacos下的文件复制到main/java对应目录
  2. 修改nacos地址
    在这里插入图片描述
    在sentinel–dashboard的application.properties中添加nacos地址配置:

在这里插入图片描述

  1. 修改规则发布/拉取实现
    在这里插入图片描述

  2. 修改控制台页面
    在这里插入图片描述

  3. 打包发布
    在这里插入图片描述

最后在运行jar包的时候可以指定nacos的地址

  1. 客户端的配置

引入依赖:

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

在application.yml增加sentinel以下配置:

spring:
  #  profiles:
  #    active: company
  application:
    name: order-service # 服务名称
  cloud:
      datasource:
        flow:
          nacos:
            server-addr: 192.168.56.11:8848
            data-id: order-service-flow-rules
            group-id: SENTINEL_GROUP
            rule-type: flow

最后运行客户端程序。

  1. 测试效果

在控制台添加流控规则:
在这里插入图片描述
查看nacos上的配置文件,可以看到已经将规则配置持久化到nacos里了:

在这里插入图片描述
用jmeter测试客户端规则是否生效,可以看到已经触发限流规则:

在这里插入图片描述
在这里插入图片描述

至此,sentinel的规则持久化就已经实现

3. 其他持久化方案

除了Nacos,还可以改造支持:

  • Apollo:类似Nacos改造方式,使用apollo-openapi依赖
  • MySQL:修改源码实现监控数据持久化到数据库

改造后的源码连接:git源码


网站公告

今日签到

点亮在社区的每一天
去签到