• 什么是Hystrix?简述实现机制


    分布式容错框架

    1. 阻⽌故障的连锁反应,实现熔断
    2. 快速失败,实现优雅降级
    3. 提供实时的监控和告警

    资源隔离:

    线程隔离,信号量隔离

    1. 线程隔离 :Hystrix会给每⼀个Command分配⼀个单独的线程池,这样在进⾏单个服务调⽤的时候,就可以在独⽴的线程池⾥⾯进⾏,⽽不会对其他线程池造成影响
    2. 信号量隔离 :客户端需向依赖服务发起请求时,⾸先要获取⼀个信号量才能真正发起调⽤,由于信号量的数量有限,当并发请求量超过信号量个数时,后续的请求都会直接拒绝,进⼊ fallback 流程。信号量隔离主要是通过控制并发请求量, 防⽌请求线程⼤⾯积阻塞 从⽽达到限流和防⽌雪崩的⽬的。

    熔断和降级:

    调用服务失败后快速失败

    • 熔断:是为了防⽌异常不扩散保证系统的稳定性
    • 降级 :编写好调⽤失败的补救逻辑,然后对服务直接停⽌运⾏,这样这些接⼝就⽆法正常调⽤,但⼜不⾄于直接报错,只是服务⽔平下降
    其次:
    • 通过 HystrixCommand 或者 HystrixObservableCommand 将所有的外部系统(或者称为依赖)包装起来,整个包装对象是单独运⾏在⼀个线程之中(这是典型的命令模式)。
    • 当请求被拒绝、连接超时或者断路器打开,直接执⾏fallback逻辑
    • 近乎 实时监控指标和配置变化
    • 超时请求应该超过你定义的阈值
    • 为每个依赖关系维护⼀个⼩的线程池(或信号量); 如果它变满了,那么依赖关系的请求将⽴即被拒绝,⽽不是排队等待。
    • 统计成功,失败(由客户端抛出的异常),超时和线程拒绝。
    • 打开断路器可以在⼀段时间内停⽌对特定服务的所有请求,如果服务的错误百分⽐通过阈值,⼿动或⾃动的关闭断路器。

     

  • 相关阅读:
    基于javaweb的在线美食分享推荐系统(java+ssm+jsp+jquery+mysql)
    nodejs异常处理
    毕业设计 基于大数据的高校校园学生一卡通数据分析
    实现动态表单的一种思路 | 京东云技术团队
    39. 组合总和
    Springboot整合Fastdfs上传图片、缩略图、下载文件、需求:文件转存方案(springboot整合线程池多线程实现)
    视频电影和字幕如何合并?
    常见web漏洞原理整理
    Zookeeper原理解析-单机模式
    C++面对对象设计模式
  • 原文地址:https://blog.csdn.net/m0_70734549/article/details/128074546