Sentinel熔断降级与Hystrix对比
请详细介绍阿里Sentinel的熔断降级、限流和系统保护功能。Sentinel的三大核心概念(资源、规则、Slot)是什么?Sentinel和Hystrix(以及Resilience4j)相比有哪些优势?
回答
小字辈
Sentinel核心概念:
- 资源(Resource):被保护的代码块或API(通过SphU.entry()定义)
- 规则(Rule):定义如何保护资源(流控规则、降级规则、热点规则、系统规则)
- Slot(槽):责任链模式处理不同的功能(如FlowSlot流量控制、DegradeSlot熔断降级、SystemSlot系统保护)
主要功能:
-
流量控制:
- 基于QPS/线程数控制
- 控制效果:快速失败、Warm Up(预热)、排队等待
- 支持调用链路限流、关联资源限流
-
熔断降级:
- 慢调用比例(RT > 阈值,比例超阈值熔断)
- 异常比例(异常请求占比 > 阈值熔断)
- 异常数(1分钟内异常数 > 阈值熔断)
- 熔断后支持半开恢复探测
-
系统保护:
- Load(系统负载)、CPU使用率、RT、QPS、线程数
Sentinel vs Hystrix vs Resilience4j:
| 特性 | Sentinel | Hystrix(已停维) | Resilience4j |
|---|---|---|---|
| 隔离策略 | 信号量/线程池 | 线程池/信号量 | 信号量(线程池需手动实现) |
| 流控手段 | QPS/线程数/WarmUp/排队 | 基于线程池/信号量 | 令牌桶/滑动窗口 |
| 动态规则 | 支持(控制台/Push模式) | 不支持 | 支持(通过配置中心) |
| 框架适配 | Spring Cloud/Dubbo/gRPC | Spring Cloud | Spring Cloud 2.x |
| 控制台 | 丰富(实时监控/规则推送) | 无 | 简单(Actuator端点) |
| 集群限流 | 支持(Token Server) | 不支持 | 不支持 |
| 性能 | 高(单机10万+QPS) | 低(线程池隔离开销大) | 高 |
总结:Sentinel功能最全面,比Hystrix更轻量高效。推荐新项目选择Sentinel。