自IPFS协议诞生以来,从技术的角度分析,行业内一直认为其存储性能优于传统的HTTP协议,那么事实上是否真的如此呢?理论上的优势在实践上是否也存在呢,星际鑫航技术团队为揭秘IPFS真实的存储性能,进行了深度性能测试,本文为 IPFS 存储性能测试报告的核心内容摘录。
文章导读:
阅读须知,测评如何进行。
本地存储、局域网存储,无网络因素下性能测试
公网环境中,IPFS协议与七牛云性能对比
结论陈述,IPFS性能几何?
1、测评方法
文件的存储性能主要体现在读写速度,而读写速度受硬件、网络、存储协议、节点数量、文件大小等多个因素的综合影响。本次测评将采用控制变量法,分别控制不同的变量,通过IPFS协议对不同大小的文件进行多组重复测试,最后取读写速度的平均值。
2、测评说明
①本次测试使用的都是单台服务器,主要测试 IPFS 读写性能,以及哪些因素会影响 IPFS 的存储效率。
②受限于硬件配置、数量以及时间等条件的限制,测评结果可能会存在偏差。本文提供测评的思路,大家有兴趣可以自行进行测试。
3、郑重申明:
此份报告仅仅是IPFS存储性能的技术性验证,不构成任何IPFS类矿机投资建议,星际鑫航技术团队对测评内容享有解释权。
本地测试
本地测试主要是针对网络因素这个变量,做定性分析。基于IPFS协议的本地存储,可以类比于文件在本地的复制与粘贴(实际过程更复杂)。考虑到硬件配置对存储性能的影响,我们这里分别使用了两台不同配置的台式机进行了测试。
配置一
CPU: i5-4160-4Core 主频 3.2G
内存: 8GB
硬盘:普通家用硬盘 1GB
操作系统:Ubuntu 18.04-LTS
测试结果
配置二
CPU: i7-8700K CPU @ 3.70GHz
内存: 16GB
硬盘: 希捷企业硬盘 8TB
操作系统:Ubuntu 18.04-LTS
测试结果
本地测试,我们直接使用 IPFS 自带的客户端命令行工具进行测试,通过 shell 脚本进行批量测试。需要额外说明: shell 脚本的运行时间统计可能不是特别精确,但本地测试只是粗略定性测试,不影响结果。
下面贴出测试脚本,有兴趣的同学可以自己运行测试一下:
Note: 这里需要注意的是,IPFS 的存储是去重的,也就是说,相同的文件,第一次存储是最慢的,之后如果你再存储相同的文件,它会非常快。 我们这里都是取第一次的存储所耗费的时间。
(二)局域网测试
机器配置
CPU: i7-8700K CPU @ 3.70GHz
内存: 16GB
硬盘: 希捷企业硬盘 8TB
操作系统:Ubuntu 18.04-LTS
结论1:高配置的 CPU和硬盘能够明显提升 IPFS 的存储性能。 IPFS 分片时,更好的 CPU 能更快速地创建分片。
结论2:在进行小文件(10M 以下)存储时,发现局域网速度比本地稍快一些。
结论3:文件越小,绝对的存储速度越慢。这是因为存储的边际效应递减的缘故,因为文件太小的时候,一些初始化以及网络连接的时间占比就大大增加了。
本人使用的是阿里云主机的公网环境测试,选取七牛云作为性能对比对象。(为何选取七牛云,在此不做赘述,一般企业级对象存储七牛云是首选)。为了尽可能减少变量,公网测试不继续使用 IPFS nodejs client,而是采用我们自己写的 IPFS php client 工具测试。
机器配置
CPU: Intel® Xeon® Platinum 8163 CPU @ 2.50GHz 双核
RAM: 8GB
硬盘: 普通云盘,80GB
带宽: 2MB
操作系统: Ubuntu 16.04.4 LTS
公网测试结果(取5次测试结果的平均值)
公网测试原始数据 (单位:sec)下表列出了 5 次文件上传的实际耗时。
接下来我们分别使用同样的数据测试了七牛云的企业存储服务的性能,再做结果对比。
我们使用七牛云官方的 php sdk 作为测试工具,分别测试了 1GB,500MB,100MB,50MB,10MB,5MB,1MB 文件的上传和下载,七牛云测试结果如下:
七牛云测试原始数据(单位:sec)从测试数据可以看出,上传速度稳定在 5MB 左右,我本地的上传带宽是 50MB 的,所以这个上传速度应该没有受到本地上传带宽的影响,数据没有问题。
从上传速度来看,单节点IPFS协议存储与七牛云差不多。测试环境下,七牛云和 IPFS协议 的下载都是通过 http 网关提供服务,下载速度只与下载带宽有关,我们采用阿里云服务器带宽只有 2MB,所以下载的最大速度只有 220KB/s,要远远低于七牛云的下载速度(12MB/s),所以下载速度不具备可比性。
通过以上本地测试、局域网测试、公网测试,我们了解到了IPFS存储协议的真实性能:
1、通过本地和局域网存储测试,发现IPFS 的存储性能略低于本地拷贝,这是由于IPFS协议在存储前,需要先对文件进行分片,再存储。
2、高配置的 CPU和硬盘能够明显提升 IPFS 的存储性能。 IPFS 分片时,更好的 CPU 能更快速地创建分片。
3、文件越大,由于边际递减效应,文件上传速度越快。
4、网络环境下,可以确认对于小文件上传速度(小于100兆),单节点的IPFS协议要优于HTTP协议的七牛云。
预测:了解到IPFS协议的真实存储性能后,我们有理由相信:采用IPFS协议存储,节点越多,其CDN加速性能越优,最终的存储性能会远远优于传统的云存储方式,同时成本也将比传统方式低很多。
未来,基于IPFS协议搭建企业级分布式存储网络,提供自带CDN的存储服务将在性能、成本、安全性等方面,有显著的优势。抛开基于IPFS的各种激励挖矿项目,IPFS协议的存储类应用开发也将大有可为