一、Hystrix
1. 基础知识
A. Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务,第三方库,防止出现级联失败。
B. 雪崩问题:在微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路,服务器支持的线程和并发有限,请求一直阻塞,会导致服务资源耗尽,从而导致所有其他服务不可用,形成雪崩效应。
C. 解决雪崩问题的措施
线程隔离:用一个线程池管理所有的服务请求和分发,Hystrix为每个服务依赖调用分配了一个小的线程池,如果线程池已满,调用将立即被拒绝,默认采用排队,加速失败判定时间,用户的请求不再直接访问服务,而是通过线程池中空闲线程访问服务,如果线程池已满或者请求超时,则会进行降级处理;
服务降级:优先保证核心服务,而非核心服务不可用或弱可用,用户的请求故障时,不会被阻塞,更不会无休止的等待或者系统崩溃,至少可以看到友好的提示返回结果;
服务熔断。
2. 工作原理
A. 服务熔断器原理与电路熔断原理类似;
B. 在分布式系统中,服务调用方需要判断哪些服务处理耗时,反应慢而超时或异常等,可以针对这些服务进行主动熔断,防止拖垮整个系统;
C. Hystrix的服务熔断机制,可以实现弹性容错,当服务请求状况好转之后,可以自动重连;
D. 通过断