源码地址:https://pan.baidu.com/s/1Hmvh1Bbss_Z1w1I7I1mwDw 提取码:e41h
在进行服务调用的时候,可能由于各种原因,服务器挂掉或是网络不稳定超时等,使得响应迟迟不能返回给客户端,而后面的请求又在不断请求这个服务,这样则很可能导致服务瘫痪。Hystrix 熔断器机制就是来处理这种情况的,服务开启熔断器时,若在规定时间内没有返回响应,则认为服务出错了,断开服务,让后面的请求直接返回。让请求直接调用本地的缓存或是本地的其他方法,这就是所谓的 服务降级。
服务降级让请求调用本地的方法,去缓存查找数据,或者返回错误处理等响应信息。(如果客户发送了一个请求,却迟迟得不到回应,可能会一直发送请求,增加服务器的负担,及时返回响应的话,即使不是客户想要的结果,也可以缓解其情绪,减缓其操作)
可以说服务降级通常是熔断机制启动后的处理方法
下面在 service-rest 服务和 service-feign 服务加一些东西就可以实现熔断与服务降级了
为了更好地看效果,稍微改造一下 serviceA1 服务中 controller 类的 getList() 方法
@RequestMapping("/getList")
public List<String> getList() {
long start = System.currentTimeMillis();
try {// 降级测试
long sleeptime = (long) (Math.random() * 3000);
Thread.sleep(sleeptime);
} catch (InterruptedException e) {