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

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

知识前提:

若依微服务版(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: true
transport:
# 控制台地址
dashboard: 127.0.0.1:8718
# nacos配置持久化
datasource:
ds1:
nacos:
server-addr: 127.0.0.1:8848
dataId: sentinel-ruoyi-gateway
groupId: DEFAULT_GROUP
data-type: json
rule-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: true
transport:
# 控制台地址
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#基本介绍

posted @   陆陆无为而治者  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示