Resilience4j 与 Hystrix。什么是最好的容错能力?

San*_*ama 10 fault-tolerance circuit-breaker spring-boot hystrix resilience4j

当我最初学习 Spring Boot 时,我已经了解了spring cloud netflix hystrix断路器。有很多选项,例如多个应用程序属性和用于容错的注释基声明。除此之外,它也没有什么重要的阈值。最重要的是,hystrix数据可以通过hystrix dashboard提示hystrix streams。通过使用,turbine我们可以组合多个hystrix streams概览微服务。这是我的经验hystrix

现在我需要实现一个Resilience4j基本上支持相同容错行为的要求。我是新手Resilience4j,我想在开始之前了解这两个容错选项的主要区别。根据我的研究,Resilience4j这是一个比hystrix. 我很高兴了解专家的事实并谢谢您。

小智 6

两者之间最显着的区别是,虽然 Hystrix 采用面向对象的设计,其中对外部系统的调用必须封装在提供多种功能的 HystrixCommand 中,但 Resilience4J 依赖函数组合来让您堆叠所需的特定装饰器。

资料来源: 断路器模式:从 Hystrix 迁移到 Resilience4J


Resilience4J 是一个受 Hystrix 启发但基于函数式编程原理构建的独立库。Resilience4J将是处理容错的最佳选择。


Nik*_*las 6

我可以说,您选择哪种实现并不重要,除非存在有利于特定实现的特定要求。我不会从 Netflix Hystrix 中选择任何内容,因为截至 2018 年,它处于维护模式(https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now)。在 GitHub 上阅读 Hystrix 状态: https: //github.com/Netflix/Hystrix#hystrix-status

让我强调这一点:“从架构的角度来看,我发现更重要的是创建一个可以根据需要轻松替换此类实现的环境。”

我建议使用Spring Cloud Circuit Breaker作为具有一致 API 的框架,并允许开发人员选择实现:Netflix Hystrix、反应式或非反应式 Resilience4j、Sentinel 和 Spring Retry。

所有这些都可以根据需要进行配置,并且都提供基本的默认配置来更改值阈值、慢速调用阈值、滑动窗口大小等。