【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 @ 2025-01-16 13:41  陆陆无为而治者  阅读(719)  评论(0)    收藏  举报