文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-10-04 20:22

关注

前言

在这里插入图片描述

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

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

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

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


目录

Sentinel规则持久化

在这里插入图片描述

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

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

一、原始模式

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

在这里插入图片描述

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

二、拉模式

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.cspgroupId>  <artifactId>sentinel‐datasource‐nacosartifactId>dependency>

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

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

在这里插入图片描述
🍀(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  }]

在这里插入图片描述
引入依赖:

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

增加application.yml配置:

server:  port: 8806spring:  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配置中心生成对应
的配置。

在这里插入图片描述


后记

在这里插入图片描述

👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~

来源地址:https://blog.csdn.net/qq_42146402/article/details/129650025

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯