你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 应用程序的设计原则

本部分中的设计原则文章提供了一个基础,可帮助你构建能够承受故障、按需缩放和业务需求发展云应用程序。 无论是设计新系统、现代化旧应用程序还是计划生产工作负荷,这些相互关联的原则都有助于做出有关可靠性、性能和可维护性的明智决策。 它们共同形成了一种全面的云原生应用程序设计方法,以平衡技术卓越与业务价值。

若要使应用程序更具可缩放性、可复原性和可管理性,请遵循这些设计原则。

核心原则

  • 设计自我修复功能。 设计应用程序以检测故障、正常响应并自动恢复。 在分布式系统中,故障是不可避免的。 若要隔离故障和维护系统可用性,请实现重试逻辑、健康检查终结点监视、断路器和舱壁模式。

  • 使所有事物变得冗余。 在应用程序中生成冗余,以避免单一故障点。 使用负载均衡器、多个实例、数据库副本和多区域或多区域部署。 针对符合业务需求和风险容忍度的冗余级别进行设计。

  • 最大程度地减少协调。 最大程度地减少应用程序服务之间的协调,以实现可伸缩性。 使用异步通信的分离组件,在适当情况下接受最终一致性,并应用域事件来同步状态,而无需紧密耦合。

  • 设计以实现横向扩展。通过根据需求变化添加或删除实例,设计应用程序以实现水平扩展。 避免会话粘性、识别瓶颈、通过缩放要求分解工作负荷,并使用基于实时指标的自动缩放来高效处理变量负载。

  • 围绕限制进行分区。 使用分区来解决数据库、网络和计算限制。 水平、垂直或功能分区数据,并设计分区键以避免热点。 考虑在多个级别(包括数据库、队列和计算资源)进行分区。

操作原则

  • 针对运营的设计。 设计应用程序,为运营团队提供部署、监视和事件响应所需的工具。 实现全面的日志记录、分布式跟踪、标准化指标和自动化管理任务,以实现有效的运营监督。

  • 使用托管服务。 使用平台即服务(PaaS),而不是基础结构即服务(IaaS)。 托管服务可降低运营开销,提供内置的缩放功能,并允许团队专注于应用程序逻辑而不是基础结构维护。

  • 使用标识服务。 使用托管标识平台,例如 Microsoft Entra ID,而不是构建或运营您自己的标识系统。 托管解决方案提供凭据存储、身份验证功能、联合身份验证功能和符合行业标准。

战略原则

  • 为演变而设计。 设计持续创新,因为所有成功的应用程序都会随时间而变化。 强制松散耦合,封装域知识,使用异步消息传送,并公开定义完善的 API,其中包括适当的版本控制,以实现独立的服务演变。

  • 为业务需求而构建。 根据业务需求做出设计决策。 定义明确的目标,例如恢复时间目标(RTO)、记录服务级别协议(SLA)和服务级别目标(SLA)、围绕业务域的模型应用程序,以及规划增长,同时平衡功能和非功能要求。

  • 对服务执行故障模式分析。 系统地识别系统中的潜在故障点和计划恢复策略。 若要从头开始构建复原能力,请在体系结构和设计阶段执行故障模式分析(FMA)。 按风险和影响对每个故障模式进行评分,然后确定适当的响应和恢复机制。

应用这些原则

这些原则共同创建可复原且可缩放的应用程序:

  • 从业务要求开始 ,了解要构建的内容和原因。

  • 通过实现自我修复功能和冗余来进行故障容错设计。

  • 规划扩展 使用水平扩展、分区和最小协调来实现。

  • 使用 Azure 服务 减少运营复杂性,并专注于业务逻辑。

  • 通过适当的监控、日志记录和自动化来支持运作。

  • 为变革而构建,以确保应用程序可以随业务需求而发展。