分享便宜实惠
高性价比独服

使用AWS S3时,如何优化下载?

使用S3自动气象站时,你总会遇到一些问题。我们在AWS
S3桶存储用户特定的可下载文件。我们的客户从世界各地的这些桶下载文件。文件大小从1到20GB不等。对于大文件,非美国地区的客户面临着下载速度慢或下载中断的问题,并对此表示不满。我们如何优化这些下载?

AWS国际站收费折扣链接:https://www.zhaodufu.com/zt/2023-05-06/

首先,如何提高S3的表现?

解决方案:S3指数与实际数据分开存储。默认情况下,bucket的所有对象都位于同一个分区中。如果对象
当数量过大且请求率不高时,S3会根据键名自动分区。但是,如果请求速率过高,会耗尽S3分区的IO,触发限制,可能会返回503 Slow。
向下错误。

尝试使用散列或逆序来随机化S3前缀。如果读写请求太高,可以向AWS提交S3分区请求,或者使用指数。
退避)算法来增加请求的重试等待时间。尽管如此,我们仍然需要遵循S3键名的随机化原则。对于某个目录中的随机对象,
分区。

例如,在。S3存储桶的日志目录中的日志对象前缀已被随机化。

S3://bucket/log/A0B1.log

S3://bucket/log/C2D3.log

S3://bucket/log/E4F5.log

提交请求时,除了请求率之外,您还需要填写模式,指示如何在日志/目录中执行随机化。背景可以在S3://bucket/log/
稍后分区。

S3不限制带宽。但是,不要对S3进行压力测试。实际传输速率与从客户端到S3的网络有关。如果客户要求很多,可以用CDN。
加快速度。

使用AWS S3时,如何优化下载?-找独服

第二,有很多小文件,如何有效地上传到S3?

解决方法:如果可能的话,尽量压缩成大文件再上传。一方面减少了大量小文件上传时TCP连接建立和断开的开销。另一方面,S3
虽然上传流量不收费,但是请求还是要收费的。

第三,必须每天在本地和S3之间同步文件。现有文件的数量非常大(数百万)。如何提高效率?

Aws s3 sync命令可以将本地文件同步到s3,并且只同步已更改的部分。但是,sync需要先列出列表。
相比之下,S3。如果文件数量非常大,列出所有对象需要花费大量时间,甚至可能会卡住。

解决方案:仅同步已更改的目录。比如根据日期目录同步。

AWS S3 sync/data/2018/03/13 S3://bucket/data/2018/03/13

如果每天变化的数据分布在不同的目录中,可以在Dynamodb中记录这些变化,同步时只同步变化的部分。

4.S3支持断点续传吗?

解决方案:断点续传的实现在于根据内容-长度将其划分为多个范围。没有传输完的可以保留,下次可以继续传输。

S3支持多部分分段传输。有三个步骤:

1.启动多部分上传:初始化任务。

2.零件上传:将文件分成多个块,每个块有相同的上传ID和不同的零件。
第10号.不管顺序如何,不同的块被分开传输。

3.完整的多部分上传:在所有的块完成后,将这些块合并到S3对象中。通用程序,如AWS。
CLI,如果某些部分未完成,重试后超时,将调用中止多部分上传,所有已上传到S3的部分将被删除,任务将终止。

S3没有提供直接的断点续传API,可以通过在程序中添加一个逻辑来实现。如果第二阶段的一部分尚未传输,则不会调用第三阶段。
完成/中止.这样,已经传输的部分将保留在S3中,直到完成/中止。

5.下载S3文件时,应用程序会判断MD5以防止文件传输被篡改,但大文件总是会出错。

S3大文件传输使用多部分分段。对于每个数据段,MD5是单独计算的。最后,当任务完成时,再次计算所有段的MD5,得到
S3 Etag值。

应用程序只比较某个段的MD5值,与S3 Etag不一致,因此出现错误。

6.在移动应用上传到S3的场景下,S3预签名URL和Cognito有什么区别?

最后一种解决方案:手机客户端上传时,需要在服务器端生成一个预签名的URL,并返回给客户端。客户端使用这个临时URL,没有凭据。
我可以上传。其实上传的时候,你在服务器生成URL的时候使用了IAM用户权限,相当于用这个IAM用户上传。这种方法的局限性在于,预先签名的URL
我不知道整个上传对象的大小,所以我不能使用S3多部分。对于大文件,传输效率比更高。

打赏
未经允许不得转载:找独服 » 使用AWS S3时,如何优化下载?

相关推荐

评论 抢沙发

评论前必须登录!