微服务之熔断降级

Keys
  • 滑动窗口: 滑动窗口协议(Sliding Window Protocol),属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输,提高网络吞吐量
常用熔断框架比较
对比 Sentinel Hystrix resilience4j
隔离策略 信号量隔离(并发线程数限流) 线程池隔离/信号量隔离 信号量隔离
熔断降级策略 基于响应时间、异常比率、异常数 基于异常比率 基于异常比率、响应时间
实时统计实现 滑动窗口(LeapArray) 滑动窗口(基于 RxJava) Ring Bit Buffer
动态规则配置 支持多种数据源 支持多种数据源 有限支持
扩展性 多个扩展点 插件的形式 接口的形式
基于注解的支持 支持 支持 支持
限流 基于 QPS,支持基于调用关系的限流 有限的支持 Rate Limiter
流量整形 支持预热模式、匀速器模式、预热排队模式 不支持 简单的 Rate Limiter 模式
系统自适应保护 支持 不支持 不支持
控制台 提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等 简单的监控查看 不提供控制台,可对接其它监控系统
线程和信号量的比较
对比 信号量 线程池
排队和超时 不支持 支持
异步调用 不支持 支持
额外开销
适用 受信客户(可预估量级) 不受信客户(第三方,数据库访问)
高扇出(网关,依赖多) 有限扇出
高频高速调用(缓存)

综上,比较倾向于使用Sentinel,因为Hystrix官方已不再开发,而resilience4j不太适合比较复杂的场景。

参考

限流熔断技术选型:从Hystrix到Sentinel
微服务架构—服务降级