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

性能效率权衡

在不过度预配的情况下满足其性能目标的工作负荷是高效的。 性能效率的目标是提供足够的供应,以便随时处理需求。 提高性能效率的关键策略包括正确使用代码优化、设计模式、容量规划和缩放。 明确性能目标和测试是这一支柱的基础。

在协商工作负荷的性能目标并设计工作负荷以提升性能效率的过程中,请务必了解 性能效率设计原则 和“ 性能效率设计评审清单 ”中的建议如何影响其他支柱的优化目标。 某些性能效率决策可能会使某些支柱受益,但对另一些支柱有利。 本文列出了工作负载团队在设计工作负载体系结构和操作以提升性能效率时可能遇到的示例权衡。

性能效率与可靠性的权衡

权衡:减少复制并提高密度。 可靠性的基石是使用复制来确保复原能力,并限制故障的爆炸半径。

  • 通过将缩放延迟到最后一个负责时刻来实现效率的工作负荷非常符合需求,但容易受到不可预见的节点故障和缩放延迟的影响。

  • 合并工作负载资源可能会使用多余的容量并提高效率。 但是,它会增加共置组件或应用程序平台中故障的爆炸半径。

  • 在使用率高峰期间,纵向缩减或缩减以最大程度地减少多余的容量可能会使工作负荷预配不足,从而导致由于供应不足而导致服务中断。

权衡:复杂性增加。 可靠性优先于简单性。

  • 使用自动缩放来平衡工作负载供应与需求,会引入工作负载拓扑的可变性,并添加一个组件,该组件必须正常工作才能使系统可靠。 自动缩放会导致触发更多应用程序生命周期事件,例如启动和停止。

  • 数据分区和分片有助于避免大型数据集或频繁访问数据集的性能问题。 但是,这些模式的实现会增加复杂性,因为 (最终) 一致性需要跨其他资源保持。

  • 针对优化的访问模式对数据进行非规范化可以提高性能,但这会带来复杂性,因为数据的多个表示形式需要保持同步。

  • 以性能为中心的云设计模式有时需要引入其他组件。 使用这些组件会增加工作负载的表面面积。 然后,组件本身必须可靠,才能使整个工作负载保持可靠。 示例包括:

    • 用于负载均衡的消息总线,它引入了关键的有状态组件。
    • 自动缩放副本的负载均衡器,需要可靠的操作和副本登记。
    • 将数据卸载到缓存,这需要可靠的缓存失效方法。

权衡:对活动环境的测试和观察。 避免不必要的使用生产系统是一种自我保护的可靠性方法。

  • 使用综合事务等活动环境中的性能测试存在由于测试操作或配置而导致故障的风险。

  • 应使用应用程序性能监视 (APM) 系统来检测工作负载,使团队能够从活动环境中学习。 APM 工具在应用程序代码或托管环境中安装和配置。 不当使用、超出限制或错误配置工具可能会损害其功能和维护,从而可能降低可靠性。

性能效率与安全性的权衡

权衡:减少安全控制。 跨多个层建立安全控制(有时是冗余的),以提供深度防御。

一种性能优化策略是删除或绕过导致流延迟的组件或进程,尤其是在处理时间不合理时。 但是,此策略可能会危及安全性,并应进行彻底的风险分析。 请开考虑以下示例:

  • 删除传输中或静态加密以提高传输速度会使数据面临潜在的完整性或机密性违规。

  • 删除或减少安全扫描或检查工具以缩短处理时间可能会损害这些工具保护的机密性、完整性或可用性。

  • 降低安全修补频率以限制性能影响可能会使工作负载更容易受到新出现的威胁的影响。

  • 从网络流中删除防火墙规则以提高网络延迟可能会允许不需要的通信。

  • 最大程度地减少数据验证以加快数据处理速度可能会损害数据完整性,尤其是在输入是恶意的时。

  • 例如,在初始化向量 (IV) 中使用更少的加密或哈希算法的熵会更有效,但会使加密更容易破解。

权衡:增加工作负载外围应用。 安全性优先考虑减少和包含的表面区域,以最大程度地减少攻击途径并减少安全控件的管理。

以性能为中心的云设计模式有时需要引入其他组件。 这些组件会增加工作负载的表面积。 新组件必须受到保护,可能采用系统中尚未使用的方式进行保护,并且它们通常会增加符合性范围。 请考虑以下常见添加的组件:

  • 用于负载调配的消息总线

  • 自动缩放副本的负载均衡器

  • 将数据卸载到缓存、应用程序交付网络或内容分发网络

  • 将处理卸载到后台作业甚至客户端计算

权衡:删除分段。 安全支柱优先考虑强分段,以实现细粒度的安全控制并减少爆炸半径。

共享资源是提高效率的一种方法。 它会增加密度以优化容量使用。 示例包括多租户方案,或在通用应用程序平台上的体系结构中组合不同的应用程序。 密度增加可能会导致以下安全问题:

  • 增加了从一个租户到另一个租户的未经授权的横向移动的风险。

  • 共享工作负载标识违反了最低特权原则,并掩盖了访问日志中的单个审核线索。

  • 外围安全控制(例如网络规则)缩减为涵盖所有共置组件,为单个组件提供比必需的更多的访问权限。

  • 由于爆炸半径较大,应用程序平台主机或单个组件遭到入侵。 这种增加的原因是更容易访问并置的组件。

  • 由于共享主机,将不同的组件并置导致更多组件在合规性范围内。

性能效率与成本优化权衡

权衡:供过于求。 成本优化和性能效率都优先提供足够的供应量来满足需求。

  • 当团队尝试缓解工作负荷中的性能问题时,过度预配存在风险。 过度预配的一些常见原因包括:

    • 初始容量计划被误判,因为团队只关注峰值负载估计,而忽略了工作负荷设计中峰值平滑的策略。
    • 在事件响应的故障排除步骤中纵向扩展或缩小资源。
  • 自动缩放可能配置错误。 错误配置自动缩放的一些示例包括:

    • 在需求变化最少的情况下纵向扩展或延长冷却时间可能会产生比需求更高的成本。
    • 在没有设置上限的情况下使用自动缩放可能会导致由于系统故障或滥用而导致无法控制的增长,并超出预期的工作负载要求。
  • 扩展到多个区域可以通过使工作负载更接近用户来提高性能,并可以避免临时资源容量限制。 但是,它还会增加复杂性和资源重复。

权衡:更多组件。 一种成本优化技术是通过增加密度、删除重复和并置功能来合并较少数量的资源。

  • 以性能为中心的云设计模式有时需要引入额外的组件。 这些额外的组件通常会导致工作负荷的总体成本增加。 例如,可以包含用于负载均衡或将任务卸载到应用程序或内容分发网络的消息总线,以缩短响应时间。

  • 资源分段允许工作负荷的不同部分具有不同的性能特征,从而为每个段启用独立优化。 但是,它可能会增加总拥有成本,因为它需要多个优化的段,而不是单个通用化组件。

权衡:增加对不符合功能要求的项目的投资。 成本优化的一种方法是评估部署的任何解决方案提供的价值。

  • 高级服务和 SKU 可帮助工作负载满足性能目标。 这些服务通常成本更高,并且可以提供额外的功能。 如果许多高级功能未专门用于实现性能目标,则它们可能未得到充分利用。

  • 高性能工作负载需要遥测数据才能进行传输和存储,以确保可观测性。 正在收集的性能遥测的增加可能会增加遥测数据传输和存储的成本。

  • 性能测试活动会增加与生产系统价值无关的成本。 性能测试成本的示例包括:

    • 实例化专用于以性能为中心的测试的环境。
    • 使用专用性能工具。
    • 花时间运行测试。
  • 培训团队成员以执行专门的性能优化任务或为性能优化服务付费会增加工作负荷的成本。

性能效率与卓越运营的权衡

权衡:可观测性降低。 为工作负载提供有意义的警报并帮助确保事件响应成功,必须具有可观测性。

  • 减少日志和指标量以减少收集遥测数据而不是其他任务所花费的处理时间会降低系统的整体可观测性。 生成的可观测性降低的一些示例包括:

    • 它限制用于生成有意义的警报的数据点。
    • 这会导致事件响应活动的覆盖范围差距。
    • 它限制了安全敏感或合规性敏感交互和边界的可观测性。
  • 实现性能设计模式时,工作负载的复杂性通常会增加。 组件将添加到关键流中。 工作负荷监视策略和性能监视必须包括这些组件。 当流跨越多个组件或应用程序边界时,监视该流的性能的复杂性会增加。 流性能需要在所有互连的组件之间关联。

权衡:增加了操作的复杂性。 复杂的环境具有更复杂的交互,并且更有可能受到常规、临时和紧急操作的负面影响。

  • 通过增加密度提高性能效率会提高操作任务的风险。 单个过程中的错误可能具有较大的爆炸半径。

  • 在实现性能设计模式时,它们会影响备份、密钥轮换和恢复策略等操作过程。 例如,当团队尝试确保这些任务不会影响数据一致性时,数据分区和分片可能会使日常任务复杂化。

权衡:文化压力。 卓越运营植根于无责备、尊重和持续改进的文化。

  • 对性能问题进行根本原因分析可识别需要更正的流程或实现中的缺陷。 团队应将练习视为学习机会。 如果团队成员被指责为问题,士气可能会受到影响。

  • 例程和临时过程可能会影响工作负载性能。 通常认为最好在非高峰时段执行这些活动。 但是,对于负责或熟练执行这些任务的团队成员来说,非高峰时段可能不方便或超出正常时间。

了解其他支柱的权衡: