当前位置: 首页 > news >正文

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析

文章目录

  • 10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析
  • 1. 规则持久化
    • 1.1 Nacos Server 配置中心-规则持久化实例
  • 2. 最后:

1. 规则持久化

规则没有持久化的问题

如果 sentinel 流控规则没有持久化,当重启调用 API/接口 所在微服务后,规则就会丢失,需要 重新加入。

解决方案:通过 Nacos 进行持久化

规则持久化方案:

  • 阿里云 Ahas[最方便/付费]:https://help.aliyun.com/zh/ahas/

在这里插入图片描述

  • 在 Nacos Server 配置规则, 完成持久化 -官方推荐:将规则持久化到本地文件, 定时同步

1.1 Nacos Server 配置中心-规则持久化实例

在这里插入图片描述

在这里插入图片描述

需求:

  1. member-service-nacos-consumer-80 微 服务的 /member/openfeign/consumer/get/1 API 接口添加流控规则 QPS=1/快速失败 .

  2. 要求将该流控规则加入到 nacos server 配置中心,实现持久化

代码+配置实现步骤:

  1. 在 Nacos Server 配置中心增加 Sentinel 客户端/微服务模块的流控规则。

在这里插入图片描述


[{"resource": "/member/openfeign/consumer/get/1","limitApp": "default","grade": 1,"count": 1,"strategy": 0,"controlBehavior": 0,"clusterMode": false}
]
在 Nacos Server  配置中心增加 Sentinel 客户端/微服务模块  的流控规则参数说明resource∶资源名称;limlitApp∶  来源应用;grade∶阈值类型,0表示线程数,1表示QPS;count∶单机阈值;strategy∶流控模式,0表示直接,1表示关联,2表示链路;controlBehavior∶流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;clusterMode∶是否集群

在这里插入图片描述

修改 member-service-nacos-consumer-80 的 pom.xml, 加入 sentinel 和 nacos 持久化整合依赖

在这里插入图片描述


<!--        引入 sentinel 和 nacos 持久化整合依赖,使用版本仲裁--><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>

修改 member-service-nacos-consumer-80 的 application.yml , 配置该微服务从 Nacos Server 获取流控规则

在这里插入图片描述

在application.yaml 当中配置 rule-typle 规则:

      datasource:ds1:# 流控规则配置是从 nacos server 配置中心获取nacos:server-addr: localhost:8848 # 指定 nacos server 配置中心地址dataId: member-service-nacos-consumer # nacos server 配置中心当中对应的ID保持一致,一定要保持一致才行groupId: DEFAULT_GROUP # 指定组[nacos server配置中心]data-type: json # 指定配置流控规则的数据类型rule-type: flow # 规则类型:流控规则 表示可以看文档rule-type: flow # 规则类型:流控规则 表示可以看文档 有:flow流量控制,degrade熔断降级规则,system系统保护规则,authority 访问控制规则
spring:application:name: member-service-nacos-consumer-80#配置 nacos 注册中心cloud:nacos:discovery:server-addr: localhost:8848 # 配置 nacos server的地址sentinel:transport:dashboard: localhost:9090 # 指定 sentinel 控制台地址(dash board)port: 8719 # 设置端口默认是 8719 如果该端口被占用,就自动从8791+1进行扫描,直到找到一个没有占用的端口.datasource:ds1:# 流控规则配置是从 nacos server 配置中心获取nacos:server-addr: localhost:8848 # 指定 nacos server 配置中心地址dataId: member-service-nacos-consumer # nacos server 配置中心当中对应的ID保持一致,一定要保持一致才行groupId: DEFAULT_GROUP # 指定组[nacos server配置中心]data-type: json # 指定配置流控规则的数据类型rule-type: flow # 规则类型:流控规则 表示可以看文档

在这里插入图片描述

测试

浏览器: ht启动 Nacos Server 8848
启动 Sentinel8080 控制台/Sentinel dashboard
启动 member-service-nacos-provider-10004/10006

启动 member-service-nacos-consumer-80tp://localhost/member/openfeign/consumer/get/1

  1. 浏览器输入: http://localhost/member/openfeign/consumer/get/1 , 目前是 Openfeign 调用(负载均衡), 而且流控规则已经生效了.

在这里插入图片描述

  1. 注意看 sentinel, 这个流控规则已经生成了

在这里插入图片描述

在这里插入图片描述

  1. 查看 Sentinel 控制台 发现已经同步了流控规则

在这里插入图片描述

注意事项和细节:

  1. 在 nacos server 配置 sentinel 流控规则的 Data ID 也可以自己指定,比如写成 hsp-id, 只要在 sentinel client/微服务 的 applicaion.yml 的 datasource.ds1.nacos.dataId 的值保持一致即可。

在这里插入图片描述

2. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

http://www.lryc.cn/news/525506.html

相关文章:

  • STM32更新程序OTA
  • MarsCode青训营打卡Day10(2025年1月23日)|稀土掘金-147.寻找独一无二的糖葫芦串、119.游戏队友搜索
  • vue(33) : 安装组件出错解决
  • ChatGPT结合Excel辅助学术数据分析详细步骤分享!
  • stm32f103 单片机(一)第一个工程
  • 云计算和服务器
  • Spring 框架:配置缓存管理器、注解参数与过期时间
  • Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
  • 并发编程 - 线程同步(一)
  • PyTorch入门 - 为什么选择PyTorch?
  • leetcode刷题记录(八十六)——84. 柱状图中最大的矩形
  • Android GLSurfaceView 覆盖其它控件问题 (RK平台)
  • 开源鸿蒙开发者社区记录
  • 【Linux网络编程】传输层协议
  • 10个非常基础的 Javascript 问题
  • Mysql索引(学习自用)
  • eniops库中reduce函数使用方法
  • 阴沟翻船题——Longest Substring Without Repeating Characters
  • Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系
  • 微信小程序中实现背景图片完全覆盖显示,可以通过设置CSS样式来实现
  • 【0x0012】HCI_Delete_Stored_Link_Key命令详解
  • console的各种方法
  • spring boot关于系统首页自动跳转拼接到index
  • 指针生成网络(PGN)详细指南(引入)
  • 案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设
  • k8s 蓝绿发布、滚动发布、灰度发布
  • UWB原理:AOA测角原理Angel of Arrival
  • plus.runtime.install在android10无效
  • 7.C++中的函数
  • 上位机知识篇---Python数据图表可视化