你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本部分中的设计原则文章提供了一个基础,可帮助你构建能够承受故障、按需缩放和业务需求发展云应用程序。 无论是设计新系统、现代化旧应用程序还是计划生产工作负荷,这些相互关联的原则都有助于做出有关可靠性、性能和可维护性的明智决策。 它们共同形成了一种全面的云原生应用程序设计方法,以平衡技术卓越与业务价值。
若要使应用程序更具可缩放性、可复原性和可管理性,请遵循这些设计原则。
核心原则
设计自我修复功能。 设计应用程序以检测故障、正常响应并自动恢复。 在分布式系统中,故障是不可避免的。 若要隔离故障和维护系统可用性,请实现重试逻辑、健康检查终结点监视、断路器和舱壁模式。
使所有事物变得冗余。 在应用程序中生成冗余,以避免单一故障点。 使用负载均衡器、多个实例、数据库副本和多区域或多区域部署。 针对符合业务需求和风险容忍度的冗余级别进行设计。
最大程度地减少协调。 最大程度地减少应用程序服务之间的协调,以实现可伸缩性。 使用异步通信的分离组件,在适当情况下接受最终一致性,并应用域事件来同步状态,而无需紧密耦合。
设计以实现横向扩展。通过根据需求变化添加或删除实例,设计应用程序以实现水平扩展。 避免会话粘性、识别瓶颈、通过缩放要求分解工作负荷,并使用基于实时指标的自动缩放来高效处理变量负载。
围绕限制进行分区。 使用分区来解决数据库、网络和计算限制。 水平、垂直或功能分区数据,并设计分区键以避免热点。 考虑在多个级别(包括数据库、队列和计算资源)进行分区。
操作原则
针对运营的设计。 设计应用程序,为运营团队提供部署、监视和事件响应所需的工具。 实现全面的日志记录、分布式跟踪、标准化指标和自动化管理任务,以实现有效的运营监督。
使用托管服务。 使用平台即服务(PaaS),而不是基础结构即服务(IaaS)。 托管服务可降低运营开销,提供内置的缩放功能,并允许团队专注于应用程序逻辑而不是基础结构维护。
使用标识服务。 使用托管标识平台,例如 Microsoft Entra ID,而不是构建或运营您自己的标识系统。 托管解决方案提供凭据存储、身份验证功能、联合身份验证功能和符合行业标准。
战略原则
为演变而设计。 设计持续创新,因为所有成功的应用程序都会随时间而变化。 强制松散耦合,封装域知识,使用异步消息传送,并公开定义完善的 API,其中包括适当的版本控制,以实现独立的服务演变。
为业务需求而构建。 根据业务需求做出设计决策。 定义明确的目标,例如恢复时间目标(RTO)、记录服务级别协议(SLA)和服务级别目标(SLA)、围绕业务域的模型应用程序,以及规划增长,同时平衡功能和非功能要求。
对服务执行故障模式分析。 系统地识别系统中的潜在故障点和计划恢复策略。 若要从头开始构建复原能力,请在体系结构和设计阶段执行故障模式分析(FMA)。 按风险和影响对每个故障模式进行评分,然后确定适当的响应和恢复机制。
应用这些原则
这些原则共同创建可复原且可缩放的应用程序:
从业务要求开始 ,了解要构建的内容和原因。
通过实现自我修复功能和冗余来进行故障容错设计。
规划扩展 使用水平扩展、分区和最小协调来实现。
使用 Azure 服务 减少运营复杂性,并专注于业务逻辑。
通过适当的监控、日志记录和自动化来支持运作。
为变革而构建,以确保应用程序可以随业务需求而发展。