对象存储由于其价格低廉、结构简单易用、可扩展性强等特点被大量应用,几乎已经成为云存储的代名词,例如AWS S3,Google Cloud、阿里云OSS等。
与传统的文件存储不同,对象存储是一种基于HTTP的存储服务,需要通过例如GetObject
、ListObjects
、PutObject
、DeleteObject
、HeadObject
等接口完成类似文件系统read
,write
,readdir
,getattr
的操作。而HTTP接口的网络时延很大,一般在几十到几百毫秒之间,所以其存储服务是一种带宽型的业务。
这其中,ListObject
是一种可以列举Bucket中对象的接口,类似文件系统的readdir
:
虽然在通常的业务中不常用,但是在例如对象存储文件网关、或者GCSFuse、Mountpoint这种对象存储POSIX客户端中被大量使用。在AI场景中也有大量的遍历数据集文件的操作(例如把数据从对象存储拉到例如高性能的并行文件系统中做训练/推理),ListObject速度就成为一个问题: