理解服务容错

本文介绍了服务容错的几种策略,包括集群容错中的Failover、Failback、Failsafe和Failfast,以及服务隔离、服务熔断和回退。服务熔断通过类似电路断路器的机制,在服务异常时快速切断请求,防止雪崩效应。断路器有关闭、打开和半开三个状态。此外,提到了SpringCloud的CircuitBreaker框架,它提供了多种熔断器实现。

        服务容错为了防止出现服务雪崩效应,降低服务消费者受已失败的服务提供者的影响,服务容错的常见实现模式包括集群容错、服务隔离、服务熔断和服务回退等。

 

集群容错

        集群容错的基本要素就是要做到冗余,即某一个服务应该构建多个实例,这样当一个服务实例出现问题时可以重试其他实例。一个集群中的服务本身就是冗余的。而针对不同的重试方式就诞生了一批集群容错策略,常见的包括 Failover(失效转移)、Failback(失败通知)、Failsafe(失败安全)和 Failfast(快速失败)等

        Failover(失效转移) 是最常见和实用的集群容错策略,当发生服务调用异常时,请求会重新在集群中查找下一个可用的服务提供者实例。

服务隔离

所谓隔离,就是指对资源进行有效的管理,从而避免因为资源不可用、发生失败等情况导致系统中的其他资源也变得不可用。在日常开发过程中,我们主要的处理对象还是线程级别的隔离。

服务熔断

服务熔断的概念来源于日常生活中的电路系统,在电路系统中存在一种熔断器(Circuit Breaker),它的作用就是在电流过大时自动切断电路。在微服务架构中,也存在类似的“熔断器”:当系统中出现某一个异常情况时,能够直接熔断整个服务的请求处理过程。这样可以避免一直等到请求处理完毕或超时,从而避免浪费。熔断的基本原理图如下:

断路器一般有关闭、打开和半开三种状态组成

关闭状态(Closed): 服务调用者可以调用服务提供者

打开状态(Open): 对应用的请求会立即返回错误响应或执行预设的失败降级逻辑,而不调用服务提供者。

半开状态(Half-Open): 允许应用程序一定数量的请求去调用服务。断路器会对成功执行的调用进行计数,达到阈值后,会认为被调用服务恢复正常,断路器状态回到“关闭”状态,如果有请求出现失败,则回到“打开”状态。

服务限流

限流用于控制访问服务的流量,常见的限流算法有:漏桶、令牌桶。计数器也可以用来进行粗暴限流实现。限流常见的策略和算法可参考:

https://skaygo.blog.youkuaiyun.com/article/details/109680144

Spring Cloud中的容错

Spring Cloud 中专门用于提供服务容错功能的 Spring Cloud Circuit Breaker 框架。在 Spring Cloud Circuit Breaker 中,内置了四种熔断器,如下所示:

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值