手把手教你搭建SpringCloudAlibaba之Sentinel规则持久化

 SpringCloud Alibaba全集文章目录:

零、手把手教你搭建SpringCloudAlibaba项目

一、手把手教你搭建SpringCloud Alibaba之生产者与消费者

二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心

三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心

四、手把手教你搭建SpringCloudAlibaba之Nacos服务集群配置

五、手把手教你搭建SpringCloudAlibaba之Nacos服务持久化配置

六、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量实时监控

七、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量控制

八、手把手教你搭建SpringCloudAlibaba之Sentinel服务熔断降级

九、手把手教你搭建SpringCloudAlibaba之Sentinel热点key限流

十、手把手教你搭建SpringCloudAlibaba之Sentinel系统自适应保护

十一、手把手教你搭建SpringCloudAlibaba之Sentinel注解SentinelResource

十二、手把手教你搭建SpringCloudAlibaba之Sentinel规则持久化

十三、手把手教你搭建SpringCloudAlibaba之Seata分布式事务

点击跳转学习 -------------->手把手教你搭建SpringCloud项目

1、为什么要持久化? 

在前边的文章中我们各个规则的配置,是先有服务的调用,随后我们才能进行服务限流的配置,当我们重启服务,sentinel之前配置规则就没有了,原因就是数据全部保存在内存之中,我们还需要重新配置,在平时的项目的开发过程中,服务是会经常性的重启,在生成环境当中更是不允许这样的事情发生。所以就需要将我们的配置的规则进行是持久化操作!

 2、为什么使用Nacos?

如果要想实现配置规则的读写操作,那么必然要有一个存储的终端,而且这个终端需要保证性能高,同时又可以很稳定,这样一来几乎就不会去考虑到 SQL 数据库了(配置的限流规则一般很少去改变,更多的是进行配置规则的读取),还有就是如果说现在你要开发一个系统,这个系统可以由管理人员在服务应用部署上线之前,就可以进行所有限流规则的维护,这个时候一定完善的管理界面(排除那些没有完善管理界面:Redis、Zooeeper),所以最佳的做法就是使用 Nacos,因为 Nacos 里面支持有一个完善的处理界面,而且其本身是提供有JSON 数据(各种的数据类型都是支持的)的直接存储,最重要的是 Nacos还是SpringCloudAlibaba 套件之中最为重要的注册中心。

3、如何进行配置?

Sentinel 为了便于资源限流规则的持久化管理,专门提供了 ReadableDataSource(配置读取)与 WritableDataSource(置写入接口)两个操作接口,利用这两个接口可以向指定的存储设备中实现规则的读写处理。Sentinel提供的DataSource是一个逻辑上的概念,具体的存储可以是关系型数据库文件、ZooKeeper、Redis、Nacos等存储终端,在终端中可以保存所需要的限流规则而对于DataSource的操作形式也提供有两种:
1、拉模式(Pull-Based): 客户端主动向某个DataSource存储中心定期轮询并读取规则,这个配置中心可能是一个文件,或者是关系型数据库,虽然此种方式简单,但是却无法及时获取到配置更新,
2、推模式(Push-Based): 所有的限流规则由配置中心(Nacos、Zookeeper、Redis等) 统一推送客户端通过注册监听器的方式监听规则的变化,这样可以更好的保持配置的实时性和一致性。
如果考虑到配置的及时性的问题,那么推模式是首选的,推模式实现的过程之中最为重要的一点就是需要对限流规则进行监听 (Redis 监听、ZooKeeper 监听),但是 Nacos 本身就提供有了一个完善的监听支持。

在pom文件中加入所使用数据源的jar包

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

在yml配置文件中加入数据源的配置

#数据源的配置datasource:flow-datasource: #流控的数据源nacos: #当前存储的介质为Nacosserver-addr: localhost:8848   #nacos的地址data-id: cloudalibaba-sentinel-server  #配置项的名称group-id: DEFAULT_GROUP #分组的id 一般为大写data-type: json  #配置的文件的结构rule-type: flow #流控规则

配置完成后如图:

重新启动项目,在nacos中进行配置

 

Data ID 要与配置文件中的 data-id: cloudalibaba-sentinel-server #配置项的名称 所对应

GROUP 要与配置文件中的 group-id: DEFAULT_GROUP 所对应

配置格式 选择json 要与配置文件中的 data-type: json #配置的文件的结构 所对应

配置内容:

[

{

"resource": "/testA",

"limitApp": "default",

"grade":1,

"count": 2,

"strategy": 0,

"controlBehavior":0,

"clusterMode": false

}

]

参数解读:

配置完成之后,我们就可以看到我们刚刚的所配置的文件。

我们访问http://localhost:8401/testA 可以看到进行了限流。

 看到sentinel的控制台的流控规则也有了我们刚刚配置的限流规则。

 我们将nacos中的配置进行修改一下,将count改为5,进行保存。看看sentinel是否会变?

这里会有颜色提示我们修改的地方, 点击确认发布。

 看到我们的sentinel中的配置也进行了改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5976.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IIC(I2C)协议

I2C&#xff08;Inter-Integrated Circuit&#xff09;:是一种串行通信协议&#xff0c;用于在集成电路之间进行数据传输。它由飞利浦公司开发&#xff0c;并广泛应用在各种电子设备和传感器之间进行通信。 I2C通信协议由两根线组成&#xff1a; 一个是用于数据传输的串行数据线…

MySQL 主从复制与读写分离

概念 主从复制与读写分离的意义 企业中的业务通常数据量都比较大&#xff0c;而单台数据库在数据存储、安全性和高并发方面都无法满足实际的需求&#xff0c;所以需要配置多台主从数据服务器&#xff0c;以实现主从复制&#xff0c;增加数据可靠性&#xff0c;读写分离&#x…

HTTP模式下STM32程序远程升级设计

针对嵌入式终端设备架设分散、数量庞大以及应用程序更新迭代速度快带来的程序升级困难局面&#xff0c;运用STM32微控制器的在应用中编程&#xff08;IAP&#xff09;原理&#xff0c;设计了通过以太网远程升级程序的方案。 HTTP协议和LwIP协议的使用&#xff0c;不仅让整个方…

0基础学习VR全景平台篇,第51篇:高级功能-自定义菜单

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;高级功能-自定义菜单&#xff01; 功能位置示意 一、本功能将用在哪里&#xff1f; 自定义菜单&#xff0c;是显示在VR漫游作品底部和顶部各种可点击的图标按钮。…

Nginx(7)Nginx实现服务器端集群搭建

Nginx集群搭建 Nginx与Tomcat部署Nginx实现动静分离Nginx实现Tomcat集群搭建 Nginx高可用解决方案KeepalivedKeepalived配置文件keepalived之vrrp_script Nginx制作下载站点Nginx的用户认证模块 Nginx与Tomcat部署 前面课程已经将Nginx的大部分内容进行了讲解&#xff0c;我们…

如何通过用户场景分析挖掘需求痛点?4大角度

在我们日常需求分析过程中&#xff0c;往往忽视对用户场景的深入分析和挖掘&#xff0c;造成伪需求和需求缺失等问题。 而真正的用户需求&#xff0c;只有在对应的应用场景下才会真正呈现出来。因此我们需要重视对用户场景分析&#xff0c;深入挖掘用户需求痛点。而在对用户场景…

解决 An attempt was made to call a method that does not exist. 问题详解

哈喽大家好&#xff0c;我是阿Q。今天在开发代码的过程中&#xff0c;由于手抖&#xff0c;不知道引入了什么包依赖&#xff0c;导致项目启动一直报错&#xff0c;特写本文来记录下解决问题的经过。 文章目录 问题描述报错信息如下报错描述 解决方法总结 有想赚点外块|技术交流…

windows环境下安装zookeeper

安装 下载地址&#xff1a;Apache Downloads 注意&#xff1a;zookeeper的安装路径不要有中文&#xff0c;建议也不要有空格 文件路径如下&#xff1a; 生成并修改zoo.cfg文件 复制zookeeper的conf目录下的zoo_simple.cfg文件&#xff0c;并重命名为zoo.cfg 修改zoo.cfg文件…

Fortinet FortiOS 7.4.0 (FortiGate VM deployment Images) - 混合架构防火墙

Fortinet FortiOS 7.4.0 (FortiGate VM deployment Images) - 混合架构防火墙 下一代防火墙 (NGFW)、虚拟化 NGFW 和云原生防火墙 请访问原文链接&#xff1a;https://sysin.org/blog/fortios-7/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【K8S系列】深入解析K8S存储

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 Kubernetes (k8s) 是一…

Debian 12 静态IP / 固定IP的设置

环境&#xff1a;Debian 12 amd64-lxde 局域网&#xff1a;PT925E电信光猫 手机APP 网络管家 一般用动态IP就可以了&#xff0c;但如果软件环境比较小众&#xff0c;问题就随之而来。起始问题&#xff1a;路由器无法解析设备名和IP&#xff0c;网络管家也不让设置固定IP&…

REDIS缓存穿透 击穿 雪崩

一、前言 在我们日常的开发中&#xff0c;无不都是使用数据库来进行数据的存储&#xff0c;由于一般的系统任务中通常不会存在高并发的情况&#xff0c;所以这样看起来并没有什么问题&#xff0c;可是一旦涉及大数据量的需求&#xff0c;比如一些商品抢购的情景&#xff0c;或者…