Hystrix的容错能力示例分析

本文概述

  • 容错能力
  • Hystrix
微服务必须非常可靠, 因为它们彼此依赖。微服务架构包含大量的小型微服务。这些微服务相互通信以便满足其需求。
微服务的实例可能会频繁地上下波动。随着微服务之间交互次数的增加, 系统中微服务失败的机会也随之增加。
容错能力 考虑一个场景, 其中六个微服务相互通信。微服务5有时会关闭, 而其他所有微服务都直接或间接依赖于它, 因此所有其他服务也会关闭。
解决此问题的方法是在微服务失败的情况下使用回退。微服务的这一方面称为容错。
Hystrix的容错能力示例分析

文章图片
容错可以借助断路器来实现。这是一种将请求包装到外部服务并检测它们何时失败的模式。如果检测到故障, 则断路器断开。所有后续请求均立即返回错误, 而不是向运行状况不佳的服务发出请求。它监视并检测已关闭的服务以及与其他服务不当的服务。它拒绝呼叫, 直到再次恢复正常。
Hystrix Hystrix是一个库, 用于控制微服务之间的交互以提供延迟和容错能力。此外, 有意义的是修改UI以使用户知道某些内容可能未按预期工作或将花费更多时间。
使用Hystrix实现容错
步骤1:打开limits-service的pom.xml文件并添加Hystrix依赖项
< dependency> < groupId> org.springframework.cloud< /groupId> < artifactId> spring-cloud-starter-netflix-hystrix< /artifactId> < /dependency>

步骤2:打开LimitsServicesApplication.java文件, 并使用注释@EnableHystrix启用Hystrix。
LimitsServicesApplication.java
package com.srcmini.microservices.limitsservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.EnableHystrix; @SpringBootApplication@EnableHystrixpublic class LimitsServiceApplication {public static void main(String[] args) {SpringApplication.run(LimitsServiceApplication.class, args); }}

步骤3:打开LimitsConfigurationController.java文件并创建Get方法。
@GetMapping("/fault-tolerance-example")//configuring a fallback method@HystrixCommand(fallbackMethod="fallbackRetrieveConfigurations")public LimitConfiguration retrieveConfigurations(){throw new RuntimeException("Not Available"); }//defining the fallback methodpublic LimitConfiguration fallbackRetrieveConfigurations(){//returning the default configuration return new LimitConfiguration(999, 9); }

让我们了解上述方法中发生了什么。
在上述方法中, 我们创建了Get映射以实现容错功能。在下一行中, 我们使用了注释@HystrixCommand来配置fallback方法。我们定义了一个名为fallbackRetrieveConfigurations()的方法, 如果发生任何故障, 该方法将返回默认值。
后备方法
fallback方法是在发生故障时调用的方法。 Hystrix允许我们为每种服务方法定义一个备用方法。这里出现一个问题, 如果该方法引发异常, 应该返回给使用者什么?
因此答案是, 如果retrieveConfiguraions()失败, 则将调用fallbackRetrieveConfigurations()方法。 fallback方法返回硬编码的LimitConfiguration实例。
【Hystrix的容错能力示例分析】步骤4:打开浏览器并调用URL http:// localhost:8080 / fault-tolerance-example。它返回我们在fallbackRetrieveConfigurations()方法中返回的值。
Hystrix的容错能力示例分析

文章图片

    推荐阅读