SpringCloud 面试题, Sentinel 与 Hystrix 的区别是什么?
SpringCloud 面试题, Sentinel 与 Hystrix 的区别是什么?
QA
Step 1
Q:: Sentinel 与 Hystrix 的区别是什么?
A:: Sentinel 和 Hystrix 都是用于服务熔断、限流等功能的工具,但它们在设计思想、功能特性和实现细节上有许多不同之处。Hystrix 是 Netflix 开源的熔断器库,主要用于实现容错和隔离。而 Sentinel 是 Alibaba 开源的更全面的流量控制工具,集成了熔断、限流、系统保护等多种功能。具体区别包括:
1.
限流粒度:Sentinel 提供了多种限流策略,包括并发控制、QPS(Queries per Second)控制等,而 Hystrix 主要通过线程池隔离和信号量来控制并发。
2.
动态规则配置:Sentinel 支持动态规则配置,通过控制台可以实时调整限流、熔断等策略,Hystrix 的配置相对静态,修改配置需要重启应用。
3.
熔断机制:Sentinel 的熔断机制更加灵活,可以基于响应时间、异常比例等多种条件进行熔断,Hystrix 则主要基于异常比例。
4.
扩展性:Sentinel 拥有更丰富的 SPI(Service Provider Interface)扩展点,用户可以通过扩展来定制流量控制逻辑,而 Hystrix 的扩展能力相对较弱。
5.
社区与维护:Hystrix 项目已进入维护模式,而 Sentinel 依然在积极开发和维护中,社区活跃度较高。
Step 2
Q:: Spring Cloud 为什么要使用熔断器?
A:: 在微服务架构中,服务之间的调用链条往往很长,一个服务的故障可能会导致整个调用链的崩溃,进而影响整个系统的可用性。熔断器(如 Hystrix 或 Sentinel)通过监控服务的调用状况,在检测到某个服务的错误率较高时,主动熔断该服务的调用,从而避免故障蔓延到整个系统。同时,熔断器还能提供降级策略,当某个服务不可用时,返回预设的默认值或备用逻辑,确保系统的高可用性。