【问题标题】:Architecture for Image hosting site图像托管站点的架构
【发布时间】:2023-03-31 16:29:01
【问题描述】:

场景:
* 用户上传图片并输入有关该图片的一些信息
* 信息和图像被上传(到所有服务器)
* 用户确认图片已上传

因素:
* 数十台服务器,分布在世界各地
* 图像应最终存储在磁盘上,因为它将被提供
* 信息应最终存储在数据库中
* 图片很小,不超过 5mb

我们考虑了各种架构解决方案和技术(git murderrsync 等等),但我们仍然没有 100% 解决这个问题。当前的解决方案太慢了,我们正在寻求改进(我们将文件从我们的“上传”服务器推送到所有服务器)。

有什么想法吗?提前致谢

【问题讨论】:

  • 您希望将每个文件复制到所有“吨”服务器?你确定你有足够的磁盘空间吗?
  • 编辑问题以回答 Robin Green 的评论

标签: database image architecture hosting replication


【解决方案1】:

首先,为了简单起见,我们假设将数据写入一个文件,并且将两个文件压缩在一起。所以下面我将假设只有一个文件(zip 文件)。这只是一个细节(实际上对于 bittorrent 来说完全没有必要!)

对于大文件,Bittorrent(或以类似方式工作的东西)基本上是最快的方法。一旦服务器下载了文件的一部分,它将开始尝试将其上传到需要它的任何其他服务器。您可以修改 bittorrent 以更喜欢地理位置更近的 IP,以最大限度地减少 LAN 间带宽的使用。

如果您不需要使用 bittorrent,或者文件很小因此没有意义,只需将一台服务器上传到另外两台服务器,然后将另外两台服务器分别上传到另外两台,等等。或者您可以使用大于 2 的扇出因子。尝试最适合您的方法。

【讨论】:

  • 我编辑了这个问题,让事情变得更清楚 - 1. 文件很小 2. 我们希望将数据(主要是关于文件的更多信息)保存在数据库中。
【解决方案2】:

看看Riak。它为海量分布和数据复制提供了很好的支持。我们已经成功使用它一段时间了,并且证明它非常有弹性。

我会在 Riak 上对其进行建模,图像和元数据分别存储,并在它们之间建立链接。它们最终都以这种方式存储在“数据库”和磁盘中,并且可以通过一种简单的方式将表单相互连接并通过 URL 访问。

注意:要通过 WAN 进行复制,您需要企业版,它不是免费的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多