5.1 Spring Cloud Hystrix 入门
Hystrix是Netflix公司开源的一个针对分布式系统的容错处理的开源软件,旨在隔离针对远程系统、服务和第三方库的访问点产生级联故障后可以及时隔断,防止出现热点访问冲击整个系统,并在负载的分布式系统中启用弹性服务。它在微服务体系中起着至关重要的作用,是服务端最后一道防线。在Github上诞生于2011年,目前处于维护阶段,最后一个稳定版本是1.5.18,共计产生了151个Release版本。整合进Spring Cloud生态后,正式命名为Spring Cloud Hystrix,它是一个分布式系统容错处理工具,它是一个库,并不需要独立部署,在Spring Cloud中被大量的使用,几乎存在于每一个Spring Cloud构建的的微服务的基础组件中。
在分布式环境中,许多服务依赖项中的一些不可避免地会失败。Hystrix是一个库,可通过添加延迟容错和容错逻辑来控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,阻止它们之间的级联故障以及提供后备选项来实现这一目标,所有这些都可以提高系统的整体弹性。
5.1.1 设计目标
Hystrix设计目标主要是用来执行以下操作:
- 通过第三方客户端库访问(通常通过网络)依赖关系,以防止和控制延迟和故障。
- 在复杂的分布式系统中停止级联故障。
- 快速失败并迅速恢复。
- 在可能的情况下,后退并优雅地降级。
- 实现接近实时监控,警报和操作控制。
那么,Hystrix具体解决了什么问题呢?
复杂分布式体系结构中的应用程序具有许多依赖关系,每个依赖关系在某些时候都将不可避免地失败。
例如,对于依赖于30个服务的应用程序,其中每个服务的正常运行时间为99.99%,我们可以得出以下结论:
- 99.99^30 = 99.7%,即所有服务正常可用时间为99.7%
- 0.3%失败意味着10亿个请求中会有3,00