微服务和基于云的应用程序必须接受最终肯定会发生的部分故障。 必须将应用程序设计为能够复原这些部分故障。
恢复能力是指从故障中恢复并继续工作的能力。 这并不是要避免故障,而是接受失败将发生并响应这些故障的方式,以避免停机或数据丢失。 复原的目标是在发生故障后将应用程序返回到完全正常运行的状态。
设计并部署基于微服务的应用程序非常困难。 但还需要使应用程序在故障不可避免的环境中运行。 因此,应用程序应具有复原能力。 它应该被设计为能够应对部分失效,例如网络中断、节点故障或云中虚拟机崩溃。 即使是将微服务(容器)移动到群集中的另一个节点也可能导致应用程序中出现间歇性短故障。
应用程序的多个单个组件还应包含运行状况监视功能。 按照本章中的准则,您可以创建一个应用程序,即使在云部署的复杂环境中遇到暂时性停机或常见的故障,该应用程序仍能顺利运行。
重要
eShopOnContainer 一直使用 Polly 库 并通过 类型化客户端 实现韧性,直到发布版本 3.0.0。 从版本 3.0.0 开始,HTTP 调用复原是使用 Linkerd 网格实现的,该网格以透明且可配置的方式处理 Kubernetes 群集中的重试,而无需在代码中处理这些问题。
Polly 库仍用于为数据库连接添加复原能力,特别是在启动服务时。
警告
本节中的所有代码示例和图像在使用 Linkerd 之前均有效,并且不会更新以反映当前实际代码。 因此,它们在本节的上下文中有意义。