Hystrix 资料简单梳理
状态
Hystrix不再处于活动开发阶段,目前处于维护模式。
Hystrix(版本1.5.18)足够稳定,可以满足Netflix对现有应用程序的需求。与此同时,我们的重点已转向更具适应性的实现,这些实现对应用程序的实时性能做出反应,而不是预先配置的设置(例如,通过自适应并发限制)。对于像Hystrix这样的事情有意义的情况,我们打算继续将Hystrix用于现有应用程序,并将弹性和活动项目(如resilience4j)用于新的内部项目。我们开始建议其他人也这样做。
Netflix Hystrix现在正式处于维护模式,对更大的社区有以下期望: Netflix将不再主动审查问题,合并拉取请求,并发布新版本的Hystrix。我们已经为issue 1891
发行了Hystrix(1.5.18)的最终版本。
多年来,Hystrix一直为Netflix和社区服务,而向维护模式的过渡并不表示Hystrix的概念和想法不再具有价值。相反,Hystrix激发了许多伟大的想法和项目。我们感谢Netflix的所有人,以及更广泛的社区,感谢Hystrix多年来所做的所有贡献。
介绍
分布式系统的延迟和容错
Hystrix是一个延迟和容错库,旨在隔离对远程系统,服务和第三方库的访问点,停止级联故障,并在复杂的分布式系统中实现弹性,在这些系统中,故障是不可避免的。
完整文档
有关完整文档,示例,操作详细信息和其他信息,请参阅Wiki。
有关API,请参阅Javadoc。
它有什么作用?
1)延迟和容错停止级联故障。后退和优雅的退化。快速恢复失败。螺纹和信号量隔离与断路器。
2)实时操作实时监控和配置更改。观察服务和财产变更会立即生效,因为它们分散在船队中。在几秒钟内收到警报,做出决定,影响变化并查看结果。
3)并发并行执行。并发感知请求缓存。通过请求折叠自动批处理。
Hello World
要隔离的代码包含在HystrixCommand的run()方法中,类似于以下内容:
public class CommandHelloWorld extends HystrixCommand<String> {
private final String name;
public CommandHelloWorld(String name) {
super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
this.name = name;
}
@Override
protected String run() {
return "Hello " + name + "!";
}
}
这个Command可以像这样使用:
String s = new CommandHelloWorld("Bob").execute();
Future<String> s = new CommandHelloWorld("Bob").queue();
Observable<String> s = new CommandHelloWorld("Bob").observe();