方案:
*用户上传图像并输入有关该图像的一些信息
*信息和图像上传(到所有服务器)
*用户确认图像已上传
因素:
*数十台服务器,分布在世界各地
*图像最终应该在磁盘上,因为它将被提供服务
*信息应最终存入数据库中
*图像很小,不大于5mb
我们考虑了各种架构解决方案和技术(git murder,rsync仅举几例),但我们仍然不是100%如何处理这个问题。当前的解决方案太慢了,我们正在寻求改进(我们将文件从“上传”服务器推送到所有服务器)。
有什么想法?提前致谢
答案 0 :(得分:0)
首先,为简单起见,我们假设数据被写入文件,两个文件一起压缩。所以下面我假设只有一个文件(zip文件)。这只是一个细节(对于bittorrent来说实际上是完全没必要的!)
对于大型文件,Bittorrent(或以类似方式工作的东西)基本上是最快的方法。一旦服务器下载了一段文件,它就会开始尝试将其上传到需要它的任何其他服务器。您可以修改bittorrent以优先选择地理上更接近的IP,以最大限度地减少LAN间带宽的使用。如果您不需要使用bittorrent,或者如果文件很小而没有意义,只需将一台服务器上传到另外两台,然后将其他两台服务器上传到另外两台,等等。或者你可以使用超过2的扇出系数。尝试最适合你的方法。
答案 1 :(得分:0)
看看Riak。它为大规模分发和数据复制提供了非常好的支持。我们已经成功使用它已经有一段时间了,而且它已经证明非常有弹性。
我在Riak上建模,图像和元数据分开存储,它们之间有链接。它们都以这种方式进入“数据库”和磁盘,通过简单的方式将表单转换为另一个并通过URL访问。
注意:对于通过WAN进行复制,您需要企业版,这不是免费的。