图像上传 - CDN、MongoDB 还是 NFS?
我有一个具有多个网络服务器的网站的管理类型系统,用户可以在其中配置页面并上传图像以显示在页面上(类似于 CMS)。如果您已经有一个带有副本集设置的 MongoDB 实例,那么存储这些上传以便存在故障转移的首选方式是什么?为什么?
- CDN,例如 Amazon S3 / CloudFront。
- 将图像存储在 MongoDB 中?我现在这样做,不使用 GridFS,因为我们的图像都在 1MB 以下。
- 使用某种类型的 NFS 和某种故障转移设置。如果#3,那么如何配置此故障转移?
我现在使用#2 就很好,之前也使用过#3,没有故障转移。如果我使用 MongoDB 作为网站和图像服务的数据存储,这些图像的 GET 请求是否会影响从数据库中获取非图像数据的性能?
I have an admin type system for a website with multiple web servers where users can configure pages and upload images to appear on the page (kind of similar to a CMS). If you already have a MongoDB instance with replica sets setup, what is the preferred way to store these uploads so that failover exists and why?
- CDN, such as Amazon S3 / CloudFront.
- Store the images in MongoDB? I do this now and don't use GridFS cause our images are all under 1MB.
- Use some type of NFS with some sort of failover setup. If #3, then how do you configure this failover?
I use #2 just fine right now and have used #3 without the failover before. If I use MongoDB as the data store for my website and for serving images, could these GET requests for the images ever impact the performance of getting non-image data out of the DB?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
具有共享文件系统的 Redhat 或 CentOS 集群可以为 NFS 提供故障转移机制。
Redhat or CentOS clustering with a shared filesystem can provide a failover mechanism for NFS.
嗯,更多的图像请求 = 更多与 Web 服务器的 HTTP 连接 = 更多来自 MongoDB 的图像请求 = 更多的网络流量。
因此,理论上,从数据库获取更多图像数据可能会影响获取非图像数据。您所需要做的就是以 1MB 的速度请求 1000 个图像/秒,您将开始看到 MongoDB 服务器和 Web 服务器之间有大量的网络流量。
请注意,这不是 MongoDB 限制,而是网络吞吐量的限制。
如果您开始获得大量流量,那么绝对推荐使用 CDN。如果您已经有一个输出图像的 HTTP 页面,那么这应该非常简单。
Well, more image requests = more HTTP connections to your web servers = more requests for images from MongoDB = more network traffic.
So, yes, getting more image data from the DB could, in theory, impact getting non-image data. All you need to do is request 1000 images / sec at 1MB an image and you'll start seeing lots of network traffic between your MongoDB servers and your Web servers.
Note that this isn't a MongoDB limitation, this is a limitation of network throughput.
If you start getting lots of traffic, then the CDN is definitely recommended. If you already have an HTTP page that outputs the image, this should be pretty straight-forward.
为什么不在 MongoDB 前面加一个 CDN?
Why not a CDN in front of MongoDB?