如何扩展图像托管/服务?

时间:2010-12-26 06:23:07

标签: architecture web scalability media cluster-computing

我正在建立一个用户可以上传照片的网站,我还会将上传的照片转换为缩略图。

提前规划,如果网站受欢迎,我该如何扩展它以使图像(原始图像和缩略图)存储在多个服务器中并从多个服务器提供服务?也许是集群?有没有可以帮助我的开源软件?

感谢。

3 个答案:

答案 0 :(得分:1)

一个有趣的问题。

我认为最稳定且易于扩展的解决方案是使用MogileFS这样的基于HTTP的分布式文件系统。

另一种可能更容易构建的方法是确保您知道在需要时如何扩展图像托管。可能的方法可能是:   - 使用Amazon S3   - 在应用程序中手动实现图像的分片/分区,将图像存储在不同的后端服务器上(使用较慢/较大的存储空间),然后在其前面放置一个反向代理。

在我看来,MogileFS可以很好地解决这个问题。扩展应该是微不足道的,但最初的实现可能需要更长的时间。

答案 1 :(得分:0)

购买它不构建它。 Akamai和Amazon CloudFront及其同类商品化了这一点。不要重新发明轮子,它实际上是一种专业功能,可以比内部构建更便宜,更可靠地外包。

答案 2 :(得分:-2)

接近这一点的一种方法是将图像文件转换为二进制格式并将二进制文件保存到数据库中。

我使用php将图像转换为blob格式并将这些blob存储在mysql数据库中。当文件在数据库中时,您可以使用php脚本将blob转换回mime类型,如jpeg或gif,然后在网页上显示。

因此,您的文件将集中存储在数据库中,您可以将用于将blob转换为任意数量服务器上的图像的脚本放置。

我从来没有找到任何开源软件来使用这种存储方法,但是创建脚本非常简单。