美文网首页程序员
netflix hystrix介绍 使用

netflix hystrix介绍 使用

作者: 一品悟技术_张驰 | 来源:发表于2016-12-18 20:18 被阅读1712次

背景:

分布式环境下,系统间的依赖可能会十分庞大,复杂,一个请求可能会经过多个依赖服务,最后完成相应。

hystrix可帮助隔离每个服务,使单个服务的响应失败,不影响整个请求的响应。甚至,可预定义单个服务失败

后的响应。有了hystrix的容错,熔断机制,可极大提升整个服务的可靠,可用性。

如何解决:

1,hystrix作用在客户端,客户端程序依赖hystrix相关的第三方包,使得客户端与所依赖的服务,形成线程隔离。依赖服务的延迟与失败变的可控。保护调用者线程的执行。

2,避免了分布式系统中,单个组件的失败导致的级联影响。

3,快速失败,迅速恢复。  hystrix有这快速失败机制,单个组件服务失败率到一定程度后,再请求,会直接响应失败。再这之后,会有重试机制。

减少系统在错误服务调用上的开销。

4,降级应用

5,实时的监控

hystrix的设计原则:

1,防止任何单个依赖服务耗尽所有用户线程,

2,直接响应失败,而不是一直等待。

3,提供错误返回接口,而不是让用户线程直接处理依赖服务抛出的异常。

4,使用隔离或熔断技术来降低并限制单个依赖对整个系统造成的影响。

hystrix如何解决上述问题:

1,将对外部系统的请求,使用HystrixCommand包装,并使用单独的线程执行。

2,可对服务请求设置timeout,超时后,直接返回,可根据平时监控,查看该服务95%的请求的rt为多少进行设置

3,维护一个小的线程池在客户端,专门处里对指定服务的请求,当线程使用量超过线程池容量时,直接返回响应,

      而不是排队等待处里。

4,触发熔断来停止所有对指定服务的请求在一定时间范围内,可手动,可自动,针对该服务请求的错误数百分比。

5,对超时,失败,或者熔断,做特殊错误返回处理fallback.

使用:

引入maven依赖

上例展示了如何基本的使用hystrix,使用时,定义commandGroup,设置线程池,定义超时时间,以及错误返回

超时时间也可以在调用处定义。

相关文章

网友评论

    本文标题:netflix hystrix介绍 使用

    本文链接:https://www.haomeiwen.com/subject/mbkzmttx.html