通过HTTP提供图像。负载均衡的高可用性架构

时间:2011-02-24 15:16:36

标签: php mysql image cluster-computing

我正在计划一个系统,用于通过负载平衡从服务器群集提供图像文件。我正在与architechture斗争,是否将实际的图像文件保存为数据库或文件系统中的blob。

我的问题是,无论如何都需要数据库连接,因为用户需要进行身份验证。不同的用户只能访问他们的朋友的内容和他们自己上传的项目。由于无论如何都需要连接,也许可以从那里检索图像?

图像应存储,没有单点故障。显然,系统应该很快。

对于数据库方法: 数据库与我的应用程序的其余部分是分开的,因此我的应用程序主数据库不会被所有图像变得臃肿。数据库很容易扩展,因为我只需要向集群添加更多服务器。问题是,我听说这可能是一个包含数百万甚至数十亿张照片的网站的慢速系统。

对于文件系统: 我真的很想知道如何设计一个系统,其中web服务器是负载平衡的,并且它们都不是对整个系统来说太重要。所有服务器都应使用公共存储,以便他们可以访问群集中的相同文件。

你怎么看?在这种情况下哪个是最佳解决方案?

您会为图像投放群集推荐什么样的整体架构和服务器?注意:此群集提供图像。应用程序服务器完全不同。

1 个答案:

答案 0 :(得分:1)

我绝对不会将它们存储在数据库中。如果您需要使用PHP进行身份验证,请尽快执行此操作,并使用X-SendFile将实际映像提供给您的Web服务器。

对于文件系统来说,MogileFS听起来很合适。

对于我建议{@ 3}}的网络服务器。如果您可以调整您的身份验证机制以使用其中一个nginx,或者为它编写自己的模块,那么您可以完全省略PHP(已经有一个MogileFS客户端模块)。