1、Hystrix与Rhino对比
项目 |
Hystrix |
Rhino |
---|---|---|
接入方式 |
提供了注解和API两种接入方式,都提供了fallback机制 |
一致 |
熔断降级 |
默认错误超过50%且10秒内超过20个请求进行中断拦截 当熔断器开关关闭时, 请求被允许通过熔断器. 如果当前健康状况高于设定阈值, 开关继续保持关闭. 如果当前健康状况低于设定阈值, 开关则切换为打开状态. 当熔断器开关打开时, 请求被禁止通过. |
触发条件: 1、请求总数达到阈值,默认20 2、请求失败率达到阈值,默认1% 3、请求失败数达到阈值,默认2 |
降级恢复 |
当熔断器开关处于打开状态, 经过一段时间后, 熔断器会自动进入半开状态, 这时熔断器只允许一个请求通过. 当该请求调用成功时, 熔断器恢复到关闭状态. 若该请求失败, 熔断器继续保持打开状态, 接下来的请求被禁止通过. |
接⼝口熔断之后,如果试探请求成功,则开始恢复正常请求,Rhino提供了四种恢复策略,分别是:
|
资源隔离 |
提供了线程池隔离和信号量隔离 |
提供线程池隔离 |
失败降级 |
提供了fallback机制,调用设定的fallback方法 |
提供了fallback机制,调用设定的fallback方法 |
限流 |
无 |
Rhino提供了三种限流器,分别是:
|
故障演练 |
无 |
Rhino提供了4种故障演练方式
|
查询缓存 |
支持,存本机 |
支持,存redis 读缓存触发情况 如果方法执行中发生异常、超时,或者熔断、手动降级的情况下,如果开启熔断前异常策略为降级时,都会读缓存 |
请求合并 |
支持 |
不支持 |
2、触发fallback方法情况
项目 |
Rhino |
Hystrix |
---|---|---|
超时 |
Y |
Y |
异常 |
Y |
Y |
熔断器打开 |
Y |
Y |
线程池拒绝 |
Y |
Y |
信号量拒绝 |
N |
Y |
限流 |
Y |
N |