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