一、背景
什么是降级呢?
顾名思义,系统出现故障的时候,能够采取某种策略,来勉强维持系统的正常运行。
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
閱讀更多 極客慧 的文章