2013-09-25 52 views
0

我已经阅读了许多有关在服务器端保存图像或数据库文件系统中的问题/评论。但是我仍然感到困惑。现在,我允许用户上传图片(限制为10MB),并将图片保存在服务器文件夹中,并通过指向该位置的apache上下文路径配置来提供图片。但是,由于图像数量和高负荷。我们希望提供负载平衡和故障转移功能。所以我有2个选项。图像服务器性能

  1. 添加代码以将上传的图像复制到所有服务器或使用rsync来执行此操作。
  2. 使用CouchDB或MongoDB并将图像另存为文档的附件。所以我具有开箱即用的功能。

谁能告诉我这些方法的优点/缺点。与文件系统相比,CouchDB/MongoDB可以具有相同的读取性能吗?

回答

0

您还可以将文件存储在分布式文件系统中。与数据库支持的映像服务器相比,您无需更改应用程序。显然,以相同方式存储所有数据(包括图像)可能对您有益,但更改已经工作的系统的体系结构可能也存在问题。

例如,GlusterFS可以安装在“正常”的文件系统给你分配的功能最大限度地减少更改系统本身的顶部。它应该通过它的插件(翻译器)支持云系统可能期望的所有功能:复制,负载平衡,文件剥离到重定位部分和故障转移。

+0

是的,我也看一些开源比如然而mogileFS,GlusterFS或CODA,它tooks长的学习曲线开始,有时我不知道从哪里开始,因为缺乏文件。我的简单解决方案仍然可以正常工作,但是当我想扩展时会出现问题。使用CounchDB或MongoDB可以提供我所需的可扩展性。但是,由于声誉不佳,仍然害怕将图像存储在数据库中。 –

0

与文件系统相比,CouchDB/MongoDB具有相同的读取性能吗?

不,文件系统计时器和数据库计时器之间会有滞后,这是一个不幸的现实。

我没有你的当前设置,负载和性能,所以我真的不能建议就做什么的想法,但是,Apache是​​不是一个真正的良好形象服务器反正。

你最好的选择可能是寻找到一个CDN缓存为你的形象。

+0

亲爱的Sammaye,我的应用程序只允许用户上传图像(tif,jpg,png)并返回稍后使用的URL。因此,我将上传的图像保存在服务器端位置,例如/ home/hieulam/images,然后添加一个上下文根以指向该位置以提供图像。与Apache相比,Nginx可以提高性能吗? –

+0

@HieuLam是的,特别是有正确的缓存机制 – Sammaye