Hystrix降级和熔断可以是不同的方法吗?

有一个外部服务调用,正常情况返回A, 偶尔超时的时候返回降级结果B,大量超时时返回熔断结果C,问题是B和C可以不一样吗?我看hystrix的教程,降级和熔断返回的都是fallback方法的结果,有没有大佬知道如何实现B和C不同,感谢大佬指点


回答:

熔断和降级是两个不太相关的概念,我理解你如果这个需求属于客户端的基于超时次数进行多次降级,还不涉及到熔断的话。
一种比较简单的方式是可以通过异常来实现,自定义一个偶尔超时的异常和大量超时的异常,然后在fallback降级方法中,获得这个异常,然后返回不同的方式。

@HystrixCommand(fallbackMethod = "fallback")

String something(String params) {

if("偶尔超时") throw new RuntimeException("偶尔超时");

if("大量超时") throw new RuntimeException("大量超时");

// logic

}

String fallback(String params, Throwable throwable) {

if(throwable = "偶尔超时") do B;

if(throwable = "大量超时") do C;

}

如果是需要混和降级和熔断的,即一定程度时候降级(返回某个值,可快速恢复),严重的时候熔断(返回某个值,某个时间段内不再调用),那可能需要把降级和熔断定义在不同的主体上来实现,例如服务端熔断+客户端降级,方法降级+全局熔断。
另一个点是,关于偶尔超时和大量超时,这个判断,稍微有点模糊,如果是超时计数的话,那可能还有挺多要考虑的

以上是 Hystrix降级和熔断可以是不同的方法吗? 的全部内容, 来源链接: utcz.com/p/945205.html

回到顶部