存储媒体文件的有效方法是什么?



假设你正在构建下一个伟大的社交应用,它将获得大量用户。您可能遇到的一个问题是,您需要以可伸缩的方式托管大量媒体文件,而不会限制整个站点的性能。

解决这个问题的好方法是什么?

媒体文件专用服务器?
云?

媒体文件不同于系统中包含应用程序逻辑的部分,因为提供媒体文件是I/O密集型任务,而应用程序逻辑通常需要I/O和CPU的某种组合(确切的平衡非常依赖于应用程序)。这就是为什么使用针对磁盘和网络吞吐量进行优化的专用媒体服务系统确实是有意义的。

如果你使用自己的专用服务器,一些一般准则:

  • 投资大量的RAM,并为最常用的内容使用缓存。这个想法是为了节省磁盘访问时间(理论上RAM大约快100倍)。Memcache是目前最流行的解决方案。
  • 投资快速磁盘IO,安装多个磁盘并使用RAID(条带化)来提高吞吐量。
  • 在为您的专用/co-lo服务器选择托管提供商时,请关注带宽。
  • 如果可能的话,您希望将文件定位在靠近其消费者的位置,以改善网络延迟。例如,如果将巴西葡萄牙语的媒体文件存储在南美的服务器上,将受益。
  • 一个好的CDN几乎可以解决上述所有问题。根据我自己的经验,它将我们自己服务器上的负载减少了约85%。我们使用Cotendo和Akamai。你可以看看其他供应商:CDNetworks, Limelight, Level3。

如果你刚刚开始,那么你最好的选择是使用S3来存储你的文件,用CloudFront作为你的CDN。根据我自己的经验,这是一个非常简单的解决方案,并且在开始时非常划算——因为成本随着数据量和使用量线性增长。超过一定的阈值后,开始考虑管理自己的专用存储机架并使用其他CDN是有意义的。

最新更新