zoukankan      html  css  js  c++  java
  • Hystrix

    一、场景

      雪崩效应:

        现在微服务架构,一个系统会依赖多个服务。当其中一个服务不可用时,会造成级联故障,从而导致整个系统不可用。 

    二、Hystrix是什么

      Hystrix是一个熔断器,通过限流、降级、隔离这三个方面去实现系统的容错性,保障系统的稳定运行。

    三、Hystrix工作流程

      

      1.调用hystrix command
      2.两种方式:同步和异步
      3.判断熔断器是否打开,如果打开则跳到第8步
      4.判断线程池队列是否满了或者信号量是否用完了,满了则走第8步
      5.没有则运行,成功则跳到第6步,超时则跳到第8步
      6.执行成功则报告metrics,跳到第9步
      7.任何超时,失败,成功的执行结果都会报告metrics,计算熔断器监控指标
      8.走fallback降级流程
      9.返回成功响应报文
     

    四、断路器内核

    断路器的内核是有10个桶,每个桶里统计1秒的成功,失败,超时,拒绝的请求个数,每1秒生成1个桶。
       1.调用allowRequest()判断是否允许提交请求
       2.判断熔断器是否打开,失败数/成功数+失败数=失败比例,如果失败比例>阀值,则打开熔断器
        1.如果关闭则进入到第3步
        2.如果是打开的,则判断是否过了一个睡眠时间,没有则返回失败,有的话则放1个请求过去
       3.运行,标记此次请求成功或失败结果

    五、降级方式

      1.fail fast:快速失败

        HystrixCommand的run方法抛异常

      2.fail silent:安静失败

        降级函数:getfallback()

          return null;return new Option<T>(); return Collections.emptyList(); return Collections.emptyMap();

      3.static fallbak:

        降级函数:getfallback()

          return true; return DEFAULT_OBJECT;

      4.fallback by network: 通过网络进行降级

        主服务失败,调用辅助服务进行降级 

      5.primary + secondary with fallback:主次降级

    六、隔离

       Hystrix支持两种隔离方式:信号量隔离和线程池隔离。

      信号量隔离 vs 线程池隔离
      信号量隔离:
        优点:轻量,无额外开销
        缺点:不支持任务排队和主动超时
           不支持异步调用 
        适用:受信客户
             高扇出(网关)
             高频高速调用(cache)
      线程池隔离:
        优点:支持排队和超时
             支持异步调用
        缺点:会产生额外开销
        适用: 不受信客户 
        有限扇出

  • 相关阅读:
    cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。
    8086 cpu为什么要把段地址*16+偏移量形成物理地址呢?
    保护模式和实模式的区别
    计算机的内存是以字节为单位的, 这个认知很重要。
    计算机的内存是以字节为单位的。
    一个字 word 是16位, 一个字由两个字节组成 , 字节=byte ,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit
    物理地址为20位 如10000H 用段地址*16+偏移地址表示
    深入学习Java线程池
    在线考试系统镜像构建、推送、部署
    容器 变成镜像提交到阿里云镜像仓库
  • 原文地址:https://www.cnblogs.com/ITyannic/p/12241815.html
Copyright © 2011-2022 走看看