批量上传大量文件至对象存储,如:某应用系统日志文件上传;
大量上传GB级以上大文件至对象存储,如:高清视频文件上传。
1.使用随机对象名前缀
批量上传大量文件至对象存储,尤其是MB左右及以下海量对象场景,推荐使用随机前缀的对象名,从而能够使业务请求均匀分布在多个分区,达到水平扩展性能最优的效果。
示例:
如某应用日志文件归档,原本上传对象为如下形式:
/log/20220610-01.log.tar.gz
/log/20220610-02.log.tar.gz
/log/20220610-03.log.tar.gz
/log/20220610-04.log.tar.gz
...
/log/20220611-01.log.tar.gz
/log/20220611-02.log.tar.gz
/log/20220611-03.log.tar.gz
/log/20220611-04.log.tar.gz
建议为对象名添加3位以上16进制哈希前缀:
/8bc-log/20220610-01.log.tar.gz
/95d-log/20220610-02.log.tar.gz
/6c5-log/20220610-03.log.tar.gz
/da3-log/20220610-04.log.tar.gz
...
/a7c-log/20220611-01.log.tar.gz
/2bc-log/20220611-02.log.tar.gz
/ea7-log/20220611-03.log.tar.gz
/1d8-log/20220611-04.log.tar.gz
2.使用多段方式并发上传大文件
当上传GB及以上大文件甚至是TB级文件(如大型镜像安装包、高清视频文件等)时,推荐使用分段方式进行上传。
采用单次方式上传文件存在5GB大小的限制,并且一旦出现网络波动等原因导致传输中断,需要完整的重新上传整个文件,开销较大。因此,建议使用分段的方式上传大文件,一个文件的多个分段并发上传同时能够提升性能。
一些兼容S3的客户端工具默认具备分段上传的能力,如S3Browser默认上传大文件按照8MB大小分段:
对于开发者推荐可使用分段上传API接口方式,来进行大文件的上传。