你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于此 Azure Well-Architected 框架性能效率清单建议:
| PE:09 | 确定关键流的性能的优先级。 工作负荷资源和性能优化工作的分配应优先考虑支持最重要的业务流程、用户和作的流。 |
|---|
本指南介绍了如何确定工作负荷中关键流性能的优先级的建议。 关键流表示生成收入或推动高优先级运营的关键业务流程。 确定关键流性能的优先级时,请确保影响最大的流在优先级较低的流之前获取所需的资源。 未能执行此优先顺序可能会对工作负荷优先级和用户体验产生不成比例的负面影响。
定义
| 术语 | Definition |
|---|---|
| Flow | 在工作负荷中,执行特定函数的作序列。 流涉及数据移动和工作负荷组件之间的进程运行。 |
| 优先级队列处理 | 在低优先级任务之前处理高优先级任务的行为。 |
| 速率限制 | 限制可以访问资源的请求数的行为。 |
| 系统流 | 系统中的信息和进程的流。 系统会自动遵循此流来启用用户流或工作负荷功能。 |
| 用户流 | 用户遵循的完成任务的顺序。 |
关键流是指客户或系统和数据流的关键用户流,这些流对于工作负荷功能至关重要的作。 这些流可以包括作,例如用户注册、登录、产品购买、访问付费墙后面的页面,或者工作负载内的任何其他密钥路径或进程。
关键流严重影响用户体验或业务运营。 关键流的性能目标和服务级别协议比非关键流更高。 如果资源有限,非关键流应向关键流生成资源使用情况。 在隔离和优化关键流之前,需要确定、监视和确定所有流的优先级。
标识所有流
确定关键流性能的第一步是标识工作负荷中的所有流。 流标识涉及系统地映射和了解每个用户路径和组件通信。 重点是了解流对工作负荷性能的性能指标和潜在影响。
通过将工作负荷分解为离散流,可以找到性能瓶颈、低效的资源利用率以及性能优化的机会。 此知识公开了需要改进的领域,是确定关键流的第一步。 有关详细信息,请参阅 “标识”和“对用户和系统流进行评分”。
监视流性能指标
确定工作负荷中的所有流后,需要在每个流上收集性能指标并监视这些指标。 流指标提供有关响应时间、错误率和吞吐量的见解。 目标是持续观察和记录与性能相关的指标,以进一步优化对每个流对工作负荷性能的影响。 若要监视流指标,可以使用以下工具来收集数据:
分析和跟踪工具:这些工具提供有关应用程序中用户行为和交互的见解。 通过分析用户数据,可以识别最常见的流、瓶颈或潜在问题。
应用程序性能监视(APM)工具:使用 APM 工具监视应用程序的性能并跟踪流运行方式。 这些工具提供响应时间、错误和其他性能指标的可见性,使你能够识别关键流并优化其性能。
日志记录和调试工具:在应用程序运行时,使用这些工具捕获和分析日志和调试信息。 查看日志和调试信息,以跟踪流是如何运行的,并确定问题或错误。
确定关键流
使用可用的性能数据,可以开始对所有流进行排名,并确定关键流。 关键流的标识涉及评估每个流的性能影响和关键性。 有效的流优先顺序可确保最重要的流在不太关键的流之前接收所需的资源。 若要确定应用程序中的流优先级,请考虑以下步骤:
确定业务影响:首先评估运营中每个流的重要性。 专注于每个流如何与业务目标保持一致、它对用户的影响,以及性能不佳的潜在负面影响。 例如,虽然免费服务层级可能会吸引更多用户,但付费层对业务目标可能更为重要。
此外,请考虑流在一个或多个业务流程中的性能影响。 多个流可能支持单个业务流程,但通常,一个流对该过程的性能有显著影响。 想要确定对性能影响最大的流。 相反,单个流可能会支撑多个进程。 在这种情况下,此流的性能直接影响所有相关进程的效能,并且可能是关键流。
分析性能数据:分析与每个流关联的性能指标。 查找模式、异常或突出指标,这些指标可提供流效率和重要性的见解。 例如,具有大量使用情况的系统流可能是重要的流。
分配关键性分级:根据业务影响和性能指标,应确定流的优先级。 使用 高、 中和 低的严重性分级。 具有重大业务影响或高性能需求的流应获得“高”关键性评级。 这些流是关键流。 专注于具有高用户流量的流,或直接影响到收入的产生。 下表提供了关键(高)和非关键流(中 到 低)的特征。
| 关键流 | 非关键流 |
|---|---|
| 使用率高 | 使用率低 |
| 业务关键 | 非业务关键 |
| 成本高昂的作 | 小型作 |
| 时间敏感 | 不区分时间 |
| 生产 | 预生产 |
| 实时处理 | 批处理 |
| 延迟敏感 | 不区分延迟 |
| 付费用户 | 非付款用户 |
| 高级层 | 基本层 |
| 重要任务 | 无性任务 |
| 高收入帐户 | 低收入帐户 |
隔离关键流
隔离关键流的过程是提供专用资源或容量来支持关键流。 你想要分配资源和关注那些对于最佳用户体验或重要业务成果至关重要的流。 目标是确保关键流接收足够的计算能力、网络带宽和资源,以高效高效地运行。 通过隔离关键流,可以更轻松地管理支持关键流的资源。 下面是隔离关键流的建议:
资源分段:为关键流创建单独的资源,允许它们独立于其他进程独立运行。 例如,可以在专用网段上隔离关键流,也可以使用专用服务器来处理这些流的处理需求。 此方法有助于最大程度地减少非关键流对关键流产生负面影响的方式。
逻辑分段:使用 Docker 或 Kubernetes 等虚拟化和容器化工具在软件级别隔离流。 可以将关键流分成虚拟机(VM)。 通过这样做,可以创建一个隔离的环境,减少来自其他流的依赖项和潜在干扰。
容量分配:对于关键流,请显式分配一组固定容量,例如 CPU、内存和磁盘 I/O。 此分配可确保关键流始终有足够的资源高效运行。 使用业务流程平台设置资源配额或限制。 通过将资源显式分配到关键流,可以阻止资源争用并确定其运行方式的优先级。
权衡:资源分段会影响成本。 将资源专用于流时,通常会增加成本,并使某些资源未充分利用。 为了证明关键流的性能增强是正当的,业务影响的增加必须超过成本的增加。
优化容量分配
如果无法隔离关键流,下一个最佳选择是确定访问可用容量的关键流的优先级。 容量分配的优化是根据其关键性从战略上将可用容量分配到不同的流。 容量包括 CPU、内存、存储和网络带宽。 目标是确保最关键的流(最高优先级)接收有效作所需的容量。 若要决定如何分配容量,请考虑以下策略:
评估资源容量:评估可分配给流的资源容量。 容量可能包括 CPU、内存、存储和网络带宽等资源。 了解基础结构或环境的限制和约束。
分析流要求:分析每个流的资源要求。 了解流需要高效运行的资源。 对于每个流,请确定资源需求,例如 CPU 利用率、内存要求和网络带宽。
确定分配优先级:将可用资源容量与流的资源要求相匹配。 根据流优先级分配资源,确保高优先级流接收满足其要求所需的资源。 了解最严格的约束的位置,并根据需要优化容量分配。 例如,队列每分钟只能处理一些消息,但很难达到某些存储限制。
使用速率限制:为了确保关键流能够消耗满足其性能目标所需的资源,请将速率限制应用于非关键流和任务。 速率限制限制低优先级流的请求数,用户可以对受约束的资源进行限制。 例如,可以对 API 的非特权请求进行速率限制。 有关详细信息,请参阅 .NET 中 HTTP 处理程序的速率限制模式和速率限制。
使用优先级队列处理:优先级队列处理为某些请求提供高优先级。 队列通常具有先入先出(FIFO)结构,但你可以更新应用程序,以为其添加到队列的消息分配优先级。 使用此功能确定关键流和用户的优先级。 有关详细信息,请参阅 优先级队列模式。
风险:在关键流需求与工作负荷的整体性能之间进行平衡可能是一项挑战。 尽管应确定关键流的优先级,但不应忽视非关键流。 工作负荷的总体性能效率取决于所有流。 忽略的非关键流可能会产生影响所有用户的问题。 来自无性物品的噪音过多会从关键物品中窃取注意力。 但噪音太少可能会损害整个工作负荷。 数据量和警报数应反映这些均衡的优先级。
Azure 便利化
识别和监视流:Azure 提供不同的解决方案来帮助监视工作负荷中关键流的性能。 Azure Monitor、Azure Monitor 日志和 Azure Application Insights 是一些服务,可为多种应用程序和工作负载提供全面的监视功能。
优化容量分配:某些 Azure 服务支持资源分段、逻辑分段和容量分配技术,以将容量和资源分配给关键流。 可以通过创建单独的资源、增加密度、使用虚拟化和容器化以及将资源显式分配到关键流等技术隔离关键流。
某些 Azure 服务(如 Azure API 管理)提供用于速率限制的内置策略。 Azure 提供了详细的指导和 速率限制设计模式的示例实现。
Azure 支持优先级队列处理。 Azure Functions 提供事件驱动的函数,可以通过多种方式触发,包括队列或主题中的新消息。 将 Azure Functions 与 Azure 队列存储或 Azure 服务总线 相结合,以根据其优先级处理消息。
相关链接
性能效率清单
请参阅完整的建议集。