我正在开发带有弹簧引导和弹簧云的微服务。我了解了超高压和断路器的模式。我知道断路器是用来在我所依赖的下游微服务出现错误时用备用响应来响应的。我的问题是,如果我没有任何有意义的替代反应,为什么我需要一个断路器呢?
发布于 2016-11-18 05:29:34
简短的回答:主要是在一个复杂的分布式系统中停止级联故障。
我没有任何有意义的替代反应,为什么我需要一个断路器呢?
只有当服务器只提供一个REST端点(和一个HTTP谓词)时,这个问题才是相关的。但几乎总是如此,情况并非如此。即使是“微”服务也会有多个端点+多个http谓词的组合。您不希望一个端点挂在一个缓慢的上游服务上,并且在线程不断等待并最终删除整个应用程序之后,将线程堆起来。
看看官方的文档
Hystrix是用来做什么的?-- Hystrix是设计用来做以下工作的:
“后退并在可能的情况下优雅地降级”只是hystrix提供的功能之一。
发布于 2018-05-27 16:35:24
如果您重构您的单核应用程序以将其分解为多个微服务,Hystrix也可能是有用的。当将其投入生产时,您可能希望将旧的monolith代码保留一段时间作为备用响应。因此,如果微服务不可用,只会执行旧代码,因此基本上可以降低风险。如果一切正常,您可以从monolith中删除旧代码,并继续使用microservices。
通过扩展HystrixCommand类,可以很容易地做到这一点。
public class MicroserviceCommand extends HystrixCommand<String>
{
@Override
protected String run()
{
//return response from your new microservice
}
@Override
protected String getFallback()
{
//microservice is not available,
//so execute old code which was not removed from application yet
}
}https://stackoverflow.com/questions/40669943
复制相似问题