首页 > 其他分享 >【SpringCloud】4.Resilience 4J——服务熔断/服务降级、隔离、限流

【SpringCloud】4.Resilience 4J——服务熔断/服务降级、隔离、限流

时间:2024-12-20 15:24:41浏览次数:3  
标签:调用 服务 SpringCloud 限流 4J resilience4j return id cloud

CircuitBreaker 断路器
Resilience4j :实现CircuitBreaker规范

熔断(CricutBreaker,服务熔断+ 服务降级):
隔离(BulkHead):
限流(RateLimiter):

CircutBreaker断路器

概述

官网地址:https://spring.io/projects/spring-cloud-circuitbreaker

历史

Hystrix (豪猪哥)目前也进入维护模式。Hystrix是一个用于处理分布式系统的延迟和容错的开源库。Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

Hystrix官网也建议送Resilience4j替换
image

分布式系统面临问题——雪崩

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出” 。。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.

对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。

所以,通常当你发现一个模块下的某个实例失败后,这时候这个模块依然还会接收流量,然后这个有问题的模块还调用了其他的模块,这样就会发生级联故障,或者叫雪崩

禁止雪崩的解决方案

这么要禁止雪崩,有问题的节点快速熔断。至少有问题的服务出了故障以后,向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

一句话,出故障了“保险丝”跳闸,别把整个家给烧了,

标签:调用,服务,SpringCloud,限流,4J,resilience4j,return,id,cloud
From: https://www.cnblogs.com/luyj00436/p/18617564

相关文章

  • SpringCloud03-SpringCloud起步-搭建父工程
    SpringCloud起步搭建父工程1、总体介绍我们会使用一个Dept部门模块做一个微服务通用案例Consurmer消费者(Client)通过REST调用Provider提供者(Server)提供的服务回忆Spring、SpringMVC、Mybatis等以往学习的知识Maven的分包模块架构复习一个简单的Maven模块结构是这样......
  • SpringCloud04-Eureka服务注册与发现
    Eureka服务注册与发现1、什么是EurekaNetflix在设计Eureka时,遵循的就是AP原则Eureka是Netflix的一个子模块,也是核心模块之-。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务发现与注册,只......
  • SpringCloud纲要
    介绍篇由于SpringCloud微服务内容纷繁。本篇主要作为一个简要的介绍,包含组件的种类,作用以及对应的博文链接。当前时间为2024年12月18日。写作时本人已有多年未涉足分布式SpringCloud服务,上次使用它实在17~18年,再回首进入官网时,许多组件发生了变迁,也增加了很多比较强悍的组件。我......
  • 对于使用exe4j打包,出现“NoClassDefFoundError: BOOT-INF/classes”的解决方案
    jar使用exe4j打包exe,出现NoClassDefFoundError:BOOT-INF/classes注意选取的jar包是使用build,而不是maven中的install本文介绍解决这个方法的方案点击ProjectStructure按照如图所示选择选择mainclass,选择你要打的main如果遇到/META-INF/MANIFEST.MF’alreadyexist......
  • SPRINGCLOUD实现大文件上传
    技术:分片,分块,分割,支持第三方软件集成,要求:免费,开源,技术支持前端:vue2,vue3,vue-cli,webuploader,html5后端:java,SpringBoot协议:HTTPWebServer:Tomcat,Resin数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产化数据库平台:Windows,macOS,Linux,Ubuntu,RedHat,中标麒麟......
  • SpringCloud 使用 OpenFeign
    一、为什么使用OpenFeign在SpringCloud中,使用OpenFeign主要是为了简化微服务之间的通信,特别是在服务调用的过程中。OpenFeign是一个声明式的Web服务客户端,它能够通过简单的注解方式,快速构建RESTful风格的HTTP请求。具体来说,使用OpenFeign的原因包括以下几个方面:......
  • SpringCloud微服务实战系列:05远程调用组件Feign的核心原理
    目录代码解释:Feign对象创建核心原理:总结:演示完整代码:写过springcloud微服务的都知道feign远程调用,为了方便演示,我们换一种写法,直接在main方法中运行:代码解释:1.定义请求拦截器:requestTemplate.header("authorization","Bearer69a5d08839dc4cfcab3daf20635acbe6");......
  • 无限流量卡与无线网络跑pcdn
    对于无限流量卡和无线网络是否可以用于PCDN(PeerContentDeliveryNetwork,即点对点内容分发网络)的问题,以下是对两者的详细分析:无限流量卡理论可行性:无限流量卡提供了理论上不受限制的数据使用量,这看似满足了PCDN需要大量数据传输的需求。然而,需要注意的是,尽管流量是无限的,......
  • Neo4j - Run a docker container
     zzh@ZZHPC:~$dockerpullneo4j:latest zzh@ZZHPC:~$dockerrun\--publish=7474:7474--publish=7687:7687\--volume=$HOME/neo4j/data:/data\-dneo4j HowtousethisimageYoucanstartaNeo4jcontainerlikethis:dockerrun\......
  • springboot/springcloud通过feign调用时请求头加header参数
    在使用springcloud时需要跟踪同一请求的路径,所以需要把请求头沿着请求传递下去,由于使用的时feign,在此记录下找到的两个方法。方法1、直接加RequestHeader下面加粗部分,请求时设置@FeignClient(value="org-service")publicinterfaceOrgFeign{@RequestMapping(method=......