首页 > 编程语言 >【Java】若依(ruoyi-cloud)——14.Sentinel支持(服务熔断与降级)

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

时间:2025-01-16 13:43:27浏览次数:1  
标签:Java 14 nacos ruoyi sentinel resource gateway cloud

若依微服务版(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#基本介绍

标签:Java,14,nacos,ruoyi,sentinel,resource,gateway,cloud
From: https://www.cnblogs.com/luyj00436/p/18674824

相关文章

  • IO流(Java)
    一、IO体系的核心概念1.什么是IOJava应用程序与外部环境(如文件系统、网络等)之间的数据交换。2.流(1)什么是数据传输的抽象体现3.类型(1)字节流以字节为单位处理数据,主要处理原始二进制数据,比如说图像、声音。主要类包含InputStream和OutputStream。(2)字符流以字符......
  • 东软云医院HIS系统-药房管理系统【Swing窗口+MySQL】(Java课设)
         客官进来看一眼呗,有惊喜!【帮你解决烦恼】:Java课设和计Java毕设太难不会做怎么办?系统类型Swing窗口类型+Mysql数据库存储数据使用范围适合作为Java课设!!!部署环境jdk1.8+Mysql8.0+Idea或eclipse+jdbc运行效果本系统源码地址:东软云医院HIS系统-药房管理系统【Sw......
  • JAVA-Exploit编写(5)--http-request库使用
    目录1.http-request简介2.依赖导入3.GET请求方式3.1test.php3.2基本使用代码实现 3.2请求时请求参数URL编码实现 3.3携带多参数请求3.Post请求方式3.1基本使用3.2携带单个参数请求 3.3携带多个参数请求4.设置代理请求 4.1方式一4.2方式二1.ht......
  • [2834]基于JAVA的著作权登记智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的著作权登记智慧管理系统的设计与实现指导老师(一)选题的背景和意义随着科技的发展,数字化技术在各个领域的应用越来越广泛。特别是在知识产权领域,著作权登记、管理、保护等方面的工作也面临着数字化转型的挑战。然而......
  • [2823]基于JAVA的药店销售智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的药店销售智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当今社会,药店作为医疗保健服务的重要组成部分,其日常运营管理和药品销售管理对于保障公众健康具有重要意义。随着科技的不断发展和信息化水平的提高......
  • 【附源码】JAVA大学生竞赛管理系统源码+SpringBoot+VUE+前后端分离
    学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:大学生竞赛管理系统 。本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员!一.系统演示系统测试截图   系统视频演示 https://githubs.xyz/show/343.mp4 二.系统概述 ......
  • 【附源码】JAVA课程管理系统源码+SpringBoot+VUE+前后端分离
    学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:课程管理系统 。本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员!一.系统演示系统测试截图     系统视频演示 https://githubs.xyz/show/342.mp4 二.系统概述......
  • Java 21 (JDK 21):长期支持版本的重大飞跃
    虚拟线程(VirtualThreads):核心亮点: 虚拟线程是JDK21中最受关注的新特性之一。它是一种轻量级的并发线程,由JVM管理,而不是操作系统。优势:高并发: 可以创建大量的虚拟线程,而不会消耗大量的系统资源。易用性: 虚拟线程的创建和管理非常简单,降低了并发编程的复杂......
  • 如何在网站中安全有效地修改Java变量,确保功能正常且不影响用户体验?
    修改网站中的Java变量是确保功能正常和用户体验的重要步骤。以下是详细的指南,帮助您顺利完成这一任务:确定修改需求:明确具体的修改需求,例如更新变量值、添加新变量或删除旧变量。制定详细的修改计划,确保每个改动都有明确的目标。备份现有文件:在进行任何更改之前,请确保......
  • reduce 到底是什么?Java8 Stream 的终极聚合工具详解
    reduce()是JavaStreamAPI提供的一个终端操作方法,用于将流中的元素组合起来生成一个单一的值。这一方法非常强大,可以实现累积、聚合、拼接等功能,适用于各种数据处理场景。1.reduce()方法的作用reduce()是一个通用的归约操作,它通过一个关联函数,逐个处理流中的每个元素,将......