原标题:Netflix开源的Hystrix不再开发新功能,目前处于维护模式
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。流量控制、熔断降级、系统负载保护等技术被广泛使用于微服务体系,用以提升系统的健壮性和保障业务的稳定性,避免因访问流量过大、系统负载过重导致的系统停止服务的情况出现。
日前,Netflix开源的限流组件Hystrix在其GitHub主页宣布,不再开放新功能,推荐开发者使用其他仍然活跃的开源项目。GitHub主页原文如下:
Hystrix目前的最新版本1.5.18是稳定的,足以满足Netflix对现有应用的需求。同时,我们的重点已经转向了对应用程序的实时性能作出反应的自适应的实现,而不是根据预先配置的设置(例如,通过自适应并发限制)。我们在内部对已经使用Hystrix的应用会继续使用Hystrix,而对于新的项目,我们会使用其他仍然活跃的开源项目,例如Resilience4j[1]。我们也建议其他开发者这么做。
Netflix Hystrix目前正处于维护模式,即Netflix将不再积处理issue、合并请求和发布新版本。我们发布的最后一个版本是Hystrix1.5.18(Release Note: issue 1891[2]),这个版本和Netfilx使用的内部稳定版本(1.5.11)一致。如果社区成员希望获得Hystrix的所有权,并将其移回活动模式,请联系hystrixoss@googlegroups.com。
Hystrix多年来为Netflix和社区提供了很好的支持,维护模式的转变绝不意味着Hystrix不再有价值。相反,Hystrix激发了很多伟大的想法和项目,我们感谢Netflix和广大社区的每个人多年来为Hystrix所做的贡献。
Netflix在2012年开源了熔断降级组件Hystrix。Hystrix促进了微服务“熔断降级”理念的推广,把隔离和熔断的理念传播到了广大的开发者当中。长期以来,只要一说到隔离和熔断降级,开发者都会首先想到Hystrix。到了2014年,Netflix全面进军Spring Cloud,Netflix的一系列微服务组件也随着Spring Cloud Netflix纷至沓来,进入到开发者的视野中;同时,Hystrix做了一次重大的重构,将底层的统计结构用RxJava重构,全面拥抱了RxJava。长期以来,Hystrix一直是业界熔断降级库的热门选择,但其社区活跃度一直在下降;最近,Hystrix突然来了一个急刹车,宣布停止维护。
同样作为兼容Spring Cloud生态的限流开源产品还有Resilience4j和Sentinel 。
Resilience4j,是一个受Netflix Hystrix启发的轻量级容错库,但是是为Java 8和函数式编程设计的。 轻量级,因为这个库只使用了Vavr(以前叫做 Javaslang),没有任何其他的外部库依赖。 相比之下,Netflix Hystrix对Archaius有一个编译依赖,Archaius有更多的外部库依赖,比如Guava和Apache Commons configurations。
相比Hystrix , Resilience4j的优势在于:
针对Java 8和函数式编程设计,提供函数式和响应式风格的API;
增加了Rate limiting和Automatic Retrying两个模块。其中Rate limiting引入了简单的速率控制实现,补充了流量控制这一块的功能;而Automatic Retrying则是封装了自动重试的逻辑,简化了异常恢复的流程。
Sentinel则是面向分布式服务架构的轻量级高可用流量控制组件,于今年7月正式开源。Sentinel主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户提升服务的稳定性。
相比Hystrix的关注点在于隔离和熔断, Sentinel注重流量塑形、系统保护、熔断降级等多样化的场景,对脉冲流量的秒杀、持续洪峰的零点双十一、热点商品自动探测控制、削峰填谷、针对集群分布不均匀的集群限流、冷启动、根据容量流量自适应的系统保护等专业场景。
规则管理和监控方面,Hystrix和Sentinel都支持动态地添加和修改规则,并提供接口允许用户进行扩展。Hystrix默认依赖Archaius进行动态配置读取和管理,而Sentinel则提供Nacos、Apollo、ZooKeeper、Redis等动态规则源支持。Hystrix和Sentinel都提供控制台来展示应用的实时监控数据,例如QPS、平均响应时间等,但是里面的用户体验和侧重点则完全不一样,例如Hystrix会提供百分位的统计分析;Sentinel则除了会提供实时监控之外,还会展现本地的调用链路等。 返回搜狐,查看更多
https://github.com/resilience4j/resilience4j
https://github.com/Netflix/Hystrix/issues/1891
责任编辑: