为什么在使用 hystrix 库时在后备方法中进行数据库调用是一种不好的做法?
@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