优化 Azure 数据资源管理器以实现高并发性
具有庞大用户群的方案需要高并发应用程序,应用程序在这些方案中会同时处理许多请求,从而实现低延迟和高吞吐量。
用例包括大规模监视和警报仪表板。 示例包括 Microsoft 产品和服务,例如 Azure Monitor、Azure 时序见解和 Playfab。 所有这些服务都使用 Azure 数据资源管理器来为高并发工作负载服务。 Azure 数据资源管理器是一项快速、完全托管的大数据分析服务,用于实时分析从应用程序、网站和 IoT 设备等资源流式传输的海量数据。
注意
可以在群集上并发运行的实际查询数取决于各种因素(例如群集 SKU、数据卷、查询复杂性和使用模式)。
若要针对高并发应用程序进行设置,请按如下所示设计后端体系结构:
本文提供了上述每个主题的建议,你可以实施这些建议,以最佳、经济高效的方式实现高并发性。 这些功能可以单独使用,也可以组合使用。
优化数据
为了实现高并发性,查询应使用尽可能少的 CPU 资源。 可以使用以下各种方法:
- 优化的表架构设计
- Data partitioning(数据分区)
- 预聚合
- 缓存
使用表架构设计最佳做法
使用以下表架构设计建议来最大限度地减少已使用的 CPU 资源:
- 无论值是否为数值,ID 列都应定义为字符串数据类型。 字符串列的索引比数字列的更复杂,但提供更好的筛选性能。
- 最好将列数据类型与这些列中存储的实际数据匹配。 例如,不要将日期时间值存储在字符串列中。
- 避免使用包含许多列的大型稀疏表,并使用动态列来存储稀疏属性。
- 将常用属性存储在具有非动态数据类型的列中。
- 使数据非规范化以避免需要相对较大 CPU 资源的联接。
将数据分区
数据以盘区(数据分片)的形式存储,并在默认情况下按引入时间进行分区。 可以使用分区策略,根据后台进程中的单个字符串列或单个日期时间列对这些盘区进行重新分区。 当大多数查询使用分区键进行筛选和/或聚合时,分区可以显著地改进性能。
注意
分区进程本身使用 CPU 资源。 但是,查询时的 CPU 缩减应超过用于分区的 CPU 消耗。
使用具体化视图预聚合数据
预聚合数据以在查询时显著减少 CPU 资源。 示例方案包括:通过减少时间箱数来汇总数据点,保留给定记录的最新记录,或删除重复数据集。 使用具体化视图可获取源表的易于配置的聚合视图。 此功能简化了创建和维护这些聚合视图的工作。
注意
后台聚合进程使用 CPU 资源。 但是,查询时的 CPU 缩减应超过用于聚合的 CPU 消耗。
配置缓存策略
配置缓存策略,以便可以对存储在热存储(也称为磁盘缓存)中的数据运行查询。 仅对冷存储(或外部表)运行精心设计的有限方案。
设置领导者-关注者体系结构模式
关注者数据库是一项功能,从位于同一区域的另一个群集中追随数据库或数据库中的一组表。 此功能通过 Azure Data Share、Azure 资源管理器 API 和一组群集命令公开。
使用领导者-关注者模式为不同的工作负载设置计算资源。 例如,设置引入的群集,用于查询或提供仪表板或应用程序的群集,以及用于提供数据科学工作负载的群集。 在这种情况下,每个工作负载都具有可单独缩放的专用计算资源,以及不同的缓存和安全配置。 所有群集均使用相同的数据,由领导者写入数据,并由关注者在只读模式下使用该数据。
注意
关注者数据库与领导者数据库之间通常存在几秒钟的延迟。 如果你的解决方案需要没有延迟的最新数据,则此解决方案可能会有用。 使用关注者群集上的视图,该视图联合来自领导者和关注者的数据,并从领导者中查询最新数据,从关注者中查询剩余数据。
若要提高对关注者群集的查询性能,可以启用预提取盘区配置。 请小心使用此配置,因为它可能会影响关注者数据库中数据的时效性。
优化查询
使用以下方法来优化查询以实现高并发性。
遵循查询最佳做法,尽量提高查询效率。
使用查询结果缓存
当多个用户同时加载同一个仪表板时,第二个及之后用户的仪表板可以从缓存提供。 此设置提供高性能,几乎不会占用 CPU。 使用查询结果缓存功能,并使用 set
语句随查询发送查询结果缓存配置。
Grafana 包含数据源级别的查询结果缓存的配置设置,因此所有仪表板默认使用此设置,而无需修改查询。
配置查询一致性
默认查询一致性模式是强模式。 在此模式下,管理节点管理群集的元数据和引入,并且规划查询和将执行委托给其他节点。
在高并发应用程序中,管理查询可能会导致管理节点的 CPU 使用率较高,而其他节点不太繁忙。 这可能会导致瓶颈,使并发查询数无法增加。 但是,在群集的 CPU 报告中,这可能并不明显(Azure 门户 > {your_cluster} >“指标”>“CPU 指标”),该报告显示群集的 CPU 平均使用率。
对于此方案,建议使用弱一致性模式。 在此模式下,更多节点能够管理查询,使得能够水平缩放并发查询数。 此模式下的节点会定期刷新其元数据和新引入的数据的副本,这使得同步数据时延迟通常小于 1 分钟。 但是,对于使用强一致性模式时可能出现的瓶颈情况,这种短延迟更有利。
可以在工作负荷组查询一致性策略、客户端请求属性或 Grafana 数据源配置中设置一致性模式。
设置群集策略
并发请求数在默认情况下受到限制,并由请求速率限制策略控制,以便群集不会被重载。 可以为高并发情况调整此策略。 仅当经历严格的测试后才应调整此策略,最好是类似于生产的使用模式和数据集。 通过测试可确保群集可以保持已修改的值。 可以根据应用程序需求来配置此限制。
监视 Azure 数据资源管理器群集
通过监视群集资源的运行状况,可帮助你使用前面部分中建议的功能生成优化计划。 适用于 Azure 数据资源管理器的 Azure Monitor 提供了群集的性能、操作、使用情况和故障的全面视图。 通过在 Azure 门户中 Azure 数据资源管理器群集的“监视”部分下选择“见解(预览版)”选项卡,获取查询的性能、并发查询、限制查询和各种其他指标。
有关监视群集的详细信息,请参阅适用于 Azure 数据资源管理器的 Azure Monitor。 有关各个指标的信息,请参阅 Azure 数据资源管理器指标。