天天看点

服务容错

一、容错方案

要防止雪崩的扩散,我们就要做好服务的容错:保护自己不被猪队友拖垮的一些措施。常见的容错方案:隔离、超时、限流、熔断、降级

1、隔离

将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖。当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务。常见的隔离方式有:线程池隔离和信号量隔离。

服务容错

2、超时上游服务调用下游服务时,设置一个最大响应时间,如果超过这个时间,下游未作出响应,就断开请求,释放掉线程。

服务容错

3、限流限制系统的输入和输出流量以达到保护系统的目的。为了保证系统的稳定运行,一旦达到的需要限制的阈值,就采取相应措施以完成限制流量的目的。

服务容错

4、熔断当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。

服务容错

5、降级降级就是为服务提供一个托底方案,一旦服务无法正常调用,就使用托底方案。

服务容错

二、容错组件

1、HystrixHystrix是由Netflix开源的一个延迟和容错组件,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。

2、Resilience4JResilicence4J提供丰富的容错工具,轻量、简单、文档清晰,也是Spring Cloud官方推荐替代Hystrix的产品。不仅如此,Resilicence4j还原生支持Spring Boot 1.x/2.x,而且监控也支持和prometheus等多款主流产品进行整合。

3、SentinelSentinel 是阿里巴巴开源的一款断路器实现,在阿里内部已经被大规模采用,非常稳定。

继续阅读