hystrix
hystrix 熔断器
名词解释:
扇入:代表的是该微服务组件被调用的次数,扇入越大说明该模块复用性很好;
扇出:表示该模块调用其他微服务组件的数量,扇出越大表明该微服务越复杂;
雪崩效应:比如微服务 A 在调用 B 时和 C 时,B 与 C 又调用其他的微服务,也就是所谓的扇出,当其中一个扇出链路有问题时一直超时或者不可用,导致 对 A 的调用就使用越来越多的多的系统资源,导致 A 奔溃,也就是扇出链路有问题导致整个系统不可用的现象,称为雪崩效应。
服务熔断:
在服务出现问题时,超时或者不可用时,快速返回错误的响应信息,当微服务正常之后在进行调用返回正确的信息。
服务降级:
在一些系统资源不够用时,把一些不仅要的服务暂时停掉(在调用的时候返回一个兜底的数据),保证整个系统的可用性
服务限流:
当一些场景不适合服务降级时(如秒杀,抢购),而流量过大会导致系统不可用时,可以采用限流的形式;
舱壁模式:
默认的 hystrix 有 10 个线程,为所有添加了 @HystrixCommand 的方法共用,,如果这 10 线程满了 其他的线程请求会等待或者时拒绝,如果不进行设置所有的熔断方法都使用者 10 个线程则很容易导致线程使用完,从而进行熔断,所以为了避免出现这种情况,可以为每一个添加了 @HystrixCommand 方法单独添加一个线程池,这种模式叫做舱壁模式,是一种线程隔离手段。
hystrix 工作流程
当调用服务出现问题时,开启一个事件窗口(默认十秒);
再这个时间窗口内统计调用次数看是否达到了最小请求数,以及失败调用的百分比看是否达到了配置的阈值,达到则跳闸,否则回到第一步;
当跳闸后会开启一个活动窗口(默认 5 秒),当达到这个窗口时放过一个请求到有问题的服务器,如果成功则回到第 1 步,否则回到第三步。
评论