码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    【Android】Android Framework系列--CarUsbHandler源码分析
    【lombok】equals相等返回false contains包含返回false? lombok注解的一个天坑
    【Python 实战】---- 使用【百度人像分割】实现一键批量抠图
    无线传感器网络:物理层设计
    开关电源环路稳定性分析(01)-Buck变换器
    1.一分钟用esp32-cam实现局域网视频监控
    【火灾检测】森林火灾检测系统(带面板)【含GUI Matlab源码 1921期】
    k8s及etcd的每日自动备份及故障时的还原脚本
    2022年10月31日-11月6日(ue5 pak收尾)
    代码随想录算法训练营第二十五天|216.组合总和III 17.电话号码的字母组合
  • 原文地址:https://blog.csdn.net/wen5026/article/details/127821600
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号