Hystrix FallBack糟糕的做法

时间:2017-07-21 06:04:02

标签: java spring hystrix

为什么在使用hystrix库时在fallback方法中调用数据库是不好的做法?

@HystrixCommand(fallbackMethod ="fallBackMethod")
public Double getRating(){
 //Some Code Here
}
public Double fallBackMethod(){
//Any call to data base
}

2 个答案:

答案 0 :(得分:0)

如果您的数据库已关闭或缓慢,那么您在回退中的调用将减慢或阻止或抛出异常。在某些更糟糕的情况下,许多线程将在后备中阻塞,因此您的服务可能不可用。

后备是保护您的服务。当出现问题时,通过调用回退,呼叫将快速或无声地失败,因此线程不会被阻止,服务仍然可以服务。因此,不建议在回退中做大量或不稳定的事情,例如,调用数据库。

如果必须这样做,您可以在后备中使用HystrixCommand,如下所示:https://github.com/Netflix/Hystrix/wiki/How-To-Use#Common-Patterns-FallbackCacheViaNetwork

答案 1 :(得分:0)

如果您的业务逻辑要求这样做,则在回退中进行db调用并不是一个坏习惯。只需确保此后备方法也被@HystrixCommand包装,因为它可能会由于数据库问题而超时。