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

优化流成本的建议

适用于此 Azure Well-Architected 框架成本优化清单建议:

CO:09 优化流成本。 使每个流的成本与流优先级保持一致。 确定流的优先级时,请考虑每个流的特性、功能和非功能性要求。 优化流支出通常需要战略妥协。

本指南介绍优化工作负载中每个流的成本的建议。 对工作负载中的流进行成本优化涉及从战略上分配和管理资源,以在保持性能的同时最大程度地减少开支。 这种优化至关重要,因为它可确保有效利用投资的资源,减少不必要的支出,并提高基础结构的总体投资回报。 如果不对工作负载中的流进行成本优化,则会面临资源超支的风险,从而导致运营成本膨胀和盈利能力降低。

定义

术语 定义
解 耦 从包含多个流的资源中删除流并将其放入单独资源的策略。
流向 在工作负荷中,执行特定函数的操作序列。 流涉及数据移动和工作负载组件之间的进程运行。
系统流 系统中的信息和进程的流。 系统会自动遵循此流来启用用户流或工作负载功能。
用户流 用户在应用程序或系统中执行的操作的路径或序列。

关键设计策略

在高优先级流上投资比在低优先级流上投资更多。 协调流优先级和支出可能涉及分离当前共享同一资源的流。 它还涉及合并具有类似要求但在单独的资源上运行的流。 例如,假设你有一个 Web 应用程序,其中包含多个流,例如用户注册、登录和数据处理。 这些流在单个服务器上运行,即使它们有不同的资源需求。 若要优化成本和性能,可以分离流或组合流:

  • 分离流。 例如,可以将用户注册流与其他用户注册流分离,并将其移动到成本较低的专用服务器。 此流很重要,但并不占用大量资源,因此它非常适合成本较低的服务器。

  • 合并流。 例如,可以将登录流和数据处理流组合在一起,这两者都有更高的资源要求,并在高性能服务器上一起运行它们。 将这些流组合在一起,服务器可以有效地处理这两个流的资源密集型需求。 它优化性能和成本。

在工作负荷中,可能需要考虑不同类型的流或路径。 本指南重点介绍以下流类型:

  • 系统流。 优化系统流涉及简化系统组件之间的通信和交互、最大程度地减少瓶颈并确保高效利用资源。

  • 用户流。 优化用户流涉及改善用户体验、减少摩擦点,并确保在应用程序或系统中顺利导航和交互。

创建流的清单

流清单是工作负载中所有操作序列、数据转换和系统交互的完整列表和说明。 流清单是确保投资符合流优先级的第一步。 仅当完全了解流的用途和依赖项时,才应优化流。 下面是创建工作负载流的清单的步骤:

  1. 文档流。 首先记录并列出工作负载中的所有现有流,以了解系统的综合状态。 包括每个操作序列、数据转换和系统交互。 熟悉每个组件,如外部服务、数据库、中间件和第三方集成。 此外,跟踪或估计一段时间内的请求量。

  2. 可视化流。 若要获得更清晰的视角,请直观地表示你的发现结果,可能用流程图或图表表示。 可视化效果可帮助你了解组件之间的相互依赖关系。 请考虑使用 Visio 等工具来帮助你实现可视化效果。

  3. 对流进行分类。 捆绑类似的流,同时考虑其功能 (等属性,例如身份验证、数据检索和事务处理) 、对业务的关键性,或者它们 (CPU、内存或带宽) 使用的资源。

确定流的优先级

流优先顺序是根据流对业务成果的影响、对用户体验的影响以及它们使用的资源对流进行分类的过程。 关键流通常需要更高的可用性级别、更快的恢复时间和更好的性能来满足工作负载目标。 通过确定流的优先级,可以更好地将支出与流优先级保持一致。 若要确定流的优先级,请考虑以下步骤:

  • 标识流值。 优化工作负载流成本时,需要确定提供最大价值的流。 你不想花更多的钱, 流是值得的。 与其简单地削减成本,不如考虑转移成本,确定更有价值的流的优先级。 例如,结帐流程对业务至关重要,但购买历史记录则不是。 应为结帐流分配更多资源和预算。

    低优先级流对可用性、恢复和性能的期望较低。 可以通过使用更便宜的配置来降低成本,以减少性能、可用性或业务连续性支出。

  • 考虑流指标。 如果难以确定流的优先级,请考虑分配给它们的可用性和恢复目标。 关键流通常具有高可用性要求和服务级别协议 (SLA) 。 与具有较高 RPO 和 RTO 的流相比,与较低 RPO 和 RTO 关联的流更重要。

优化独立流

有时,流已在不同的资源上运行。 在这些情况下,可以更轻松地评估和优化支出。 评估每个独立流中涉及的组件和流程,以确定是否有方法来优化或简化它们。 若要优化独立流,可以按照以下步骤操作:

  • 消除不必要的组件。 删除不影响流核心功能的任何无关元素,从而降低复杂性和成本。

  • 重新设计流。 请考虑重新设计流的体系结构,以提高其效率。 例如,可以更改操作顺序、降低延迟或提高数据传输速度。

  • 选择适当的性能层。 不同的流在处理速度、内存或其他资源指标方面可能有不同的要求。 请确保选择符合每个流特定要求的资源层。

  • 调整缩放设置。 如果流遇到可变的需求,请考虑实现自动缩放,根据实时需求动态调整资源,从而优化成本。

  • 微调配置。 微调其他设置(如网络或数据存储选项),以更好地符合流的性能和预算要求。

分离不同的流

将不同的流分离到不同的资源是将具有不同计算需求的不同任务分配给专用资源的过程。 不同的流是具有不同属性的流。 这些属性可能包括计算要求、数据依赖项、I/O 操作、延迟敏感度、安全需求和合规性要求。 在单独的资源上运行不同类型的流通常更经济高效。 这样就可以对每个流进行精确的资源分配,从而减少不必要的支出,并确保最大效率。

请考虑分离当前组合的不同的流。 这种分离可以提高可伸缩性、容错性和适应性,并简化成本。 通过确保每个流独立运行,可以降低干扰风险,并根据每个流的优先级更经济高效地分配资源。 例如,假设将 CRM (用户流) 与数据引擎并置 (数据流) 。 在办公时间内流向 CRM 系统的用户流量可能会降低数据引擎的速度。 分离流时,数据引擎可以根据工作负载需求独立缩放每个组件或服务。 这种分离可优化资源分配并降低成本。

合并类似的流

将类似的流组合到单个资源是合并具有可比较属性的任务或进程,并为它们使用共享资源的过程。 此策略消除了冗余并确保更高效地使用资源,从而大幅节省成本。 类似类型的流共享类似的属性。 可以考虑在分离不同流时查看的相同属性:计算要求、数据依赖项、I/O 操作、延迟敏感度、安全需求和合规性要求。 下面是一些示例,将类似的工作负载流组合在一起以使用同一资源可以节省大量成本:

  • Web 服务器。 与其为每个应用程序专门指定单独的 Web 服务器,不如考虑合并它们,尤其是在流量不一致高的情况下。 与反向代理配对的共享 Web 服务器可以有效地管理流量并将其路由到多个应用程序。

  • API 网关。 可以使用集中式 API 网关来简化请求并将其定向到相关服务,而不是为单独的微服务或应用程序维护单个 API 网关。 这样做可以简化管理,同时降低成本。

  • 日志处理。 请考虑将它们全部定向到共享日志处理工具,而不是让多个应用程序或服务各自运行自己的日志处理实例。 此方法可最大程度地减少活动实例的数量,从而直接节省成本。

  • 身份验证服务。 如果多个应用程序部署了自己的不同身份验证机制,则会引入冗余。 将单一登录 (SSO) 解决方案或公共身份验证服务集成可以减少这种重复并优化资源使用,从而降低成本。

风险:不要错误地与设计相吻合。 看起来相似的两个流不一定具有相同的目的。 在合并或更改每个流之前,需要了解每个流的功能和设计。 通过只关注流的外观来错误地解释流可能会导致意外的后果,并中断它所支持的服务或进程。 如果多个流提供相同的功能,并且其设计或意图没有明显的差异,请考虑合并它们。

持续监视流

流和工作负载的性质可能会随时间而变化,因此需要查看流支出,以确保成本与优先级保持一致。 通过分析与每个流关联的计算、存储和网络使用情况,评估每个流的资源利用率。 确定资源利用不足的任何低效或区域。 此分析有助于确定成本优化的机会。 以下是查看流利用率时需要考虑的一些注意事项:

  • 分析使用模式。 分析流的使用模式。 某些流可能在一天或月份的某些时间更活跃,而其他流可能具有一致的负载。 通过了解这些模式,可以预测资源需求并调整分配,以避免瓶颈和过度预配。

  • 监视相关指标。 确定有助于评估每个流的效率和成本效益的指标。 考虑 CPU 利用率、数据传输成本、事务成本和存储占用空间。 使用监视工具收集有关资源使用情况和性能的详细指标。

  • 请考虑持续维护。 请考虑维护成本,尤其是在使用基础结构即服务解决方案(如虚拟机)时。 你需要考虑修补、升级、备份、监视和安全等活动。

在分析期间,确定资源未得到有效利用的任何低效或区域。 考虑空闲计算实例、未使用的数据和低网络带宽。 这些低效可能表明成本优化的机会。

Azure 简化

确定流优先级、优化和监视流: Application Insights 中的 “用户流”工具 提供用户导航跨网站页面和功能的可视化表示形式。 此工具有助于识别用户经常离开、重复操作或遵循特定路径的区域。 通过将实际用户行为与预期结果和目标进行比较,可以识别关键流。 它还允许优化潜在问题,例如高改动率、重复操作或设计缺陷。 该工具还允许通过维度进行自定义属性筛选,从而提供更定制的分析。

Azure Monitor 可帮助你深入了解应用程序的性能和运行状况。 它提供监视和诊断功能。 这些功能使你能够识别性能瓶颈、优化资源利用率,以及检测和排查可能影响成本的问题。

Log Analytics 是一种工具,可用于收集、分析和可视化来自各种源的日志数据。 通过使用 Log Analytics,你可以深入了解应用程序和基础结构日志、识别趋势,并通过管理使用情况和数据保留来优化成本。 请考虑并置日志并使用专用解决方案而不是共享解决方案,以更好地管理成本。

成本优化清单

请参阅完整的建议集。