跳到主要内容

4、Hystrix Hystrix与Rhino对比

1、Hystrix与Rhino对比

项目

Hystrix

Rhino

接入方式

提供了注解和API两种接入方式,都提供了fallback机制

一致

熔断降级

默认错误超过50%且10秒内超过20个请求进行中断拦截

当熔断器开关关闭时, 请求被允许通过熔断器. 如果当前健康状况高于设定阈值, 开关继续保持关闭. 如果当前健康状况低于设定阈值, 开关则切换为打开状态.

当熔断器开关打开时, 请求被禁止通过.

触发条件:

1、请求总数达到阈值,默认20

2、请求失败率达到阈值,默认1%

3、请求失败数达到阈值,默认2

降级恢复

当熔断器开关处于打开状态, 经过一段时间后, 熔断器会自动进入半开状态, 这时熔断器只允许一个请求通过. 当该请求调用成功时, 熔断器恢复到关闭状态. 若该请求失败, 熔断器继续保持打开状态, 接下来的请求被禁止通过.

接⼝口熔断之后,如果试探请求成功,则开始恢复正常请求,Rhino提供了四种恢复策略,分别是:

  • 立即恢复: 一旦恢复,打开全部流量

  • 正常恢复: 默认策略。即每秒恢复1%的流量,速度较慢

  • 快速恢复:按2的幂次方恢复流量,按每秒2%、4%、8%、16%、64%、100%的流量恢复,速度较快

  • 限时恢复:在自定义时间内,匀速恢复

资源隔离

提供了线程池隔离和信号量隔离

提供线程池隔离

失败降级

提供了fallback机制,调用设定的fallback方法

提供了fallback机制,调用设定的fallback方法

限流

Rhino提供了三种限流器,分别是:

  • 简单限流器

  • 组限流器

  • 特征限流器

故障演练

Rhino提供了4种故障演练方式

  • 空实现

  • 超时故障演练

  • 异常故障

  • Mock数据

查询缓存

支持,存本机

支持,存redis

读缓存触发情况

如果方法执行中发生异常、超时,或者熔断、手动降级的情况下,如果开启熔断前异常策略为降级时,都会读缓存

请求合并

支持

不支持

2、触发fallback方法情况

项目

Rhino

Hystrix

超时

Y

Y

异常

Y

Y

熔断器打开

Y

Y

线程池拒绝

Y

Y

信号量拒绝

N

Y

限流

Y

N