断路器对比Sentinel、Hystrix、resilience4j
发布日期:2021-06-30 21:30:29 浏览次数:2 分类:技术文章

本文共 2496 字,大约阅读时间需要 8 分钟。

Sentinel

强大的流量控制组件,为微服务提供可靠性、弹性和监控,面向云原生微服务的高可用流控防护组件。

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel 具有以下特征:

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
  • 完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

Hystrix

Hystrix是一个延迟和容错库,旨在隔离远程系统、服务和第三方库的访问点,停止级联故障,并在故障不可避免的复杂分布式系统中实现恢复能力。

在分布式环境中,许多服务依赖项中的一些不可避免地会失败。Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止服务之间的级联故障以及提供回退选项来实现这一点,所有这些都提高了系统的总体弹性。

Hystrix是从Netflix API团队2011年开始的弹性工程工作中发展而来的。2012年,Hystrix继续发展和成熟,Netflix内部的许多团队都采用了它。今天,Netflix每天都有数百亿个线程被隔离,数千亿个信号量被隔离的调用通过Hystrix执行。这导致了正常运行时间和弹性的显著改善。

Resilience4j

Resilience4j是一个为Java8和函数式编程设计的容错库。

Resilience4j是一个受Netflix Hystrix启发的轻量级容错库,但它是为Java 8和函数式编程设计的。轻量级,因为库只使用Vavr,它没有任何其他外部库依赖项。相比之下,Netflix Hystrix对Archaius有一个编译依赖关系,Archaius有更多的外部库依赖关系,如Guava和Apache Commons配置。

Resilience4j提供高阶函数(decorators)来增强任何功能接口、lambda表达式或方法引用,包括断路器、速率限制器、重试或隔板。可以在任何函数接口、lambda表达式或方法引用上堆叠多个装饰器。优点是您可以选择所需的装饰器,而无需其他任何东西。

功能对比

  Sentinel Hystrix(维护状态) Resilience4j(Spring推荐)
开发者 alibaba Netflix 独立
隔离策略 信号量隔离(并发线程数限流) 线程池隔离/信号量隔离 信号量隔离
熔断降级策略 基于响应时间、异常比率、异常数 基于异常比率 基于异常比率、响应时间
实时统计实现 滑动窗口(LeapArray) 滑动窗口(基于 RxJava) Ring Bit Buffer
动态规则配置 支持多种数据源 支持多种数据源 有限支持
扩展性 多个扩展点 插件的形式 接口的形式
基于注解的支持 支持 支持 支持
限流 基于 QPS,支持基于调用关系的限流 有限的支持 Rate Limiter
流量整形 支持预热模式、匀速器模式、预热排队模式 不支持 简单的 Rate Limiter 模式
系统自适应保护 支持 不支持 不支持
控制台 提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等 简单的监控查看 不提供控制台,可对接其它监控系统

github

star(2020.6)

12.6 19.8k 5.6k

优缺点

Sentinel 

  1. 轻量级,核心库无多余依赖,性能损耗小。
  2. 方便接入,开源生态广泛。Sentinel 对 Dubbo、Spring Cloud、Web Servlet、gRPC 等常用框架提供适配模块,只需引入相应依赖并简单配置即可快速接入;同时针对自定义的场景 Sentinel 还提供低侵入性的注解资源定义方式,方便自定义接入。
  3. 丰富的流量控制场景。Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,流控维度包括流控指标、流控效果(塑形)、调用关系、热点、集群等各种维度,针对系统维度也提供自适应的保护机制。
  4. 易用的控制台,提供实时监控、机器发现、规则管理等能力。
  5. 完善的扩展性设计,提供多样化的 SPI 接口,方便用户根据需求给 Sentinel 添加自定义的逻辑。

Resilience4j

Resilience4j 是比较轻量的库,在较小较新的项目中使用还是比较方便的,但是 Resilience4j 只包含限流降级的基本场景,对于非常复杂的企业级服务架构可能无法很好地 cover 住;同时 Resilience4j 缺乏生产级别的配套设施(如提供规则管理和实时监控能力的控制台)。

Resilience patterns

name类型 how does it work? description描述 links

重试

重写执行失败请求

部分请求可能偶尔失败,重写请求可能恢复正常

, , 

断路器

部分服务可能出现故障

当服务不可用时,快速失败

, , , , 

限速

限制周期内请求数

限制接受请求的速率

, , , , 

限时

限制执行期限

超过一定等待时间将不能返回正确结果

, , 

隔离

限制并发执行

失败资源放入隔离区

, , 

缓存

缓存一个成功结果

相似请求返回

备路

为失败请求提供另一个结果

请求失败后的处理

, , 

 

转载地址:https://lizz6.blog.csdn.net/article/details/103581742 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringCloud生态架构图
下一篇:Zuul和Gateway对比

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月17日 10时21分47秒