Netflix开源Hystrix

12-12-02 banq
在一个分布式系统,任何一个服务调用总有可能失败的。Hystrix豪猪是一个旨在为这些分布式服务之间的相互调用提供了更大的延迟和容错性的保障。

Home · Netflix/Hystrix Wiki

正常服务调用有可能网络环境或各种因素出错,如下图:



一个应用如果调用30个服务,只有99.7%概率成功调用:
99.9930 = 99.7% uptime
0.3% of 1 billion requests = 3,000,000 failures

Hystrix实际是在客户端和服务之间增加一个线程池:
采取Shed大棚加载和快速失败机制,而不是队列queueing。
提供可行的情况下,保护用户免受失败的回退。
使用隔离技术(如舱壁,泳道和断路器的模式),限制影响的任何一个依赖。
通过近实时指标,监测和报警优化实时服务发现( time-to-discovery)(banq:比EJB的JNDI封装在EJB服务器中无法优化定制强多)
如果错误率超过阈,断路器将在一段时间内自动或手动停止该服务的所有请求。

下图是Hystrix加入了正常服务的示意图:



banq评:在使用EJB的Session Bean作为服务的JavaEE架构中,Session Bean的发现和定位是由JNDI等完成,而JNDI一般是被整合在Websphere或Weblogic JBoss服务器中,开源Hystrix实际做了EJB中间件服务器内部的一些功能,原来这方面是由EJB服务器厂商提供,应用者只有配置的权力,无法介入。

1
猜你喜欢