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

Architecture 如何扩展图像托管/服务?,architecture,web,scalability,media,cluster-computing,Architecture,Web,Scalability,Media,Cluster Computing,我正在建立一个网站,用户可以上传照片,我还可以将上传的照片转换成缩略图 提前计划,如果网站变得流行,我如何扩展它,使图像(原始图像和缩略图)存储在多个服务器中并从多个服务器提供服务?也许是集群?在这方面有没有开源软件可以帮助我 谢谢。实现这一点的一种方法是将图像文件转换为二进制格式,并将二进制文件保存到数据库中 我使用php将图像转换为blob格式,并将这些blob存储在mysql数据库中。当文件在数据库中时,您可以使用php脚本将blob转换回mime类型,如jpeg或gif,然后显示在网页上

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

提前计划,如果网站变得流行,我如何扩展它,使图像(原始图像和缩略图)存储在多个服务器中并从多个服务器提供服务?也许是集群?在这方面有没有开源软件可以帮助我


谢谢。

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

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

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


我从未发现任何开源软件使用这种存储方法,但创建脚本是相当简单的。

一个有趣的问题

我认为最可靠和易于扩展的解决方案是使用类似的东西,即基于HTTP的分布式文件系统

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


在我看来,MogileFS将是这个问题的一个很好的解决方案。扩展应该很简单,但初始实现可能需要更长的时间。

购买它,不要构建它。Akamai和Amazon CloudFront及其同类将此商品化。不要重新发明轮子,它确实是一个专业功能,可以轻松可靠地外包,比内部构建的成本低得多。

这是一个非常有趣的问题,我想知道答案。向上投票!:)的确很有趣,但也许有一个更好的地方是在?投票决定转到Serverfault。我想你可能会得到更好的答案。我认为这个问题有两种答案:基于开发的和基于基础设施的。如果我们想给它一个获得基于开发的答案的机会,就不应该把它移到serverfault。我建议@Continuation在那里发布同样的问题,并在这里添加一个链接,以便获得基于基础设施的答案。恐怕我认为这根本不是一个好的解决方案。当图像的大小大于单个db实例时会发生什么情况。在数据库中以blob形式存储图像是一个很好的解决方案,这是非常罕见的。它通常也比文件系统操作慢,而且这个特定的解决方案看起来不会扩展,因为您的所有图像实际上都来自一台机器。