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

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

最佳答案

如果您的数据库关闭或运行缓慢,则回退中的调用将运行缓慢或阻塞或引发异常。在更糟的情况下,许多线程将在回退中阻塞,因此您的服务可能无法使用。

回退是为了保护您的服务。当出现问题时,该调用将通过调用回退而快速或无提示地失败,因此该线程将不会被阻塞,并且该服务仍然可以提供服务。因此,不建议在回退中执行大量或不稳定的操作,例如,调用数据库。

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

07-26 08:50