如何通过韧性架构实现微服务的5种容错模式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3814个文字,预计阅读时间需要16分钟。
在本文中,我将介绍微服务中的容错机制及其实现方法。若你在维基百科上查找,会发现以下定义:容错是系统在遇到某些组件故障时,仍能持续正常运行的特性。简而言之,容错是系统在面对故障时,保持稳定运行的能力。
在本文中,我将介绍微服务中的容错以及如何实现它。如果你在维基百科上查找它,你会发现以下定义:
容错是使系统在其某些组件发生故障时能够继续正常运行的属性。
对我们来说,组件意味着任何东西:微服务、数据库(DB)、负载均衡器(LB),应有尽有。我不会介绍 DB/LB 容错机制,因为它们是特定于供应商的,启用它们最终会设置一些属性或更改部署策略。
作为软件工程师,应用程序是我们拥有所有权力和责任的地方,所以让我们照顾好它。这是模式列表,我将介绍:
- 超时
- 重试
- 断路器
- 截止日期(Deadlines)
- 速率限制器
有些模式是众所周知的,你甚至可能怀疑它们是否值得一提,但请继续阅读这篇文章——我将简要介绍基本形式,然后讨论它们的缺陷以及如何克服它们。
超时
超时是允许等待某个事件发生的指定时间段。如果您使用 SO_TIMEOUT(也称为套接字超时或读取超时),则会出现问题——它表示任何两个连续数据包之间的超时,而不是整个响应,因此执行 SLA 更加困难,尤其是当响应负载很大时。您通常想要的是超时,它涵盖了从建立连接到响应的最后一个字节的整个交互。SLA 通常用这种超时来描述,因为它们对我们来说是人道和自然的。可悲的是,它们不符合 SO_TIMEOUT 理念。要在 JVM 世界中克服它,您可以使用 JDK11 或 OkHttp 客户端。Go 在 std 库中也有一个机制。
如果您想深入了解,请查看我之前的文章。
本文共计3814个文字,预计阅读时间需要16分钟。
在本文中,我将介绍微服务中的容错机制及其实现方法。若你在维基百科上查找,会发现以下定义:容错是系统在遇到某些组件故障时,仍能持续正常运行的特性。简而言之,容错是系统在面对故障时,保持稳定运行的能力。
在本文中,我将介绍微服务中的容错以及如何实现它。如果你在维基百科上查找它,你会发现以下定义:
容错是使系统在其某些组件发生故障时能够继续正常运行的属性。
对我们来说,组件意味着任何东西:微服务、数据库(DB)、负载均衡器(LB),应有尽有。我不会介绍 DB/LB 容错机制,因为它们是特定于供应商的,启用它们最终会设置一些属性或更改部署策略。
作为软件工程师,应用程序是我们拥有所有权力和责任的地方,所以让我们照顾好它。这是模式列表,我将介绍:
- 超时
- 重试
- 断路器
- 截止日期(Deadlines)
- 速率限制器
有些模式是众所周知的,你甚至可能怀疑它们是否值得一提,但请继续阅读这篇文章——我将简要介绍基本形式,然后讨论它们的缺陷以及如何克服它们。
超时
超时是允许等待某个事件发生的指定时间段。如果您使用 SO_TIMEOUT(也称为套接字超时或读取超时),则会出现问题——它表示任何两个连续数据包之间的超时,而不是整个响应,因此执行 SLA 更加困难,尤其是当响应负载很大时。您通常想要的是超时,它涵盖了从建立连接到响应的最后一个字节的整个交互。SLA 通常用这种超时来描述,因为它们对我们来说是人道和自然的。可悲的是,它们不符合 SO_TIMEOUT 理念。要在 JVM 世界中克服它,您可以使用 JDK11 或 OkHttp 客户端。Go 在 std 库中也有一个机制。
如果您想深入了解,请查看我之前的文章。

