2011-04-04 23 views
7

我有一个管理员类型系统的网站与多个网络服务器,用户可以配置页面和上传图像出现在页面上(类似于CMS)。如果您已经有一个带有副本集设置的MongoDB实例,那么存储这些上传文件的首选方式是什么,以便存在故障转移,为什么?图片上传 - CDN,MongoDB或NFS?

  1. CDN,如Amazon S3/CloudFront。
  2. 将图像存储在MongoDB中?我现在就这样做,不要使用GridFS,因为我们的图像都在1MB以下。
  3. 使用某种类型的NFS进行某种故障转移设置。如果#3,那么你如何配置这个故障转移?

我现在使用#2就好了,并且在没有故障转移之前使用过#3。如果我使用MongoDB作为我的网站的数据存储和提供图像,这些GET请求可能会影响从数据库中获取非图像数据的性能吗?

回答

8

这些对图像的GET请求会影响从数据库中获取非图像数据的性能吗?

好吧,更多的图片请求=更多的HTTP连接到您的网络服务器=更多的来自MongoDB的图片请求=更多的网络流量。

因此,从数据库获取更多图像数据理论上可能会影响获取非图像数据。您所需要做的就是以1MB的图像请求1000张图像/秒,您将开始在MongoDB服务器和Web服务器之间看到大量的网络流量。

请注意,这不是MongoDB的限制,这是网络吞吐量的限制。

如果您开始获得大量流量,那么肯定会推荐CDN。如果你已经有一个输出图像的HTTP页面,这应该是非常简单的。

5

为什么不在MongoDB之前的CDN?

+0

感谢您的想法。我刚刚遇到[GridFS与CDN](http://groups.google.com/group/mongodb-user/browse_thread/thread/fa2963c175fe325f/6b76caa93f0ba8ee) – Bradford 2011-04-04 20:19:00

+1

哈哈......那就是我! – luckytaxi 2011-04-04 20:25:44

0

带有共享文件系统的Redhat或CentOS集群可以为NFS提供故障转移机制。