• 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

  • 相关阅读:
    多个输入框实现串联筛选
    MySQL 的存储引擎(基本介绍)
    聊聊JDK19特性之虚拟线程 | 京东云技术团队
    springboot生成PDF,并且添加水印
    右键发送到菜单+批处理实现批量自动化为文件名添加统一的后缀
    PerfView专题 (第六篇):如何洞察 C# 中 GC 的变化
    C语言基础知识
    力扣:96.不同的二叉搜索树
    2-3 Moves Codeforces 1716A
    C++ - Java 调用 C++ 动态库 <.dylib / .so> By CLion
  • 原文地址:https://blog.csdn.net/wen5026/article/details/127821600