我有一个网站从不同的社交媒体服务获取备份,然后将数据存储在服务器上,然后显示在我的网站上。内容包括视频,图像和文本数据。
目前我正在使用带有RDS和EBS的EC2实例。数据存储在EBS卷中,但由于数据量超过1 TB且正在增加。每当我的EBS卷被填满时,我附加另一个卷。
然后我将S3添加到我的设置中。 Cron作业在S3上运行并存储数据,EC2实例显示来自S3的数据。我正在使用PHP SDK来实现此目的。
我面临的问题是S3在我当前的设置中非常慢。 请建议我的设置是好还是我的设置需要进行一些更改,另一方面我如何加速S3。或者我应该选择其他方式进行我的设置。 EC2实例是运行CentOS的大型预留实例。
我已经听过一些关于将S3桶装到Ec2的S3fs作为卷。这是一个不错的选择,因为当我将S3 Bucket安装到Ec2实例时,传输速率非常慢。
我是AWS的新手。我的用户不直接从S3访问文件,但他们通过我的网站访问,该网站运行在EC2实例上。
答案 0 :(得分:4)
RDS是存储元数据的理想选择,例如标签,评论和有关您的多媒体文件的其他相关信息。 S3适用于存储静态内容,如视频,音频和图片。我认为你使用RDS和S3的方法已经足够了。
EBS支持的实例有助于持久化。如果将元数据存储在S3上的RDS和静态内容上,那么您应该使用EBS支持的EC2实例的唯一原因是您有一些现在未版本化的配置文件。如果情况并非如此,假设您的配置已签入版本控制并且每次都可以按需提取新的实例,那么您可能希望放弃EBS卷以支持临时存储。这可能会给你一些性能提升,但没有什么重要的。
关于您对S3延迟的关注,是的,S3很慢。虽然您的所有写入可能直接发生在S3上,但我强烈建议您为S3存储桶设置Amazon CloudFront,并让您的网站使用CloudFront中的多媒体内容。 CloudFront是一个内容交付网络(CDN),可与磁盘卷(EBS支持或临时)以及S3配合使用。设置它不会超过几分钟。 CloudFront还支持RTMP上的流媒体文件。您可能需要一个像GPAC这样的库来暗示多媒体文件,如果还没有完成它们就可以使它们流畅。您可能需要考虑为视频/音频文件创建一个用于流式传输的分发,以及为Images,Javascript,Stylesheets和其他文本文件创建另一个分发。
希望这有帮助。
答案 1 :(得分:1)
为了更快地从Amazon S3获取和上传文件,我使用batch()
found here。
此外,您可以使用cloudfront来更快地获取文件。我认为9gag也使用了cloudfront ..