研究论文分享——利用云对象存储进行高性能分析

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

本文讨论了利用云对象存储进行高性能分析的方法,通过实验发现Umbra与本地SSD缓存的云数据仓库性能相匹配,并提高资源弹性。介绍了AWS S3的存储成本、带宽和挑战,以及云存储的特点、最佳请求大小、加密和慢请求处理等观察和建议。最后,介绍了AnyBlob和云存储的集成策略。

🔎

延伸解读

云对象存储的性能特征与适用场景

文章通过实验指出,云对象存储通常具有毫秒到百毫秒级的延迟和高达200 Gbps的吞吐量,适合大规模数据读写。与EBS相比,其延迟较高但吞吐量高出数个量级。对于分析型负载,最佳请求大小在8-16 MiB之间,此时性价比最高。这些特征表明,对象存储更适合高吞吐、可并发的场景,而非低延迟的小文件随机访问。

优化云存储访问的实践要点

文章基于实验给出了多项优化建议:使用8-16 MiB的请求大小以平衡延迟与成本;在AWS内部因VPC隔离和自动加密,可考虑省略HTTPS以减少CPU开销;针对慢请求,可在超过一定延迟阈值后重新发起请求;利用MTU发现和域名解析缓存来降低延迟。这些措施有助于提升云存储访问效率。

AnyBlob库的设计与性能优势

AnyBlob是作者开发的通用对象存储库,支持多云访问。它利用io_uring系统调用并解除了线程一对一映射的限制,相比现有C++ S3库,在提升性能的同时降低了CPU使用率。此外,AnyBlob还实现了域名解析优化策略,如缓存多个端点IP和MTU发现,以减少延迟开销。这些设计使其成为高性能分析中访问对象存储的有效工具。

集成云存储的考量与性能表现

文章讨论了将云存储集成到数据库中的策略,如根据数据处理速度自适应调整下载和请求线程数。在TPC-H基准测试中,检索密集型查询的瓶颈在于网络带宽,而计算密集型查询的性能随核心数增加而提升。与Snowflake的对比显示,Umbra在禁用缓存时仍能达到相近性能,但对比条件可能不够严格。总体而言,集成云存储可提升资源弹性,但需针对工作负载类型进行调优。

❓

Q&A

云对象存储用于高性能分析时,最佳请求大小是多少?

最佳请求大小通常在8-16 MiB之间。32 MiB的请求虽然成本略低,但在相同带宽下下载时间是16 MiB的两倍,性价比低。

AWS S3 的存储成本和可用性如何?

AWS S3 的存储成本为每TB每月23美元,提供99.999999999%(十一个九)的可用性。最终成本还取决于API调用次数和跨区域数据传输费用。

使用云对象存储进行高性能分析面临哪些主要挑战?

主要挑战包括:1. 带宽利用不足;2. 额外的网络CPU开销;3. 缺乏多云支持。根据经验,这些挑战的重要性排序为1 > 2 > 3。

在云存储中,HTTPS加密对性能有什么影响?是否总是必要?

HTTPS需要两倍于HTTP的CPU资源,而AES加密仅增加30%的CPU资源。在AWS中,同一区域内流量已由网络基础设施自动加密,且VPC隔离确保安全,因此使用HTTPS是多余的。

如何处理云存储中的慢请求?

实验显示,超过600毫秒后,少于5%的对象未成功下载;少于5%的对象首字节延迟超过200毫秒。基于此,可以对超过一定延迟阈值的请求进行重新下载尝试(请求对冲策略)。

AnyBlob 是什么?它有什么优势?

AnyBlob 是一个通用对象存储库,支持访问不同云提供商的对象存储服务。相比现有C++ S3库,它利用io_uring系统调用并移除了一对一线程映射限制,实现了更高性能且CPU使用率更低。

云存储的数据请求模型是怎样的?需要多少并发请求才能充分利用带宽?

单个请求的带宽类似于HDD,需要大量并发请求才能充分利用网络带宽。在S3上实现100 Gbps需要200-250个并发请求。读取约80 Gbps相当于同时访问约100个HDD。

🏷️

标签

➡️

继续阅读