大家好,又见面了,我是你们的朋友全栈君。
什么是服务降级
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。
在官方给定的示例代码中,是这样的,通过在@HystrixCommand下面声明回退方法的名称可以实现优雅降级。也就是说当该请求发生异常时,会调用该回退方法进行返回处理。
重要的是要记住,Hystrix命令和回退应该放在同一个类中,并且具有相同的方法签名(失败的执行异常的可选参数)。
Fallback方法可以有任何访问修饰符。defaultUser在任何错误的情况下,方法将用于处理回退逻辑。如果您需要将回退方法defaultUser作为单独的Hystrix命令运行,则需要使用注释对其进行HystrixCommand注释,如下所示:
服务降级Demo
创建 Maven 项目
1、修改pom.xml文件,添加 hystrix 依赖
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
com.sxt
springcloud-eureka-consumer-ribbon-hystrix
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
1.5.13.RELEASE
UTF-8
UTF-8
1.8
org.springframework.cloud
spring-cloud-dependencies
Dalston.SR5
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-eureka-server
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.boot
spring-boot-maven-plugin
2、修改Consumer的业务方法,使用 @HystrixCommand 注解完成优雅降级
以下四种情况将触发 getFallback 调用
(1) 方法抛出非 HystrixBadRequestException 异常。
(2) 方法调用超时
(3) 熔断器开启拦截调用
(4) 线程池/队列/信号量是否跑满
3、修改启动类,在启动类中开启熔断。
4、全局配置文件
spring.application.name=eureka-consumer-ribbon-hystrix
server.port=9010
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/
API 和 product参考之前女巫在说谎:Feign
正常访问测试
异常访问测试
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130600.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...