Skip to content

37 要实现某种容错策略,我们该怎么做?

你好,我是周志明。今天,我们继续学习服务容错的实现方法。

在上一讲,我们首先界定了容错策略和容错设计模式这两个概念:容错策略,指的是“面对故障,我们该做些什么”;而容错设计模式,指的是“要实现某种容错策略,我们该如何去做”。

然后,我们讲了7种常见的容错策略,包括故障转移、快速失败、安全失败、沉默失败、故障恢复、并行调用和广播调用。

那么为了实现各种各样的容错策略,开发人员总结出了一些被实践证明有效的服务容错设计模式。这些设计模式,包括了这一讲我们要学习的,微服务中常见的断路器模式、舱壁隔离模式和超时重试模式等,以及我们下一讲要学习的流量控制模式,比如滑动时间窗模式、漏桶模式、令牌桶模式,等等。

我们先来学习断路器模式。

断路器模式

断路器模式是微服务架构中最基础的容错设计模式,以至于像Hystrix这种服务治理工具,我们往往会忽略了它的服务隔离、请求合并、请求缓存等其他服务治理职能,直接把它叫做微服务断路器或者熔断器。这下你明白断路器模式为啥是“最基础”的容错设计模式了吧,也明白为啥我们要首先学习这种模式了吧。

断路器模式最开始是由迈克尔 · 尼加德(Michael Nygard)在“Release It!”这本书中提出来的,后来又因为马丁 · 福勒(Martin Fowler)的文章“Circuit Breaker”而广为人知。