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

Azure 上可持续工作负载的应用程序设计

生成新的或更新现有应用程序时,必须考虑解决方案如何影响气候,以及是否有改进和优化的方法。 了解优化代码和应用程序以便实现更可持续的应用程序设计的注意事项和建议。

重要

本文是 Azure Well-Architected可持续工作负载 系列的一部分。 如果不熟悉本系列,建议从 什么是可持续工作负载开始?

代码效率

对应用程序的需求可能会有所不同,必须考虑稳定利用率的方法,以防止资源过度使用或不足,这可能导致不必要的能源泄漏。

评估将整体架构移动到微服务体系结构

整体式应用程序通常作为一个单元进行缩放,只留出很少空间来仅缩放可能需要它的单个组件。

绿色软件基础一致性: 能源效率硬件效率

建议:

  • 评估 微服务体系结构 指南。
  • 微服务体系结构允许在峰值负载期间仅缩放必要的组件;确保纵向缩减或缩减空闲组件。 此外,它还可以减少部署整体式应用程序所需的开销和资源。
  • 请考虑此权衡:在减少所需的计算资源的同时,可能会增加网络上的流量,并且应用程序的复杂性可能会显著增加。
  • 请考虑其他权衡:迁移到微服务可能会导致额外的部署开销,部署管道中存在许多相似之处。 请仔细考虑整体体系结构与微服务体系结构所需的部署资源。
  • 此外,请阅读容器 化整体式应用程序

提高 API 效率

许多新式云应用程序旨在以异步方式在服务和组件之间处理许多消息。 请考虑用于对有效负载数据进行编码的格式。 应用程序需要传达多少信息,是否有空间减少聊天?

绿色软件基础一致性: 能源效率

建议:

确保软件向后兼容性,确保它在旧硬件上工作

考虑应用程序如何呈现信息。 应用程序是否需要以最高质量关键地处理所有内容,从而获得更高的带宽和处理? 在 UI 中降低组件质量以更好地实现可持续性目标方面是否有空间?

绿色软件基础对齐: 硬件效率

建议:

  • 支持更多最终用户使用者设备,例如较旧的浏览器和操作系统。 这种向后兼容性通过重用现有硬件来提高硬件效率,而无需对解决方案进行硬件升级。
  • 请考虑此折衷:如果最新的软件更新具有显著的性能改进,则使用较旧的软件版本可能不会更高效。

利用云本机设计模式

了解云原生设计模式有助于生成应用程序,无论它们是托管在 Azure 上还是在其他地方运行。 优化云应用程序的性能和成本也会降低其资源利用率,从而降低其碳排放量。

绿色软件基础一致性: 能源效率硬件效率

建议:

考虑使用断路器模式

考虑评估并阻止应用程序执行可能失败的操作。 重复的故障可能会导致开销和不必要的处理,可以通过适当的设计模式来避免这些开销和不必要的处理。

绿色软件基础一致性: 能源效率

建议:

  • 断路器可以充当可能失败的操作的代理,并应监视最近发生的故障数,并使用该信息决定是否继续操作。
  • 研究 断路器模式,然后考虑如何为应用程序 实现断路器模式
  • 请考虑使用 Azure Monitor 监视故障并设置警报。

优化代码以高效使用资源

使用低效代码部署的应用程序可能会对可持续性产生固有的影响。

绿色软件基础一致性: 能源效率硬件效率

建议:

  • 减少应用程序所需的 CPU 周期和资源数。
  • 使用优化且高效的算法和设计模式。
  • 请考虑 不要重复 (DRY) 原则。

针对异步访问模式进行优化

对应用程序的需求可能会有所不同,必须考虑稳定利用率的方法,以防止资源过度使用或不足,这可能导致不必要的能源泄漏。

绿色软件基础一致性: 能源效率

建议:

  • 不需要立即处理的队列和缓冲区请求,然后批量处理。 以这种方式设计应用程序有助于实现稳定的利用率,并帮助平展消耗以避免尖刻的请求。
  • 了解如何优化 异步访问模式

评估服务器端呈现与客户端呈现

确定在使用 UI 生成应用程序时是在服务器端还是客户端呈现。

绿色软件基础一致性: 能源效率硬件效率

建议:

  • 请考虑服务器端呈现的以下优势:

    • 当服务器的电源来自污染较小的替代方案时,而不是客户端的区域设置。
    • 当服务器上的硬件具有更好的处理能量比时。
    • 可以使用集中式缓存来减少多个不必要的呈现。
    • 当客户端设备具有有损链接时,减少浏览器到服务器的往返次数尤其重要。
    • 客户端设备较旧且 CPU 速度较慢时。 用户无需升级其设备以支持新式浏览器。
  • 请考虑客户端呈现的以下优势:

    • 当最终用户设备更适合时,将呈现责任推送到客户端。
    • 与至少呈现一次所有内容不同,仅呈现所需内容和请求内容更高效。
    • 无需服务器,因为可以依赖于静态存储。
    • 浏览器缓存用于客户端。

注意可持续性的 UX 设计

考虑工作负载的 UX 设计如何影响可持续性,并确定存在哪些选项来提高能源效率并减少不必要的网络负载、数据处理和计算资源。

绿色软件基础一致性: 能源效率

建议:

  • 请考虑减少要加载和呈现在页面上的组件数。
  • 确定应用程序是否可以呈现分辨率较低的图像和视频。
    • 不要将全尺寸图像呈现为浏览器正在调整大小的缩略图。
    • 使用全尺寸图像作为缩略图或调整大小的图像将传输更多数据、不必要的网络流量,以及由于图像大小调整和预渲染而导致的其他客户端 CPU 使用率。
  • 确保没有未使用的页面有助于最大程度地减少 UX 设计。
  • 考虑搜索和可查找性。 让用户更轻松地查找要查找的内容,有助于减少存储和检索的数据量。
  • 考虑提供更轻的 UI,使用更少的资源,降低对可持续性的影响,并为用户提供明智的选择。
  • 通过在深色模式下提供深色背景的应用和网站来节省能源。
  • 尽可能选择使用系统字体,以避免强制客户端下载其他字体,这会导致更多的网络负载。

更新旧代码

如果旧代码未在现代云基础结构上运行,或者未使用最新更新,请考虑升级或弃用旧代码。

绿色软件基础对齐: 硬件效率

建议:

  • 确定适合现代化低效的旧代码。
  • 查看是否有选项可以移动到无服务器或任何优化的 PaaS 选项。
  • 请考虑以下权衡:更新可能最终被弃用的旧代码可能会占用宝贵的时间。

后续步骤

查看应用程序平台的设计注意事项。