Hystrix 是 Netflix 开源的一个延迟和容错库,旨在通过添加延迟容忍和容错逻辑来隔离远程系统、服务和第三方库的访问点,防止级联故障,从而提高系统的弹性和可用性。Hystrix 主要用于微服务架构中,以确保单个服务的失败不会导致整个系统崩溃。
Hystrix 的核心概念
- Command:所有的操作都封装在 Command 中。每个 Command 可以执行同步或异步操作。
- Fallback:当请求失败时,可以提供一个备用处理逻辑。
- Circuit Breaker(断路器):监控命令的健康状况,并在必要时打开断路以阻止请求,直到恢复为止。
- Bulkhead Isolation(舱壁隔离):使用线程池或者信号量限制对依赖项的并发调用数。
- Metrics(度量):收集关于命令执行的信息,如成功、失败、超时等。
- Hystric Dashboard:用于监控多个 Hystrix 命令的实时状态信息。
思维导图结构
Hystrix
├── 核心概念
│ ├── Command
│ ├── Fallback
│ ├── Circuit Breaker
│ ├── Bulkhead Isolation
│ └── Metrics
├── 配置
│ ├── 超时时间
│ ├── 熔断策略
│ ├── 监控配置
│ └── 日志级别
└── 工具
├── Hystric Dashboard
└── Turbine (用于聚合多个服务的监控数据)
代码示例(Java 架构)
下面是一个简单的 HystrixCommand 示例:
import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
public class HelloWorldCommand extends HystrixCommand<String> {
private final String name;
public HelloWorldCommand(String name) {
// 定义这个命令属于哪个组
super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
this.name = name;
}
@Override
protected String run() throws Exception {
// 实际业务逻辑,这里只是一个简单的返回字符串
return "Hello " + name + " thread: " + Thread.currentThread().getName();
}
@Override
protected String getFallback() {
// 当run方法抛出异常时会调用此方法,提供备用逻辑
return "fallback " + name;
}
}
// 使用 HystrixCommand
public class HelloWorldExample {
public static void main(String[] args) {
// 创建并执行 HystrixCommand
String result = new HelloWorldCommand("world").execute();
System.out.println(result);
}
}
请注意,Netflix 在2021年宣布不再对 Hystrix 进行主要的功能更新,因此对于新项目来说,您可能需要考虑其他的替代方案,比如 Resilience4j 或者 Spring Cloud Circuit Breaker,它们提供了相似的功能并且是活跃维护的。
标签:java,String,Hystrix,示例,Command,public,HystrixCommand,name From: https://blog.csdn.net/qq_33240556/article/details/144349648