【发布时间】:2013-12-25 16:48:14
【问题描述】:
通常在开发网站时,我希望尽可能远离网络服务器。我尝试将配置详细信息、会话数据等存储在数据库后端。这样我就可以在需要时轻松地重新构建 Web 服务器,或者在理论上根据需要添加更多 Web 服务器。
我遇到的一个问题是客户端上传图像数据或二进制文件时。我倾向于将它们原始存储在 Web 服务器上,而不是将它们放入数据库中。但问题是我需要从网络服务器备份这些数据,我不太喜欢。
我希望网络服务器只提供数据,而不是存储它。我已经研究了诸如将文件通过 FTP 传输到另一组 Web 服务器上的选项,这些 Web 服务器仅充当内容交付服务器(不对它们进行脚本或处理),或者将客户端数据放入数据库中的 blob 中。我考虑过的另一个选择是将文件放在特定的文件服务器上,就像在 LAN 上一样,然后将来自文件服务器的共享安装到 Web 服务器上,并让 Web 服务器直接传送它。我什至考虑过将它放入 Hadoop 风格的 HDFS 分布式文件系统中,然后让网络服务器从那里拉取它,但这些看起来都不太正确。
无论如何,在存储客户端提供的二进制数据(如图像或文档)时,通常认为最佳做法是什么?
我更喜欢通用的网络架构类型响应/方法,而不是一种特定语言可能鼓励或促进某种解决方案的方式。但是,如果您可以比较和对比多种不同语言/库所提倡的方法,那么了解这些方法也将非常有趣。
【问题讨论】:
-
无法在数据库中添加这些文件?
-
是一种选择,其实都是可能的。从网站设计的角度来看,这更像是一种被认为是“好的做法”和被认为是“坏做法”的情况。显然,每种方法都需要考虑不同的因素,例如成本、易于开发、可扩展性等。
-
数据库或云(amazon s3),倾向于后者
-
if (careAboutDataIntegrity) useDatabase();否则使用S3();
标签: design-patterns web architecture