认识Hystrix
Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术。
在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。我们要构建稳定、可靠的分布式系统,就必须要有这样一套容错方法。
本文主要讨论线程隔离技术。
为什么要做线程隔离
比如我们现在有3个业务调用分别是查询订单、查询商品、查询用户,且这三个业务请求都是依赖第三方服务-订单服务、商品服务、用户服务。三个服务均是通过RPC调用。当查询订单服务,假如线程阻塞了,这个时候后续有大量的查询订单请求过来,那么容器中的线程数量则会持续增加直致CPU资源耗尽到100%,整个服务对外不可用
如下图所示,在分布式应用中,对于某个应用来说,某个请求需要接口A返回数据,但接口A的数据来源于接口B、C、D三个接口的聚合结果,也就是需要依赖BCD三个接口的数据,这三个接口可能分布在不同的应用中,我们就需要通过http或者消息队列的形式去调用,问题是,如果现实环境中,接口A调用接口B的这个链路出了故障,而我们又没有对这个故障做一些补救措施,