mysql—存储要从多个节点访问的大型只读文件的最佳方式

sz81bmfz  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(357)

我有一个小的文件集合(不到50个),每个文件平均大约4gb。我想从不同的服务器访问这些文件,尽可能少的延迟。你会怎么做?
我一开始考虑使用一些数据库,但mysql对大于2gb的文件有限制。
我要找的接口非常简单,我想发布与一个键关联的文件,并使用该键检索它们(与redis类似,但redis用于缓存,最大大小为512mb)。

rqenqsqc

rqenqsqc1#

如果您只是想使文件尽可能少的延迟可用,那么您正在寻找cdn(content delivery network)。
cdn将把文件放在世界各地的多个数据中心,并从物理上离您最近的数据中心提取,尽可能减少延迟。CDN还针对尽可能快地检索和发送文件进行了优化。一旦缓存,请求甚至不必转到您的服务器,它只是在cdn和最终用户之间。
“key”可以是文件名。
当涉及到一个文件时,将它存储为一个文件(几乎是*)总是最快的。如果将其存储在数据库中,则只会为检索文件增加额外的延迟。它总是比直接检索文件慢一点。
外面有很多CDN。aws的cloudfront可能是最容易访问和最便宜的(至少最初是这样)。akamai可能是最大的。maxcdn也是一个不错的选择。

  • :从超技术、纯速度的Angular 来看,仅检索文件,将其保存在内存(ram)而不是存储(硬盘)中可能会更快,这可以很容易地用数据库完成,不过也可以用自定义文件系统驱动程序完成。当使用cdn时,您将失去这种低级别的控制,而拥有分布式服务器的cdn的好处将要大得多。
rkkpypqq

rkkpypqq2#

最短的延迟是从本地存储读取文件到应用程序读取文件。这将消除所有网络延迟。
接下来的任务就是如何在不同的服务器上保持这些文件的副本同步?我会考虑用syncthing来帮你。

相关问题