https://github.com/Netflix/hystrix/wiki
1. Hystrix需求场景
在分布式系统中,不可避免的会遇到 依赖的其他服务出现失败情况,
多个后端程序,一个host多个模块依赖. 通过分布式,部署在n个机器上,大量的请求,到host上,后边需要使用多个依赖服务,当某一个依赖服务出现问题,则相关的请求累计在host上,很容易引发系统崩溃,主host崩溃,影响其他依赖的正常使用
2. 简单功能概述
HYXTRIX提供了通过添加延迟容忍,可容忍判断逻辑来帮助 协调各个分布式 依赖服务的情况. 通过在服务之间添加 隔离点,来提供给用户 停止失败叠加累计,和异常响应机制等功能. 提高系统整体弹性
3. 支持的功能
- 当通过第三方放依赖出现失败,提供容错保护
- 在分布式系统中,针对某个依赖 停止失败叠加(某个依赖出现异常,就不全请求,导致整个服务崩溃)
- 应急保护机制(提供 失败后的处理方法)
- 近乎实时的 监控 警告 和 操作控制
4. 实现原理
- 将所有的请求都封装到HyxtrixCommand 或HyxtrilObserverCommand对象中,对象通常再单独线程中执行(命令模式的一种实践)
- 支持自定义超时阈值
- 为每个依赖服务,维护一个线程池,如果一旦放满,立刻拒绝服务,不会在队列中排队
- 度量成功、失败(客户机抛出的异常)、超时和线程拒绝
- 可以在指定周期断开 对某个依赖服务的所有请求,或者 当失败率到指定比例 自动断开(熔断)
- 失败会 会有 应急计划 fallback方法