Hystrix:为分布式系统提供延迟和容错的库
Hystrix是通过隔离服务间的访问点、停止级联故障和提供后备选项提高分布式系统整体弹性的延迟和容错库。
主要功能
- 为通过第三方客户端库访问(通常是通过网络)的延迟和失败提供保护和控制。
- 停止复杂分布式系统中的级联故障。
- 故障的快速恢复。
- 在可能的情况下进行回退和降级。
- 允许准实时的监控、告警和操作控制。
设计原则
- 防止任何单一依赖使用所有容器的用户线程。
- 快速的失败和从负载中摘除而不是排队处理。
- 在保护用户免受失败时提供反馈。
- 使用隔离技术使任何一个依赖的影响最小化。
- 通过准实时的度量、检测和告警优化了发现时间。
- 通过低延迟的配置变化传播和动态性能变化的支持优化了发现时间,允许在低延迟的反馈下做实时的修改。
- 保护整个依赖客户端的执行(失败),而不仅仅在网络中。
Hystrix怎样实现目标
- 在一个单独的线程中通过 HystrixCommand 或 HystrixObservableCommand 对象包装所有外部系统(或依赖)的调用。
- 调用超时比设置的阈值更长。虽然有默认值,但是大多数依赖自己配置的这些超时“属性”,所以每个依赖都略高于实测性能的99.5%。
- 为每个依赖保持一个小的线程池;如果线程池满了,新来的请求会立即拒绝掉,而不是排队等候。
- 测试成功、失败(客户端抛出异常)、超时和线程拒绝。
- 当请求失败、被拒、超时或者短路时的性能反馈逻辑。
- 准实时的监控指标和配置改变。
开发文档
开源地址:https://github.com/Netflix/Hystrix