Spring Cloud Hystrix面试题大全

Spring Cloud Hystrix面试题大全


目录

面试题汇总

Q:Hystrix有什么功能

Q:Hystrix的总体流程

Q:RequestCache是什么?

Q:Hystrix的开关降级如何实现

Q:Hystrix的超时降级如何实现

Q:Hystrix的熔断降级如何实现

Q:线程池隔离与信号量隔离的选型


面试题汇总

Q:Hystrix有什么功能

Hystrix实现了开关降级、超时降级、熔断降级

Q:Hystrix的总体流程

1、【入口】通过HystrixCommand和HystrixCollapser注解修饰的方法,会被HystrixCommandAspect进行aop处理

2、【缓存】如RequestCache打开,则判断缓存是否命中

3、【熔断】判断是否有被开关、熔断降级,若被降级,则走降级逻辑;若未被降级,则走正常逻辑

4、【隔离】根据配置走线程池隔离或信号量隔离,任务满则走降级逻辑

5、【执行】执行任务,若任务执行失败或异常,则进入降级逻辑

6、【超时】通过定时器延时任务检测业务调用执行是否超时,若超时则取消业务执行的线程,进入降级逻辑;若未超时,则正常返回

7、【降级】若进入降级逻辑,根据getFallback()方法,返回降级处理的数据,若未实现该方法,则返回异常

8、【统计】业务调用执行结果成功、失败、超时等均会进入统计模块,通过健康统计结果来决定熔断器打开或关闭

Q:RequestCache是什么?

缓存在高并发的环境下使用,能够有效地减少服务器的压力,使用Hystrix返回结果缓存,后续请求可以直接调用缓存数据,该缓存就是RequestCache。

Hystrix提供了RequestCache的参数:

requestCache.enabled 设置是否缓存请求 默认值true

Q:Hystrix的开关降级如何实现

Hystrix提供了开关降级的参数:

circuitBreaker.forceOpen:熔断器强制打开,该状态下它将拒绝所有请求。默认值FALSE。

circuitBreaker.forceClosed:熔断器强制关闭,在此状态下,无论错误百分比如何,它都将允许请求。默认值FALSE。

Q:Hystrix的超时降级如何实现

Hystrix提供了超时降级的参数:

execution.isolationthread.timeoutInMilliseconds:超时时间,默认值为1000

execution.timeout.enabled:是否启用超时时间,默认值为true

execution.isolation.thread.interruptOnTimeout:超时后是否允许 interrupt,默认为 true

execution.isolation.thread.interruptOnCancel:cancel 后是否 interrupt,默认为 false

Q:Hystrix的熔断降级如何实现

Hystrix提供了熔断降级的参数:

circuitBreaker.requestVolumeThreshold:触发熔断判断的请求次数阈值,默认值为20,是一段时间内至少有20个请求才进行熔断降级计算。比如一段时间有19个请求全部失败,错误率是100%,但熔断器不会打开,因为总请求数不满足20。

circuitBreaker.sleepWindowInMilliseconds:半开状态试探睡眠时间,默认值5000ms,如熔断器开启5000ms后,会尝试翻过去一部分流量进行试探,确定依赖服务是否恢复

circuitBreaker.errorThresholdPersentage:错误率,默认值50%,例如一段时间(10s)内有100个请求,其中有54个超时或者有异常,则错误率是54%,大于默认值50%,这种情况下触发熔断器开关。

Q:线程池隔离与信号量隔离的选型

线程池隔离和信号量隔离是用于限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用

THREAD(线程隔离):使用该方式,HystrixCommand将会在单独的线程上执行,并发请求受线程池中线程数量的限制。
SEMAPHORE(信号量隔离):使用该方式,HystrixCommand将会在调用线程上执行,开销相对较小,并发请求受信号量的个数的限制。

配置:hystrix.command.default.execution.isolation.strategy 隔离策略,默认是Thread, 可选Thread|Semaphore

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值