为什么在使用hystrix库时,在回退方法中调用数据库是一种不好的做法?
@HystrixCommand(fallbackMethod ="fallBackMethod")
public Double getRating(){
//Some Code Here
}
public Double fallBackMethod(){
//Any call to data base
}发布于 2017-08-04 10:59:00
如果您的数据库关闭或缓慢,那么您在回退中的调用将变慢、阻塞或抛出异常。在一些更糟糕的情况下,许多线程将在回退中阻塞,因此您的服务可能不可用。
后备方案是为了保护您的服务。当出现问题时,调用回退会快速或静默地失败,这样线程就不会被阻塞,服务仍然能够服务。因此,不建议在回退中做一些繁重或不稳定的事情,例如,调用数据库。
如果必须这样做,您可以在备用中使用HystrixCommand,就像这样:https://github.com/Netflix/Hystrix/wiki/How-To-Use#Common-Patterns-FallbackCacheViaNetwork
发布于 2020-04-24 19:27:55
如果您的业务逻辑需要这样做,那么让db调用作为备用并不是一种糟糕的做法。只需确保此回退方法也包含在@HystrixCommand中,因为它可能会因数据库问题而超时。
https://stackoverflow.com/questions/45230146
复制相似问题