【Java】若依(ruoyi-cloud)——14.Sentinel支持(服务熔断与降级)

news/2025/1/16 13:45:31/文章来源:https://www.cnblogs.com/luyj00436/p/18674824

若依微服务版(ruoyi-Cloud)如何实现熔断和降级?

知识前提:

  • 对Sentinel的使用有了解
  • 若依微服务版启动
  • 对nacos服务注册和使用有了解

若依微服务版(ruoyi-cloud)中使用sentinel,进行服务熔断与降级。

环境要求和前提

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 12
nacos >= 2.0.4 (ruoyi-cloud < 3.0 需要下载nacos >= 1.4.x版本)
sentinel >= 1.6.0

已运行和启动项目。sentinel下载地址:https://github.com/alibaba/Sentinel/releases

运行命令(文件位置,文件名称后的版本,可以根据实际需要更改):

java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.api.port=8719 -jar D:\sentinel\sentinel-dashboard-1.8.0.jar

若依内sentinel有关源码

在ruoyi-cloud中,网关模块(ruoyi-gateway),有配置sentinel和sentinel持久化。

# Spring
spring: cloud:sentinel:# 取消控制台懒加载eager: truetransport:# 控制台地址dashboard: 127.0.0.1:8718# nacos配置持久化datasource:ds1:nacos:server-addr: 127.0.0.1:8848dataId: sentinel-ruoyi-gatewaygroupId: DEFAULT_GROUPdata-type: jsonrule-type: gw-flow

所以,sentinel在nacos的持久化配置文件名称为sentinel-ruoyi-gateway。限流策略如下:

[{"resource": "ruoyi-auth","count": 500,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0},{"resource": "ruoyi-system","count": 1000,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0},{"resource": "ruoyi-gen","count": 200,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0},{"resource": "ruoyi-job","count": 300,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0}
]

jsond的各个参数含义如下:

参数 说明
resource 资源名称
count 单击阈值
grade 阈值类型0表示线程数,1 表示QPS
limitApp 来源应用
strategy 流控模式,0 表示直接,1 表示关联,2表示链路
controlBehavior 流控效果,0 表示快速失败,1表示Warm up, 2 表示排队等待

所以,sentinel-ruoyi-gateway配置下,几个模块200~500阈值的、QPS模式,直接访问,快速失败。

这种情况下,在我们的测试环境中,应该看不到效果。实际可以根据需要,做合适的持久化配置。

sping.cloud.sentinel.xx.nacos.rule-type 各个配置值含义

flow 规则类型flow
degrade 流量控制规则
param-flow 参数限流规则
system 系统保护规则
authority 访问控制规则
gw-flow com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule
gw-api-group com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition

其他模块,也可以根据需要,添加sentinel依赖、配置。

<!-- springcloud alibaba sentinel -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency><!-- SpringBoot Web -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring: application:# 应用名称name: ruoyi-xxxx cloud:sentinel:# 取消控制台懒加载eager: truetransport:# 控制台地址dashboard: 127.0.0.1:8718

启动项目后,可以在Sentinel控制台查看请求。
image

定义资源``@SentinelResource 、降级规则、流量规则、RestTemplate支持、OpenFeign支持等不再重复叙述。http://doc.ruoyi.vip/ruoyi-cloud/cloud/sentinel.html#基本介绍

参考网址

http://doc.ruoyi.vip/ruoyi-cloud/cloud/sentinel.html#基本介绍

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

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

相关文章

Hutool 实现非对称加密(RSA)

目录思路生成RAS密钥消息公钥加密、私钥解密代码Demo生成 A 的密钥生成 B 的密钥A 发送消息给 BB 解密 A 消息对称加密中,我们只需要一个密钥,通信双方同时持有。而非对称加密需要4个密钥。通信双方各自准备一对公钥和私钥。其中公钥是公开的,由信息接受方提供给信息发送方。…

【Node.js渗透】提取和分析 .asar 文件

#Electron 免责声明 ⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!书接上回以及上上回,在了解了操作系统上基于 Electron 的应用程序的安装和识别过程后,我们将探讨提取…

大模型微调基本概念指北

本文主要分享一下大模型微调相关的基本概念,包括大模型(GPT)训练流程、微调(SFT)方法&分类&框架&最佳实践、强化学习(RLHF),最后则是分享了如何训练垂直领域大模型。本文是参考网上博客、文章后进行总结而成,旨在让刚接触大模型的同学阅读后能对大模型训练的各个…

看了一个关于linux platform的好视频

视频地址: 《嵌入式Linux platform总线驱动与设备匹配的三种方式》 https://www.bilibili.com/video/BV134CFYqEki?buvid=YC4D5AC32B076A51424FACFDDBD3BD15822A&from_spmid=tm.recommend.0.0&is_story_h5=false&mid=PbeiH8sfJs5bwGp1257AQw%3D%3D&plat_id=1…

学习 - 人工智能- 大模型的演变和训练

大模型的演变和训练 大模型训练整体上分为三个阶段: 预训练、 SFT(监督微调)以及RLHF(基于人类反馈的强化学习)一、预训练 预训练的过程类似从婴儿成长成中学生的阶段,在这个阶段我们会学习各种各样的知识,我们的语言习惯、知识体系等重要部分都会形成;对于大模型来讲,在这…

RFID基础——概念与分类

RFID 的全称是射频识别技术(Radio Frequency Identification)。是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目的的技术。这项技术在日常生活中应用广泛,例如我国的第二代身份证、门禁卡、图书标签。 RFID与NFC的区别 …

(未完工)「学习笔记」二维数点问题

0.0 前言 看了一个晚上,加上同桌的讲解,大致了解了二维数点问题的基本思路。 0.1 前置知识可持久化线段树树状数组1.0 概述 二维数点问题的一般形式是形如“给定平面上 \(n\) 个点,每次询问给定一个矩形,求该位于矩形内的点的个数”一类问题,模板题为 P2163 [SHOI2007] 园…

CentOS扩容boot分区并升级内核

本文作者CVE-柠檬i:https://www.cnblogs.com/CVE-Lemon 前言 由于安装k8s需要升级内核,但我自己的的boot分区只有200M大小,无法安装新内核,所以干脆把swap分区分给boot了。在此期间关于grub的操作踩了好多坑,所以特此记录一下正确操作。 使用rpm安装新内核,下载链接:htt…

陨石的秘密

题目链接: https://www.acwing.com/problem/content/319/ 题目描述提取题目大意: 构造 L1对{},L2对[],L3对() 组成的深度为D的括号序列,求方案数。 并且中括号里不能有大括号,小括号里不能有中括号和大括号。 思路:考虑“第一段”括号序列(它作为一个整体,只能是{} []…

Xorto

给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。暴力,每次找一个中点,找左右两边异或值一样的区间 #include<bits/stdc++.h> #define int long long #define TEST #define TESTS int _; cin >> _; while(_--) using…