Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化

这篇具有很好参考价值的文章主要介绍了Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud

本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式拉模式推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~

不积跬步,无以至千里;不积小流,无以成江海。每天进步一点点,在成为强者的路上,小新与大家共同成长!

📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)

↩️本文上接:Spring Cloud Alibaba全家桶(七)——Sentinel控制台规则配置


目录

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud

Sentinel规则的推送有下面三种模式:

推送模式 说明 优点 缺点
原始模式 API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource) 简单,无任何依赖 不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境
Pull 模式 扩展写数据源(WritableDataSource), 客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件 等 简单,无任何依赖;规则持久化 不保证一致性;实时性不保证,拉取过于频繁也可能会有性能问题。
Push 模式 扩展读数据源(ReadableDataSource),规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos,Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。生产环境下一般采用 push 模式的数据源。 规则持久化;一致性;快速 引入第三方依赖

一、原始模式

如果不做任何修改,Dashboard 的推送规则方式是通过 API 将规则推送至客户端并直接更
新到内存中:

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud

这种做法的好处是简单,无依赖;坏处是应用重启规则就会消失,仅用于简单测试,不能
用于生产环境。

二、拉模式

pull 模式的数据源(如本地文件、RDBMS 等)一般是可写入的。使用时需要在客户端注册数据源:将对应的读数据源注册至对应的 RuleManager,将写数据源注册至 transport 的
WritableDataSourceRegistry 中。

三、推模式

生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心
(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户端进行,而应该经控
制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本
地。

因此推送规则正确做法应该是:
配置中心控制台/Sentinel 控制台配置中心Sentinel 数据源Sentinel

而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了。

基于Nacos配置中心控制台实现推送:

官方demo: sentinel­demo­nacos­datasource

🍀(1)引入依赖

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

🍀(2)nacos配置中心中配置流控规则

[
  {
    "resource": "TestResource",
    "controlBehavior": 0,
    "count": 10.0,
    "grade": 1,
    "limitApp": "default",
    "strategy": 0
  }
]

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud
🍀(3)application.yml中进行配置

spring:
  application:
    name: mall‐user‐sentinel‐demo
    cloud:
      nacos:
        discovery:
          server‐addr: 127.0.0.1:8848

      sentinel:
        transport:
          # 添加sentinel的控制台地址
          dashboard: 127.0.0.1:8080
          # 指定应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用的HttpServer
          port: 8719
        datasource:
          ds1:
            nacos:
              server‐addr: 127.0.0.1:8848
              dataId: ${spring.application.name}
              groupId: DEFAULT_GROUP
              data‐type: json
              rule‐type: flow

🍀(4)nacos配置中心中添加

[
  {
    "resource": "userinfo",
    "limitApp": "default",
    "grade": 1,
    "count": 1,
    "strategy": 0,
    "controlBehavior": 0,
    "clusterMode": false
  }
]

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud
引入依赖:

<!‐‐sentinel持久化 采用 Nacos 作为规则配置数据源‐‐>
<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>sentinel‐datasource‐nacos</artifactId>
</dependency>

增加application.yml配置:

server:
  port: 8806

spring:
  application:
    name: mall‐user‐sentinel‐rule‐push‐demo #微服务名称

  #配置nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server‐addr: 127.0.0.1:8848

    sentinel:
      transport:
        # 添加sentinel的控制台地址
        dashboard: 127.0.0.1:8080
        # 指定应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用的HttpServer
        #port: 8719
        datasource:
          # ds1: #名称自定义,唯一
          # nacos:
          # server‐addr: 127.0.0.1:8848
          # dataId: ${spring.application.name}
          # groupId: DEFAULT_GROUP
          # data‐type: json
          # rule‐type: flow
        flow‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐flow‐rules
            groupId: SENTINEL_GROUP # 注意groupId对应Sentinel Dashboard中的定义
            data‐type: json
            rule‐type: flow
        degrade‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐degrade‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: degrade
        param‐flow‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐param‐flow‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: param‐flow
        authority‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐authority‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: authority
        system‐rules:
          nacos:
            server‐addr: 127.0.0.1:8848
            dataId: ${spring.application.name}‐system‐rules
            groupId: SENTINEL_GROUP
            data‐type: json
            rule‐type: system

以流控规则测试,当在sentinel dashboard配置了流控规则,会在nacos配置中心生成对应
的配置。

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud


后记

springboot sentinel 持久化数据库,分布式与微服务,sentinel,java,spring,springcloud

👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~文章来源地址https://www.toymoban.com/news/detail-822676.html

到了这里,关于Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sentinel授权规则和规则持久化

    大家好我是苏麟 , 今天说说Sentinel规则持久化. 授权规则 授权规则可以对请求方来源做判断和控制。 授权规则 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。 白名单:来源(origin)在白名单内的调用者允许访问 黑名单:来源(origin)在黑名单内

    2024年02月08日
    浏览(52)
  • Sentinel规则持久化

    首先 Sentinel 控制台通过 API 将规则推送至客户端并更新到内存中,接着注册的写数据源会将新的规则保存到本地的文件中。 示例代码: 1.编写处理类 2.添加配置 在resources下创建配置目录 META-INF/services ,然后添加文件 com.alibaba.csp.sentinel.init.InitFunc 在文件中添加配置类的全路径

    2024年02月13日
    浏览(41)
  • Sentinel 规则持久化

    需要大量修改源码,很麻烦,下面也只是修改了一小部分 阿里有一个收费的sentinel云服务,开源sentinel没有实现最佳版本可能就是为了给收费版让路吧 修改OrderService,让其监听Nacos中的sentinel规则配置。 具体步骤如下: 1.引入依赖 在order-service中引入sentinel监听nacos的依赖:

    2024年02月12日
    浏览(38)
  • Java----Sentinel持久化规则启动

    java -jar -Dnacos.add=8848 你的sentinel源码修改包.jar 前期准备: 1.引入依赖 在order-service中引入sentinel监听nacos的依赖: 2.配置nacos地址 在order-service中的application.yml文件配置nacos地址及监听的配置信息: 3.启动 启动方式跟官方一样: java -jar -Dserver.port=8180 sentinel-dashboard.jar 如果要修改

    2024年02月11日
    浏览(38)
  • Sentinel 规则持久化到 Nacos

    Sentinel的控制台规则管理有三种模式: 原始模式:控制台配置的规则直接推送到Sentinel客户端,也就是我们的应用。然后保存在内存中,服务重启则丢失 pull模式:控制台将配置的规则推送到Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后会定时去本地

    2024年02月16日
    浏览(49)
  • sentinel规则持久化-规则同步nacos-最标准配置

    官方参考文档: 动态规则扩展 · alibaba/Sentinel Wiki · GitHub 需要修改的代码如下: 为了便于后续版本集成nacos,简单讲一下集成思路 1.更改pom 修改sentinel-datasource-nacos的范围 将 改为 2.拷贝示例 将test目录下的com.alibaba.csp.sentinel.dashboard.rule.nacos包下的内容拷贝到src的 com.alibaba.

    2024年02月07日
    浏览(44)
  • Sentinel + Nacos流控规则持久化配置

    json参数对映sentinel 规则面板      第二步,告诉订单服务读取配置,添加yml配置  

    2024年04月23日
    浏览(30)
  • (十五)docker安装sentinel,客户端配置规则本地持久化

    操作系统: Linux  CentOS 7.3 64位 docker版本: 19.03.8 sentinel版本: 1.8.0 1、拉取镜像   2、运行容器   3.访问sentinel http://192.168.121.132:8858/ 账号密码默认都是sentinel ​ sentinel配置的规则默认是存在内存里的,不够稳定,所以我们需要持久化到本地文件中。 1.新建持久化处理类 在我

    2024年02月08日
    浏览(52)
  • Spring Cloud Alibaba全家桶——微服务链路追踪SkyWalking

    本文小新为大家带来 微服务链路追踪SkyWalking 相关知识,具体内容包括 SkyWalking简介 , SkyWalking环境搭建部署 , SkyWalking接入微服务 , SkyWalking持久化跟踪数据 , 自定义SkyWalking链路追踪 , SkyWalking集成日志框架 , SkyWalking告警功能 , SkyWalking高可用 , SkyWalking UI介绍 等进行

    2023年04月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包