当我最初学习 Spring Boot 时,我了解了
spring cloud netflix hystrix
作为断路器。有很多选项,例如多个应用程序属性和用于容错的注释基声明。除此之外,它也没有什么重要的阈值。最重要的是hystrix
可以通过hystrix dashboard
提示数据到hystrix streams
。通过使用 turbine
,我们可以组合多个 hystrix streams
和概览微服务。这是我的经验hystrix
。
现在我需要实现
Resilience4j
,它基本上支持相同的容错行为。我是 Resilience4j
的新手,我想在开始之前了解这两个容错选项的主要区别。根据我的研究,Resilience4j
是比 hystrix
更强大的选择。我很高兴了解专家的事实并谢谢您。
我可以说,您选择哪种实现并不重要,除非存在有利于特定实现的特定要求。我宁愿选择 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。
所有都可以根据需要进行配置,并且都提供基本的默认配置来更改值阈值、慢调用阈值、滑动窗口大小等。
两者之间最显着的区别是,虽然 Hystrix 采用面向对象的设计,其中调用外部 系统必须封装在 HystrixCommand 中,提供多个 功能,Resilience4J 依靠函数组合来让 您可以堆叠所需的特定装饰器。
来源: 断路器模式:从 Hystrix 迁移到 Resilience4J
Resilience4J 是一个受 Hystrix 启发但基于函数式编程原理构建的独立库。 Resilience4J 将是处理容错的最佳选择。