静态稳定性 - AWS故障隔离边界

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

静态稳定性

AWS服务最重要的弹性特征之一就是所AWS谓的静态稳定性。该术语的含义是,系统在静态状态下运行,并且在依赖关系出现故障或不可用期间无需进行更改即可继续正常运行。我们做到这一点的一种方法是防止服务中的循环依赖,因为循环依赖可能会阻止其中一个服务成功恢复。我们这样做的另一种方法是维护现有状态。我们考虑了这样一个事实,即从统计学上讲,控制平面比数据平面更有可能出现故障。尽管数据平面通常依赖于来自控制平面的数据,但即使面对控制平面损坏,数据平面仍会保持其现有状态并继续工作。数据平面对资源的访问一旦配置,就不依赖于控制平面,因此不受任何控制平面损坏的影响。换句话说,即使创建、修改或删除资源的能力受到损害,现有资源仍然可用。这使得AWS数据平面可以静态稳定地抵御控制平面中的损伤。你可以实现不同的模式,以保持静态稳定,抵御不同类型的依赖失败。

可以在 Amazon EC2 中找到静态稳定性的示例。EC2 实例启动后,它与数据中心的物理服务器一样可用。它不依赖任何控制平面 API 来保持运行或在重启后重新开始运行。VPC、Amazon S3 存储桶和对象以及 Amazon EBS 卷等其他AWS资源也具有相同的属性。

静态稳定性是一个在AWS设计其服务时根深蒂固的概念,但它也是一种可供客户使用的模式。实际上,以弹性方式使用不同类型AWS服务的大部分最佳实践指南是为生产环境实现静态稳定性。最可靠的恢复和缓解机制是那些需要最少更改即可实现恢复的机制。预先配置额外容量有助于实现静态稳定性,而不是依赖 EC2 控制平面启动新的 EC2 实例来从出现故障的可用区中恢复。因此,消除恢复路径中对控制平面(实现资源变更的 API)的依赖有助于生成更具弹性的工作负载。有关静态稳定性、控制平面和数据平面的更多详细信息,请参阅 Amazon Builders 库文章使用可用区的静态稳定性