Hystrix FallBack坏习惯

问题描述 投票:1回答:2

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

@HystrixCommand(fallbackMethod ="fallBackMethod")
public Double getRating(){
 //Some Code Here
}
public Double fallBackMethod(){
//Any call to data base
}
java spring hystrix
2个回答
0
投票

如果你的数据库宕机或速度慢,那么你在回调中的调用就会变慢或阻塞或抛出异常。在一些更糟糕的情况下,许多线程会在回退中阻塞,所以你的服务可能无法使用。

回调是为了保护你的服务。当出现问题时,调用回调会快速或无声地失败,这样线程就不会被阻塞,服务仍然能够服务。所以不建议在回调中做一些重度或不稳定的事情,比如调用数据库。

如果非要这样做,可以在回退中使用HystrixCommand,就像这样。https:/github.comNetflixHystrixwikiHow-To-Use#Common-Patterns-FallbackCacheViaNetwork。


0
投票

如果你的业务逻辑需要,让db调用一个后备方法是一个不错的做法。只要确保这个回调方法也是用@HystrixCommand包装的,因为它可能会因为db的问题而超时。

© www.soinside.com 2019 - 2024. All rights reserved.