此内容已过时。此版本的架构完善的框架现在可在以下位置找到: https://docs.aws.amazon.com/zh_cn/wellarchitected/2022-03-31/framework/reliability.html

可靠性

可靠性 支柱包括 工作负载按照预期正确并且一致地执行其预期功能的能力,包括在其整个生命周期内运营和测试工作负载的能力。

可靠性支柱概述了设计原则、最佳实践和问题。如需有关具体实施的说明性指导,请参阅可靠性支柱白皮书

设计原则

云中的 可靠性 有 five 项设计原则:

定义

云中的 可靠性 有 four 个最佳实践领域:

要实现可靠性,您必须从基础入手,而基础是服务配额和网络拓扑适应工作负载的环境。在设计时,分布式系统的工作负载架构必须能够预防与减少故障。工作负载必须处理需求或要求的变化,而且它的设计必须能够检测故障,并自动加以修复。

最佳实践

基础

基础要求是指其范围超出单个工作负载或项目的因素。在为任何系统设计架构之前,您应确定影响可靠性的基本要求。例如,您必须为数据中心提供足够的网络带宽。

在您使用 AWS 时,这些基础要求中的大部分已经包含在内,并且可以根据需要进行处理。云环境在设计层面拥有几乎无限的资源,因此 AWS 要负责满足对联网和计算容量的需求,让您可以根据需求随意更改资源大小和分配。

以下问题主要针对 可靠性 的准备阶段。

REL 1: 如何管理服务配额和限制?
REL 2: 如何规划网络拓扑?

基于云的工作负载架构存在服务配额(也被称作服务限制)。这些配额的存在目的在于,防止您意外预置超出必要量的资源,限制 API 操作的请求速率,从而避免服务遭到滥用。工作负载通常存在于多个环境中。您必须为所有工作负载环境监控和管理这些配额。其中包括多个云环境(可公开访问的云和私有云),可能还包括您的现有数据中心基础设施。相关计划必须涵盖网络注意事项,如系统内部和系统间连接、公有 IP 地址管理、私有 IP 地址管理以及域名解析。

工作负载架构

可靠的工作负载始于前期的软件和基础设施设计决策。您的架构选择将影响所有五个架构完善支柱的工作负载行为。针对可靠性,您必须遵循特定的模式。

使用 AWS 时,工作负载开发人员可以选择要使用的语言和技术。AWS 开发工具包通过为 AWS 服务提供特定于语言的 API,省去了复杂的编码过程。通过这些开发工具包,以及语言选择,开发人员可以实现此处列出的可靠性最佳实践。开发人员还可以访问 Amazon Builders' Library,阅读并了解 Amazon 构建和运营软件的方法。

以下问题主要针对 可靠性 的准备阶段。

REL 3: 如何设计工作负载服务架构?
REL 4: 您如何在分布式系统中设计交互以预防发生故障?
REL 5: 您如何在分布式系统中进行交互设计,从而缓解或经受住故障影响?

分布式系统依赖于通信网络实现组件(例如服务器或服务)的互联。尽管这些网络中存在数据丢失或延迟,但是您的工作负载必须可靠运行。分布式系统组件的运行方式不得对其他组件或工作负载产生负面影响。

变更管理

必须提前为您的工作负载或其环境的更改做好准备,使其可以实现工作负载的可靠操作。此类更改包括,从外部施加到工作负载上的更改(如,需求高峰),以及内部更改(如功能部署和安全补丁)。

使用 AWS,您可以监控工作负载的行为并自动对 KPI 做出响应。例如,您的工作负载可以在某项工作负载用户增加时,添加更多服务器。您可以控制谁有权进行工作负载变更并审核这些变更的历史记录。

以下问题主要针对 可靠性 的准备阶段。

REL 6: 如何监控工作负载资源?
REL 7: 您如何设计工作负载,以适应不断变化的需求?
REL 8: 如何实施更改?

当您构建工作负载来根据需求变化自动添加和删除资源时,这不仅可以提高可靠性,还可以确保业务成功不至于带来额外负担。借助既有的监控功能,当 KPI 偏离预期标准时,系统会自动向您的团队发送提醒。通过自动记录环境变更,您可以审核并快速识别可能影响可靠性的操作。对变更管理的控制确保您可以实施可提供所需的可靠性的规则。

故障管理

在任何具备一定复杂度的系统中,发生故障在意料之中。可靠性要求您的工作负载知晓故障的发生,并采取相应措施以避免对可用性产生影响。工作负载必须既能承受故障,又能自动解决问题。

使用 AWS,您可以发挥自动化优势对监控数据做出响应。例如,当特定指标超过阈值时,您可以触发自动操作来解决问题。此外,与其尝试诊断并修复作为生产环境一部分的失败资源,您可以将其替换为新的资源,并对被替换的旧有资源进行故障排查。由于云使您能够以低成本构建整个系统的临时版本,您可以使用自动化测试来验证完整的恢复流程。

以下问题主要针对 可靠性 的准备阶段。

REL 9: 如何备份数据?
REL 10: 如何使用故障隔离来保护您的工作负载?
REL 11: 如何将您的工作负载设计为可承受组件故障的影响?
REL 12: 如何测试可靠性?
REL 13: 如何规划灾难恢复 (DR)?

请定期备份数据并测试备份文件,以确保您可以从逻辑和物理错误中恢复。管理故障的关键在于自动且频繁地测试工作负载以致其出现故障,然后观察它们如何恢复。请定期执行此操作,并确保在工作负载发生重大变更后也会触发此测试。主动跟踪 KPI(如恢复时间目标 (RTO) 和恢复点目标 (RPO))以评估工作负载的弹性(特别是在故障测试场景中)。跟踪 KPI 将有助于您识别和减少单点故障。充分测试您的工作负载恢复流程,确保可以恢复所有数据并继续为您的客户提供服务,即使面对持续存在的问题也是如此。您的恢复流程应该与您的标准生产流程一样完备而有效。

资源

请参阅以下资源,详细了解有关 可靠性 的最佳实践。

Reliability Pillar: AWS Well-Architected
AWS Well-Architected Reliability Labs
The Amazon Builders' Library: How Amazon builds and operates software
AWS Documentation
AWS Global Infrastructure
AWS Auto Scaling: How Scaling Plans Work
Implementing Microservices on AWS
What Is AWS Backup?