一.简介
Hystrix是国外知名的视频网站Netflix所开源的非常流行的高可用架构框架。Hystrix能够完美的解决分布式系统架构中打造高可用服务面临的一系列技术难题。
Hystrix “豪猪”,具有自我保护的能力。hystrix 通过如下机制来解决雪崩效应问题。
资源隔离:包括线程池隔离和信号量隔离,限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。
降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。
融断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。
缓存:提供了请求缓存、请求合并实现。
二.原理
1.启动类添加@EnableHystrix注解。
2.方法上添加@HystrixCommand注解,并指定fallback的方法。
@EnableHystrix ->HystrixAutoConfiguration (心跳,hystrix的健康检查的配置) ->HystrixCircuitBreakerConfiguration(注入HystrixCommandAspect的bean)
->HystrixCommandAspect(利用AOP切面对 HystrixCommand 、 HystrixCollapser 两种注解的方法进行扩展处理,这个切面中定义了@Around(…)拦截所有请求)
->around方法(创建MetaHolder的时候,调用了MetaHolderFactory的create方法,MetaHolderFactory有两个子类,在创建MetaHolder的过程中,就会指定fallback方法。
创建完MetaHolder之后,就会根据MetaHolder创建HystrixInvokable,这段代码里定义了后续真正执行HystrixCommand的GenericCommand实例
方法最终会去执行CommandExecutor.execute方法 动态代理)
网友评论