Hystrix进阶攻略之降级策略

一、背景

什么是降级呢?

顾名思义,系统出现故障的时候,能够采取某种策略,来勉强维持系统的正常运行。

hystrix调用各种接口,或者访问外部依赖,mysql,redis,zookeeper,kafka,等等,如果出现了任何异常的情况

比如说报错了,访问mysql报错,redis报错,zookeeper报错,kafka报错,error

对每个外部依赖,无论是服务接口,中间件,资源隔离,对外部依赖只能用一定量的资源去访问,线程池/信号量,如果资源池已满,reject

访问外部依赖的时候,访问时间过长,可能就会导致超时,报一个TimeoutException异常,timeout

二、核心代码

重写fallback降级逻辑:读取本地缓存

@Override
protected AdInfo getFallback() {
System.out.println("从本地缓存获取过期的广告数据,adId=" + adId);
return JSONObject.parseObject(AdCache.getAdInfo(adId), AdInfo.class);
}

三、实战演练

代码下载地址:https://gitee.com/jikeh/JiKeHCN-RELEASE.git

项目名:spring-boot-hystrix-fallback

依赖系统:spring-boot-hystrix-ad

本次系统:spring-boot-hystrix-fallback

1、手动模拟请求错误

@Override
protected AdInfo run() throws Exception {
// 如果调用失败了,报错了,那么就会去调用fallback降级机制
throw new Exception();

}

2、系统启动

  • 启动spring-boot-hystrix-ad
  • 启动spring-boot-hystrix-fallback

3、请求测试

http://localhost:8022/get/ad?adId=1

Hystrix进阶攻略之降级策略


分享到:


相關文章: