你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
性能效率权衡
无需过度预配即可满足其性能目标的工作负荷是有效的。 性能效率的目标是随时提供足够的供应来处理需求。 性能效率的关键策略包括正确使用代码优化、设计模式、容量规划和缩放。 清除性能目标并测试支撑着此支柱。
在协商工作负荷的性能目标和设计工作负荷以提高性能效率的过程中,请务必了解性能效率设计原则和性能效率设计清单中的建议如何影响其他支柱的优化目标。 某些性能效率决策可能会使某些支柱受益,但对其他要素构成权衡。 本文列出了在设计工作负荷体系结构和操作以提高效率时工作负荷团队可能会遇到的示例权衡。
性能效率与可靠性的权衡
权衡:减少复制和密度增加。 可靠性的基石是通过使用复制和限制故障的爆破半径来确保复原能力。
一种工作负荷,它通过将缩放延迟到最后一个负责任的时刻非常接近需求来实现效率,但容易受到不可预见的节点故障和缩放延迟的影响。
合并工作负荷资源可以使用多余的容量并提高效率。 但是,它会增加共置组件或应用程序平台中故障的爆破半径。
横向缩减或缩减以最大程度地减少剩余容量可能会导致因供应不足而导致服务中断的工作负荷在使用率高峰期间处于预配不足状态。
权衡:复杂性增加。 可靠性优先于简单性。
使用自动缩放来平衡工作负荷供应与需求之间的变化,会引入工作负荷拓扑中的可变性,并添加一个组件,该组件必须正常工作,使系统可靠。 自动缩放会导致触发更多应用程序生命周期事件,例如启动和停止。
数据分区和分片有助于避免大型或经常访问的数据集中的性能问题。 但是,这些模式的实现会增加复杂性,因为需要跨其他资源维护(最终)一致性。
对优化访问模式的数据进行非规范化可以提高性能,但它引入了复杂性,因为需要保持数据的多个表示形式保持同步。
以性能为中心的云设计模式有时需要引入其他组件。 使用这些组件会增加工作负荷的外围应用。 然后,必须使组件本身可靠,以使整个工作负荷保持可靠。 示例包括:
- 用于负载调配的消息总线,它引入了关键有状态组件。
- 自动缩放副本的负载均衡器,需要可靠的操作和副本登记。
- 将数据卸载到缓存,这需要可靠的缓存失效方法。
权衡:对活动环境进行测试和观察。 避免不必要的生产系统使用是一种自我保存和风险避免方法,用于可靠性。
活动环境中的性能测试(如使用综合事务)可能会导致由于测试操作或配置而导致故障。
工作负荷应通过应用程序性能监视(APM)系统进行检测,使团队能够从活动环境中学习。 APM 工具是在应用程序代码或托管环境中安装和配置的。 不当使用、超出限制或工具配置不当可能会损害其功能和维护,从而可能破坏可靠性。
性能效率与安全性的权衡
权衡:减少安全控制。 安全控制跨多个层建立,有时是冗余的,以提供深度防御。
一种性能优化策略是删除或绕过导致流延迟的组件或进程,尤其是在处理时间不合理时。 但是,此策略可能会危及安全性,并应附带全面的风险分析。 请开考虑以下示例:
删除传输中的加密或静态加密以提高传输速度会使数据面临潜在的完整性或机密性泄露。
删除或减少安全扫描或检查工具以减少处理时间可能会损害这些工具保护的机密性、完整性或可用性。
减少安全修补以限制性能影响的频率可能会使工作负荷更容易受到新兴威胁的影响。
从网络流中删除防火墙规则以提高网络延迟可能会允许不需要的通信。
最大程度地减少数据验证或内容安全检查,以便更快地处理数据处理可能会损害数据完整性,尤其是在输入是恶意的情况下。
例如,在初始化向量(IV)中使用加密或哈希算法中的弱量会更有效,但使加密更容易破解。
权衡:增加工作负荷外围应用。 安全性优先考虑减少和包含的外围应用,以最大程度地减少攻击途径并减少安全控制的管理。
以性能为中心的云设计模式有时需要引入其他组件。 这些组件会增加工作负荷的外围应用。 必须保护新组件,可能采用系统中尚未使用的方式,并且它们通常会增加合规性范围。 请考虑以下常见添加的组件:
用于负载调配的消息总线
自动缩放副本的负载均衡器
将数据卸载到缓存、应用程序分发网络或内容分发网络
将处理卸载到后台作业甚至客户端计算
权衡:删除分段。 安全支柱优先考虑强分段,以实现精细的安全控制并减少爆炸半径。
通过增加密度共享资源是提高效率的一种方法。 示例包括多租户方案,或在通用应用程序平台上的体系结构中组合不同的应用程序。 密度增加可能会导致以下安全问题:
增加了未经授权的横向从一个租户移动到另一个租户的风险。
违反最低特权原则的共享工作负荷标识,并掩盖访问日志中的单个审核线索。
外围安全控制(例如网络规则)减少以涵盖所有共置组件,使各个组件具有比必要更多的访问权限。
由于爆炸半径较大,应用程序平台主机或单个组件遭到入侵。 这种增加是由于更容易访问共同定位的组件造成的。
由于共享主机,共同定位不同的组件,导致更多组件在符合性范围内。
通过成本优化来权衡性能效率
权衡:供过于求。 成本优化和性能效率都优先提供足够的供应来满足需求。
当团队尝试缓解工作负荷中的性能问题时,过度预配是一种风险。 过度预配的一些常见原因包括:
- 初始容量规划被误判,因为团队只关注峰值负载估计,忽视了工作负荷设计中峰值平滑的策略。
- 在事件响应的故障排除步骤中纵向扩展或横向扩展资源。
自动缩放配置可能不正确。 配置错误自动缩放的一些示例包括:
- 在需求变化最少的情况下纵向扩展或延长冷却期可能会产生比需求所需的成本更高的成本。
- 使用没有设置上限的自动缩放可能会导致系统故障或滥用导致不受控制的增长,并超出预期的工作负荷要求。
扩展到多个区域可以通过使工作负荷更接近用户来提高性能,并可以避免临时资源容量约束。 但是,该拓扑还增加了复杂性和资源重复。
权衡:更多组件。 一种成本优化技术是通过增加密度、删除重复和共同定位功能来整合少量资源。
以性能为中心的云设计模式有时需要引入额外的组件。 这些额外的组件通常会导致工作负荷的总体成本增加。 例如,可以包含用于将负载调配或卸载任务的消息总线添加到应用程序或内容分发网络,以提高响应时间。
资源分段允许工作负荷的不同部分具有不同的性能特征,从而为每个段启用独立的优化。 但是,它可以增加总拥有成本,因为它需要多个优化的段,而不是单个通用组件。
权衡:增加对不符合功能要求的项目的投资。 成本优化的一种方法是评估部署的任何解决方案提供的值。
高级服务和 SKU 可帮助工作负荷满足性能目标。 这些服务通常成本更高,可以提供额外的功能。 如果许多高级功能未专门用于满足性能目标,它们可能会被低估。
高性能工作负荷需要遥测数据才能进行可观测性,必须传输和存储这些数据。 正在收集的性能遥测的增加可能会增加遥测数据传输和存储的成本。
性能测试活动增加了与生产系统价值无关的成本。 性能测试成本的示例包括:
- 实例化专用于以性能为中心的测试的环境。
- 使用专用性能工具。
- 花时间运行测试。
培训团队成员执行专门的性能优化任务或为性能优化服务付费会增加工作负荷的成本。
性能效率与卓越运营权衡
权衡:减少可观测性。 为工作负荷提供有意义的警报并帮助确保事件响应成功,必须具有可观测性。
减少日志和指标量以减少收集遥测所花费的处理时间,而不是其他任务可减少系统的总体可观测性。 生成的可观测性降低的一些示例包括:
- 它限制用于生成有意义的警报的数据点。
- 这会导致事件响应活动的覆盖范围差距。
- 它限制了安全敏感或符合性相关的交互和边界的可观测性。
实现性能设计模式时,工作负荷的复杂性通常会增加。 组件将添加到关键流。 工作负荷监视策略和性能监视必须包括这些组件。 当流跨越多个组件或应用程序边界时,监视该流性能的复杂性会增加。 流性能需要与所有互连组件相关联。
权衡:操作的复杂性增加。 复杂的环境具有更复杂的交互,以及常规、即席和紧急操作的负面影响的可能性更高。
通过增加密度来提高操作任务的风险来提高性能效率。 单个进程中的错误可能具有较大的爆破半径。
随着性能设计模式的实现,它们会影响备份、密钥轮换和恢复策略等操作过程。 例如,当团队尝试确保这些任务不影响数据一致性时,数据分区和分片可能会使日常任务复杂化。
权衡:文化压力。 卓越运营植根于无责、尊重和持续改进的文化中。
对性能问题进行根本原因分析可识别需要更正的进程或实现中的缺陷。 团队应考虑练习是一个学习机会。 如果团队成员被归咎于问题,士气可能会受到影响。
例程和即席进程可能会影响工作负荷性能。 通常最好在非高峰时段执行这些活动。 但是,对于负责或熟练执行这些任务的团队成员来说,非高峰时段可能不方便或非正常时间。
相关链接
探索其他支柱的权衡: