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

可靠性权衡

可靠的工作负载始终满足其定义的可靠性目标。 它应达到已建立的复原目标,最好是绕过影响可靠性的事件。 但是,实际上,工作负载必须容忍和控制此类事件的影响,并在主动故障期间将操作维持在预定的级别。 即使在发生灾难期间,可靠的工作负载也必须在给定时间段内恢复到特定状态,这两种状态都由利益干系人达成一致。 使你能够实现快速检测和恢复的事件响应计划至关重要。

在工作负荷的设计阶段,需要考虑基于 可靠性设计原则 的决策以及 可靠性设计评审清单 中的建议如何影响其他支柱的目标和优化。 某些决策可能有利于某些支柱,但对其他支柱构成权衡。 本文介绍工作负载团队在为可靠性设计工作负载体系结构和操作时可能遇到的权衡示例。

可靠性与安全性的权衡

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

  • 可靠性通常通过复制获得。 复制可以在组件级别、数据级别甚至地理级别发生。 根据设计,副本会增加工作负荷的外围应用。 从安全角度来看,首选缩小和包含的外围应用,以最大程度地减少潜在攻击途径并简化安全控制措施的管理。

  • 同样,灾难恢复解决方案(如备份)会增加工作负载的外围应用。 但是,它们通常与工作负载的运行时隔离。 这需要实现其他安全控制,这些控制可能特定于灾难恢复解决方案。

  • 为了达到可靠性目标,体系结构可能需要其他组件,从而增加外围应用。 例如,可以添加消息总线以使请求具有复原能力。 这种增加的复杂性通过添加需要保护的新组件(可能采用系统中尚未使用的方式)来增加工作负载的外围应用。 通常,这些组件附带额外的代码和库,以支持它们的使用或常规可靠性模式,这也增加了应用程序的外围应用。

权衡:绕过安全控制。 安全支柱建议所有控件在正常和有压力的系统中保持活动状态。

  • 当工作负载遇到在活动事件响应下处理的可靠性事件时,紧急性可能会给工作负载团队带来压力,迫使他们绕过针对常规访问进行优化的安全控制。

  • 故障排除活动可能会导致团队暂时禁用安全协议,使本已紧张的系统可能面临额外的安全风险。 还有一种风险,即安全协议不会立即重新建立。

  • 安全控件的精细实现(如基于角色的访问控制分配或防火墙规则)会引入配置复杂性和敏感度,从而增加错误配置的可能性。 通过使用广泛的规则来缓解这种潜在的可靠性影响会削弱所有三零信任体系结构原则。

权衡:旧软件版本。 安全支柱鼓励对供应商的安全修补程序采用“获取最新、保持最新”的方法。

  • 应用安全修补程序或软件更新可能会中断目标组件,导致软件更改期间不可用。 延迟或避免修补可能会避免潜在的可靠性风险,但会使系统不受不断演变的威胁的保护。

  • 上述注意事项也适用于工作负载的代码。 例如,它适用于使用旧库的应用程序代码和使用旧基础映像的容器。 如果更新和部署应用程序代码被视为未加考虑的可靠性风险,则随着时间的推移,应用程序会面临其他安全风险。

成本优化的可靠性权衡

权衡:增加实现冗余或浪费。 成本优化的工作负载可最大程度地减少未充分利用的资源,并避免过度预配资源。

  • 复制是实现可靠性的关键策略。 具体而言,策略是有足够的复制来处理给定数量的并发节点故障。 对更多并发节点故障的容忍度要求更高的副本 (replica) 计数,这会导致成本增加。

  • 过度预配是另一种技术,用于吸收系统上的意外负载,否则可能会导致可靠性问题。 任何未利用的超额容量都被视为浪费。

  • 如果工作负荷使用的灾难恢复解决方案过于满足工作负载的恢复点和时间目标,则过多会导致成本增加,因为浪费。

  • 工作负载部署本身是可靠性影响的潜在来源,部署时冗余通常通过蓝/绿等部署策略来缓解这种影响。 在安全部署期间,这种暂时性的资源重复通常会在这些期间增加工作负荷的总成本。 成本随着部署频率的增加而增加。

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

  • 为了实现可靠性,系统需要可观测性。 监视系统需要可观测性数据传输和收集。 随着监视功能的增加,数据的频率和数据量也增加,从而导致额外的成本。

  • 工作负载中的可靠性要求进行测试和演练。 设计和运行测试需要花费时间,并且可能需要专门的工具,这会产生成本。

  • 具有高可用性目标的工作负载通常具有快速响应过程,要求技术团队成员参与正式的待命轮换。 此过程会产生额外的人员成本和失去的机会成本,因为关注可能会定向到其他地方。 它还会产生管理流程所需的潜在工具成本。

  • 与技术提供商签订的支持合同是可靠工作负载的关键组成部分。 由于支持级别过度预配而未利用的支持合同会产生浪费。

可靠性权衡与卓越运营

权衡:增加了操作复杂性。 卓越运营(如可靠性本身)优先考虑简单性。

  • 可靠性通常会增加工作负荷的复杂性。 随着工作负荷复杂性的增加,工作负载的操作元素也会增加,以支持在部署协调和配置外围应用方面添加的组件和流程。

  • 为工作负载制定全面的监视策略是卓越运营的关键部分。 在体系结构中引入其他组件以实现可靠性设计模式,可以管理更多数据源,从而增加实现分布式跟踪和可观测性的复杂性。

  • 使用多个区域来克服单区域资源容量限制和/或实现主动/主动体系结构会增加工作负载操作管理的复杂性。 这种复杂性是由管理多个区域以及管理它们之间的数据复制的需要造成的。

权衡:加大了培养团队知识和意识的力度。 卓越运营支柱建议保留和维护过程和拓扑的文档存储库。

  • 随着工作负载通过添加可靠性组件和模式变得更加可靠,维护操作过程和项目文档需要更多时间。

  • 随着工作负载中的组件数的增加,训练变得更加复杂。 这种复杂性会影响加入所需的时间,并增加跟踪产品路线图和服务级别指导所需的知识。

可靠性与性能效率的权衡

权衡:延迟增加。 性能效率要求系统实现用户和数据流的性能目标。

  • 可靠性模式通常包含数据复制,以幸存副本 (replica) 故障。 复制为可靠的数据写入操作引入了额外的延迟,这会占用特定用户或数据流的部分性能预算。

  • 可靠性有时采用各种形式的资源均衡来将负载分发或重新分发给正常副本。 用于均衡的专用组件通常会影响正在平衡的请求或进程的性能。

  • 跨地理边界或可用性区域分布组件以在限定范围内的影响中幸存,会在跨这些可用性边界的组件之间的通信中引入网络延迟。

  • 广泛的过程用于观察工作负荷的运行状况。 尽管监视对可靠性至关重要,但检测可能会影响系统性能。 随着可观测性的提高,性能可能会降低。

权衡:增加过度预配。 性能效率支柱会阻止过度预配,而是建议使用恰好足够的资源来满足需求。

  • 自动缩放操作不是即时的,因此无法可靠地处理无法调整或平滑的突然而戏剧性的需求高峰。 因此,通过较大实例或更多实例进行过度预配是解决需求信号与供应创建之间的延迟的关键可靠性策略。 未使用的容量与性能效率的目标相反。

  • 有时,组件无法根据需求进行缩放,并且该需求不可完全预测。 使用大型实例来涵盖最坏的情况会导致在超出该用例的情况下过度预配浪费。

了解其他支柱的权衡: