发布:2023/9/29 9:21:32作者:管理员 来源:本站 浏览次数:428
1. 前言
Spring Cloud 之前使用的断路器是Netfilx 开源的 Hystrix 。被很多开发人员作为默认的断路器来使用。2018 年 11 月,当 Netflix 宣布将这个项目置于维护模式时(不再开发新特性,只进行例行维护),Spring Cloud 官方也不得不跟进了 Netfix ,在 SpringOne 2019中,Spring 宣布将从Spring Cloud 3.1 版本中删除Hystrix 仪表板。要不了多长时间Spring Cloud Netfix 将结束生命周期。
2. Spring Cloud Circuit Breaker
为了填补 Spring Cloud Netfix留下的空白, Spring Cloud Circuit Breaker 项目应运而生。这并不是一个实际的断路器,而是一个断路器的抽象层。它提供了一套规范 API,开发人员可以根据实际选择符合需求的断路器实现。目前提供四种断路器实现:
Netfix Hystrix[1]
Resilience4J[2]
Sentinel[3]
Spring Retry[4]
Hystrix 已经快成为过去式了。而Spring Retry 我个人认为并不是为了微服务而生。推荐在新项目中使用Resilience4J 或者 Sentinel。
2.1 Resilience4J
Resilience4j 是受 Hystrix 启发的轻量级容错库,专为 Java 8 和函数式编程而设计。而且该库仅仅依赖一个 Java 函数式编程增强库 Vavr而没有其它依赖。它提供了高阶函数,断路器,速率限制器,重试或舱壁隔离功能来对功能接口进行增强,另外还有度量标准模块对运行指标进行跟踪。
优点:功能比较全,相比 Hystrix 支持流量控制,轻量级,而且都是模块化的,支持函数式编程。
缺点:监控目前只提供度量 API,需要自己整合,但是我觉得这个不是问题,毕竟micrometer 也非常简单。
2.2 Sentinel
新项目不要再用 Spring Cloud Hystrix 了_java
阿里巴巴中间件团队出品,现在是Spring Cloud Alibaba 生态的一部分。功能和 Resilience4J 类似,亮点在于有流量塑形功能,对随机不规则、不受控的流量进行规则化处理;另外一个亮点在于有监控的dashboard ,不像Resilience4j 需要自己开发。
3. 总结
其实经过 Spring Cloud Circuit Breaker 的整合后使用都不会特别的困难,难点在于自定义,功能上 Sentinel 更加全面一些,但是有时候业务并不是需要什么都有。Resilience4j 大部分场景都能够满足,函数编程也更加优雅。这两个选择没有太多的高下之分。多说一句Vavr 函数库非常不错,有兴趣可以去体验一下。只是Hystrix 新项目还是不要再用了,虽然是一个非常好的断路器组件,但是它的历史使命差不多已经完成了。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4