Hystrix在过去几年中非常受欢迎。现在它处于维护模式,许多人正在寻找替代方案。在本文中,我将介绍Sentinel:一个开源Java限流项目。我将通过与Hystrix进行比较来做到这一点,因为更多的人都熟悉它。在这一部分,我们将在更高的层次上比较这两个项目。在下一篇文章中,我们将介绍一些代码示例。

图片标题

什么是Sentinel?

简而言之,它是一个断路器。当某些资源一直出现故障时,将触发断路器。断路器不会继续访问已经发生故障的资源,而是拦截请求并返回故障信号。这听起来类似于断路器模式。但是,Sentinel提供了更多选择,例如流量整形,过载保护和容错。

Sentinel的历史

  • 2012年:Sentinel开始作为阿里巴巴的流量控制组件。
  • 2013-2017:随着微服务的疯狂增长带来了可靠性的挑战。Sentinel迅速成长为防止级联灾难的工具。
  • 2018年:Sentinel由阿里巴巴开源。

Sentinel看起来是怎么样的?

图片标题
  • Sential提供了许多处理流量控制的选项。用户可以选择根据QPS,线程池编号,系统负载来调整流量,以及直接使用命令来停止流量或执行冷启动。用户还可以混合和匹配不同的规则。Hystrix并没有真正提供全面的流量整形。
  • Sentinal提供故障隔离和断路。这与Hystrix类似。但是,他们的方法不同。
  • Sentinal提供实时监控。它还提供了一个仪表板,用于聚合来自分布式系统的信息。
仪表板

Sentinel与Hystrix有何不同?

两者之间的关键区别在于如何实现隔离。Hystrix通常使用bulkhead 模式来隔离依赖关系。它将每个依赖项放在一个单独的线程池中。这样做的主要好处是它提供了干净的切割。缺点主要包括计算开销和线程池管理。

Sentinel为每个依赖项使用计数器。通过这样做,它不仅可以节省管理线程池的开销,还可以为用户提供更多控制。用户现在可以决定流的退化的粒度。

此表列出了Hystrix和Sentinel在设计和实现方面差异的更多细节:


这似乎有点压倒性。但是,从用户体验的角度来看,用户不会注意到太多差异。

生态系统

Sentinal非常适合云原生环境。它可以与其他流行的云原生解决方案集成。其中之一是Spring Cloud。中国另一个流行的Java分布式框架是Dubbo。Sentinal还可以与Istio和Envoy等服务网络解决方案并肩工作。

参考

Sentinal将很快作为Spring Boot框架的一部分发布。有关更多信息,请访问他们的GitHub repo.。