个性化阅读
专注于IT技术分析

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
@EnableHystrix
public 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 method
public LimitConfiguration fallbackRetrieveConfigurations()
{
//returning the default configuration	
return new LimitConfiguration(999, 9); 
}

让我们了解上述方法中发生了什么。

在上述方法中, 我们创建了Get映射以实现容错功能。在下一行中, 我们使用了注释@HystrixCommand来配置fallback方法。我们定义了一个名为fallbackRetrieveConfigurations()的方法, 如果发生任何故障, 该方法将返回默认值。

后备方法

fallback方法是在发生故障时调用的方法。 Hystrix允许我们为每种服务方法定义一个备用方法。这里出现一个问题, 如果该方法引发异常, 应该返回给使用者什么?

因此答案是, 如果retrieveConfiguraions()失败, 则将调用fallbackRetrieveConfigurations()方法。 fallback方法返回硬编码的LimitConfiguration实例。

步骤4:打开浏览器并调用URL http:// localhost:8080 / fault-tolerance-example。它返回我们在fallbackRetrieveConfigurations()方法中返回的值。

Hystrix的容错能力

赞(0)
未经允许不得转载:srcmini » Hystrix的容错能力示例分析

评论 抢沙发

评论前必须登录!