总结

总结

我在 HPCloud 的 6 台以上服务器上运行了一个 SaaS 应用程序,它会产生大量数据 (GB/TB)。用户通过 RESTful API 与应用程序交互,应用程序会返回一个指向我们 CDN 的链接,用户可以通过该链接下载文件。

我的问题:

  1. 根据我的研究和之前在 SF 上提出的问题,将所有生成的数据存储在某种集中存储(例如通过 NAS/SAN)上将是最好的解决方案,这样我的 CDN 就始终知道文件将在哪里提供 - 这也将有助于将来更好地扩展。由于我使用的是类似于 Rackspace 的云,我可以选择哪些方式来执行此操作?

  2. 我自己可以参考一下,像 mediafire 这样的公司是如何存储 TB/PB 数据并同时 LB 下载的?他们是不是有大量服务器连接到同一个 NAS/SAN?

更新

Ablue请求的数据:

您是否正在创建通过 http 提供的文件?是的,这些文件将主要通过 HTTP 下载

您需要块级存储吗?目前不需要,但将来可能会需要

你想要多少存储空间?目前我可以使用约 300GB,但将来我需要能够扩展

你想要/需要什么样的访问速度?写入速度越快越好,但读取时间并不那么重要。这里的主要问题是,使用像 S3 这样的系统会增加延迟,因为复制数据需要很长时间

你有预算吗?是/否...对于我使用的云,我基本上可以启动 3-5 个服务器,每个服务器大约有 120GB 的存储空间

答案1

总结

1) 在云上,除非您想要使用类似 S3 的系统,否则没有那么多便宜的选择。使用集中式系统,您只能在遇到问题之前进行一定程度的扩展(请参阅扩展与扩展),因此如果您要推出自己的解决方案,那么最好从分布式系统开始,该系统允许您根据需要添加和删除服务器,而不仅仅是获得大型 SAN 并不断添加磁盘。

2) 他们几乎肯定会使用专用硬件、共置硬件或私有数据中心硬件。如果你去存储提供商那里说“嘿,我想买 2000 个磁盘”,如果你知道自己在做什么,他们会给你相当不错的折扣。存储 100TB 的数据总是比存储 100GB 的数据便宜(按每 GB 计算),存储的越多越便宜。


研究一下分布式数据存储,比如 HFS 或 Riak。从未使用过 HFS,但我们在 4 个节点上使用 Riak 集群,存储量为 10TB。RIAK 有一个 HTTP API,因此只需进行一些仔细的配置,您就可以将 CDN 指向您的 Riak 集群。或者,只需使用 S3、RackSpace 云文件、Google Storage 等,让其他人为您操心。由于现有的存储提供商已经拥有多 TB/PB 的存储量,因此他们很可能比您自己做更便宜。

话虽如此,BackBlaze(在线备份公司)“开源”了其存储“pod”的设计,这些存储“pod”可以以非常低的成本存储大量数据。它们更适合“一次写入,多年不做任何事情”,这是备份的本质,但这仍然是一篇有趣的文章。你也可以看看类似BroadBerry 存储服务器,他们的顶级型号有 36 个热插拔驱动器托架,但不带驱动器则成本 +5,000 美元(如果用 2TB 企业级 7200RPM 驱动器填充,则成本大约为 25,000 美元,如果用便宜的驱动器填充,则成本为 15,000 美元,这完全取决于您的工作量)。卵巢癌如果我没记错的话,提供一些带有约 20TB 非 RAID 存储的“备份”服务器,价格约为 200 英镑/月。

您还需要考虑分层存储。基本上,这意味着您可以根据需要将数据分成“层”。如果某些对象必须不惜一切代价保留,并且需要快速访问,则应将它们放在顶部或“黄金”层存储中,这些存储具有快速、可靠的磁盘,并且服务器能够很好地处理负载。这可能是您将放在高端 SAN 上的东西,这些 SAN 具有许多可爱的 SAS 甚至 SSD 磁盘。如果您有一些可重新生成且不需要快速访问的对象(例如,通常缓存在 CDN 边缘的图像的缩略图),您可以将它们放在“银”层存储中;更便宜的磁盘,放在较慢的服务器上。然后您有了备份,虽然您可能永远不需要它们,并且它们可能不需要立即可用,但您希望尽可能长时间地保留它们,尽可能便宜。您可以将它们放在“青铜”存储中,例如磁带。

我描述的存储级别纯属虚构,完全有可能有 50 个存储层,您可以随意称呼它们。可能即使是最低的存储层也需要超快速访问,这完全取决于您的使用情况。

答案2

了解需要访问哪些文件以及如何访问非常重要。

  • 您是否正在创建通过 http 提供服务的文件?
  • 您需要块级存储吗?
  • 您想要多少存储空间?
  • 您想要/需要什么样的访问速度?
  • 您需要提供什么级别的服务?
  • 你有预算吗?

当人们想要以低延迟和高速度存储大量数据时,通常会使用 SAN。光纤通道通常用于实现最佳延迟,但 iSCSI 和 NFS 也表现良好。显然,您无法将光纤连接到 VPS,并且 iSCSI 和 NFS 在隔离(单独的 NIC 和 VLAN)和您可以处理的最大 MTU 时表现最佳,因此 VPS 不适合这里。

在这种情况下,您需要将自己的物理服务器置于同一位置。

这一切都假设这是您需要访问的文件的要求,并且假设您不只是从提供商处购买更多存储空间。

在开始讨论任何具体内容之前,你至少需要解决上述问题。

编辑(对问题编辑的回应):

您提到了负载平衡。如果您使用自己的硬件,则可能希望使用某种 ACTIVE:ACTIVE HA 集群。

考虑到您的标准,Sam 建议使用 RAIK 确实是一个好主意。

我个人认为,如果您要投资硬件和主机托管,您应该有一个关于您想要或期望如何增长的周密计划;这应该有助于防止您在错误的领域进行投资。

在这个阶段,您可能想听从 Sam 的建议,另一个想法可能是购买一些位于世界各地您预计使用地点的 VPS,每个 VPS 都具有您想要的存储空间(300GB 应该相当便宜);然后在它们之间复制数据。您可以使用 DNS 进行负载平衡,使用循环或更复杂的方法(如果您愿意的话)(通过地理位置引用或其他方法)。对于 VPS 来说,扩展存储空间相当轻松。

在这个阶段运行自己的硬件将非常昂贵,而且收益不大。当/如果您需要 TB/PB 存储,那么可能是时候投资硬件了,在这种情况下,您只需购买硬件来提供您当前托管的内容。

相关内容