sentinel 的持久化,我们希望这样:

  • 可以在 sentinel 控制台中编辑 限流配置,并且同步到 nacos 做持久化
  • 在 nacos 中修改了限流配置,也可以同步到 sentinel 控制台

要实现上述第一个功能需要对 sentinel 控制台的源码有所了解,并加依改造。

但 GitHub 上已经有人改造好了,做了个加强版 控制台。

https://github.com/CHENZHENNAME/sentinel-dashboard-nacos

  • 打开上述网址,克隆项目到本地
  • 打开根目录下的 pom.xml ,修改 sentinel 的版本
    • 在这里插入图片描述

    • 我的是 1.8.1

  • 进入项目根目录,cmd,执行命令 mvn clean package
  • 然后会生成一个 jar 包,这个 jar 包就是 sentinel 控制台
  • 执行命令,启动控制台:
java -Dserver.port=7777 -Dnacos.serverAddr=localhost:8848 -Dnacos.namespace=9f977da3-20cc-4162-904b-2324b9bf31f6 -jar sentinel-dashboard.jar

# -Dserver.port 控制台端口号
# -Dnacos.serverAddr: nacos 地址
# -Dnacos.namespace: 你项目所在的 nacos 命名空间

java 后端配置文件:(其实,除了 spring.application.name 以外,这些配置可以写在公共的配置文件)

spring:
  application:
    name: order-service
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:7777
      datasource:
        ds1-flow: # 这个名字任意起
          nacos:
            server-addr: 127.0.0.1:8848
            data-id: ${spring.application.name}-flow-rules  # 和 nacos中保持对应
            username: nacos
            password: nacos
            namespace: 9f977da3-20cc-4162-904b-2324b9bf31f6  # 和nacos中保持对应
            group-id: SENTINEL_GROUP # 和nacos中保持对应
            # 规则类型:流控
            rule-type: flow
            # 对于 nacos 数据类型
            data-type: json
    nacos:
      # nacos 服务器地址
      server-addr: 127.0.0.1:8848
      discovery:
        username: nacos
        password: nacos
        namespace: 9f977da3-20cc-4162-904b-2324b9bf31f6

然后浏览器访问:http://localhost:7777 , 最开始什么都没有,然后访问你自己的项目的任意一个要限流的接口,则 左侧会出现对于的 服务名称

在这里插入图片描述

我们清空之前 nacos 配置的 流控规则,连配置文件也删掉,重新配置:

  • 点击 簇点链路,新增 一个流控规则:
    在这里插入图片描述

  • 注意,一定要点 带 2 的,只有带 2 的才能推送到 nacos,在 流控规则 选项中添加也不行,只能点击 蓝色方框 才能推送到 nacos

  • 在这里插入图片描述

添加成功后,nacos 中,你指定的命名空间下会自动生成 ${application-name}-flow-rules 格式的配置文件

  • 配置详情
    在这里插入图片描述

当你在 sentinel 控制台中,无论增加规则,还是修改规则,都会同步到 nacos;相反,修改 nacos 中 配置文件的限流规则,也会同步到 sentinel 。

这样,当你的 服务停掉后,你的限流策略并不会消失,它被 nacos 持久化到了 MySQL 数据库。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐