首先我们来讲一下hystrix解决什么问题。在大型分布式系统中经常会存在下面的几类问题:
1.大型分布式系统中,服务之间相互依赖,如果依赖的服务发生异常,那么当前服务也会出现异常,这样将会导致联级的服务不可用。
2.如果依赖服务接收超过执行能力的请求,请求量过大或者执行延时,最终也会导致联级延时和资源耗尽。
3.依赖服务间的调用缺乏系统监控,很难进行实时调控。
如何解决上面的三个问题:
1.针对第一个问题,解决方案一般为提供降级策略,当依赖服务出现异常时,执行降级策略。
2.1.针对第二个问题,第一个方案是提供延时检测和熔断机制,当依赖服务的延时超过设定延时时,进行服务调用熔断,并且给依赖服务一定时间恢复性能。
2.2针对第二个问题,第二个方案是提供限流策略,对每个依赖服务设置限流策略。
3.针对第三个问题,对服务间的调用发布执行的metrics信息。
hystrix就是这样的一个框架,来实现和解决上面的几个问题。Hystrix解决策略是通过封装和代理服务调用,提供以下功能:
1.提供降级策略,当依赖服务出现异常时,执行降级策略。
2.提供延时检测,当依赖服务执行时间超过设定延时时,执行降级策略。
3.提供限流策略,对每个依赖服务设置限流策略。
4.提供熔断机制,让服务快速降级,并且给依赖服务一定时间恢复性能。
5.提供实时执行metrics信息。