
Spring Cloud 之前使用的断路器是 Netfilx 开源的 Hystrix 。被很多开发人员作为默认的断路器来使用。2018 年 11 月,当 Netflix 宣布将这个项目置于维护模式时(不再开发新特性,只进行例行维护),Spring Cloud 官方也不得不跟进了 Netfix ,在 SpringOne 2019中,Spring 宣布将从 Spring Cloud 3.1 版本中删除 Hystrix 仪表板。要不了多长时间 Spring Cloud Netfix 将结束生命周期。
为了填补 Spring Cloud Netfix 留下的空白, Spring Cloud Circuit Breaker 项目应运而生。这并不是一个实际的断路器,而是一个断路器的抽象层。它提供了一套规范 API,开发人员可以根据实际选择符合需求的断路器实现。目前提供四种断路器实现:
Hystrix 已经快成为过去式了。而 Spring Retry 我个人认为并不是为了微服务而生。推荐在新项目中使用 Resilience4J 或者 Sentinel。

Resilience4j 是受 Hystrix 启发的轻量级容错库,专为 Java 8 和函数式编程而设计。而且该库仅仅依赖一个 Java 函数式编程增强库 Vavr 而没有其它依赖。它提供了高阶函数,断路器,速率限制器,重试或舱壁隔离功能来对功能接口进行增强,另外还有度量标准模块对运行指标进行跟踪。

阿里巴巴中间件团队出品,现在是 Spring Cloud Alibaba 生态的一部分。功能和 Resilience4J 类似,亮点在于有流量塑形功能,对随机不规则、不受控的流量进行规则化处理;另外一个亮点在于有监控的 dashboard ,不像 Resilience4j 需要自己开发。
其实经过 Spring Cloud Circuit Breaker 的整合后使用都不会特别的困难,难点在于自定义,功能上 Sentinel 更加全面一些,但是有时候业务并不是需要什么都有。Resilience4j 大部分场景都能够满足,函数编程也更加优雅。这两个选择没有太多的高下之分。多说一句 Vavr 函数库非常不错,有兴趣可以去体验一下。只是Hystrix 新项目还是不要再用了,虽然是一个非常好的断路器组件,但是它的历史使命差不多已经完成了。
Netfix Hystrix: https://github.com/Netflix/Hystrix
[2]Resilience4J: https://github.com/resilience4j/resilience4j
[3]Sentinel: https://github.com/alibaba/Sentinel
[4]Spring Retry: https://github.com/spring-projects/spring-retry


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69975884/viewspace-3151711/ ,如需转载,请注明出处,否则将追究法律责任。