春季云Netflix:Hystrix

什么是Hystrix:

Hystrix是由Netflix开发的断路器库。 Hystrix具有容错机制,因此可用于分布式系统中以实现弹性。

为什么我们要使用hystrix?

在像微服务架构这样的分布式系统中,我们将有多个服务相互交互以实现某些业务目标。 在这种类型的体系结构中,很容易做到,如果单个服务失败,则依赖该服务或从该服务获取数据的所有后续服务都将失败。 最终,错误将传播到客户,这将导致不良的客户体验。 因此,最好有一个回退机制,以便每当某些基础应用程序无法按预期运行时,我们将停止对该服务的调用并调用fallback方法。 这还会给运行状况不佳的系统留出一些时间,以使其恢复,如果运行状况不佳的服务不断收到请求,则无法恢复。

Hystrix是断路器库,这意味着在从不健康的微服务中失败几次后,断路器将跳闸。

电路跳闸后,服务将依靠后备方法来获得响应。 这将防止错误层叠到所有相关服务。

例如,让我们考虑下图,该图具有取决于微服务促销的关键服务付款,并且由于某种原因,促销微服务失败。 促销不是非常关键的微服务,因为即使客户不能为购买应用促销代码,也应该允许他付款和购买产品。 由于促销失败,付款应不会失败,客户应该能够购买产品。 因此,当促销引发错误时,我们可以回退到回退方法上,以显示一条错误消息,指出不能应用促销代码。 并且在看到消息后,如果客户希望他可以在不应用促销代码的情况下购买产品。

因此,hystrix有助于错误的适度降级,因为它通过后备机制系统阻止了错误的传播。


如何在您的项目中添加hystrix?

现在我们已经了解了Hystrix,让我们将其实现到我们的任何项目中。

将Spring Cloud Netflix提供的以下hystrix依赖项添加到pom.xml文件中

然后将注释@EnableCircuitBreaker或@EnableHystrix(此注释专门用于仅启用hystrix)添加到配置文件。

将@HystrixCommand批注添加到在发生错误的情况下可能导致系统失败的方法,并在失败的情况下添加应回退到的方法的名称。 在我们的例子中,validatePromotionCouponFallbackMethod将是后备方法。

然后编写方法validatePromotionCouponFallbackMethod(),它将处理错误的正常降级。

因此,只要促销微服务未响应后备方法,都会调用validatePromotionCouponFallbackMethod(),该方法将为客户返回自定义消息。

这样,hystrix将被添加到您的项目中,只需几个简单的步骤即可实现弹性。

Hystrix的配置:

hystrix提供了多个属性,我们可以根据自己的意愿进行配置。 可以在配置文件或属性文件中指定此属性。 如果未配置它们,则hystrix将采用默认属性。 可以配置hystrix的阈值,后备属性,命令属性,线程池属性。 如果您配置了多个hystrix,则可以为每个hystrix具有动态实例特定的属性。 所有的netflix库都使用Archaius来实现默认属性。

结论:

Hystrix添加了回退到某些方法的功能,并在出现错误时跳过预期的调用。 它提供断路器,该断路器将在阈值后跳闸。 因此,它可以为开发人员提前为失败做好准备,而不必考虑失败已经发生之后的处理方法。

参考资料:

春季云Netflix指南– Hystrix | Baeldung

在本教程中,我们将介绍Spring Cloud Netflix Hystrix –容错库。 我们将使用该库并…

www.baeldung.com

3.断路器:Hystrix客户

Netflix创建了一个名为Hystrix的库,该库实现了断路器模式。 在微服务中……

cloud.spring.io

Netflix / Hystrix

Hystrix是一个延迟和容错库,旨在隔离对远程系统,服务和…的访问点。

github.com