我有一个小的文件集合(不到50个),每个文件平均大约4gb。我想从不同的服务器访问这些文件,尽可能少的延迟。你会怎么做?我一开始考虑使用一些数据库,但mysql对大于2gb的文件有限制。我要找的接口非常简单,我想发布与一个键关联的文件,并使用该键检索它们(与redis类似,但redis用于缓存,最大大小为512mb)。
rqenqsqc1#
如果您只是想使文件尽可能少的延迟可用,那么您正在寻找cdn(content delivery network)。cdn将把文件放在世界各地的多个数据中心,并从物理上离您最近的数据中心提取,尽可能减少延迟。CDN还针对尽可能快地检索和发送文件进行了优化。一旦缓存,请求甚至不必转到您的服务器,它只是在cdn和最终用户之间。“key”可以是文件名。当涉及到一个文件时,将它存储为一个文件(几乎是*)总是最快的。如果将其存储在数据库中,则只会为检索文件增加额外的延迟。它总是比直接检索文件慢一点。外面有很多CDN。aws的cloudfront可能是最容易访问和最便宜的(至少最初是这样)。akamai可能是最大的。maxcdn也是一个不错的选择。
rkkpypqq2#
最短的延迟是从本地存储读取文件到应用程序读取文件。这将消除所有网络延迟。接下来的任务就是如何在不同的服务器上保持这些文件的副本同步?我会考虑用syncthing来帮你。
2条答案
按热度按时间rqenqsqc1#
如果您只是想使文件尽可能少的延迟可用,那么您正在寻找cdn(content delivery network)。
cdn将把文件放在世界各地的多个数据中心,并从物理上离您最近的数据中心提取,尽可能减少延迟。CDN还针对尽可能快地检索和发送文件进行了优化。一旦缓存,请求甚至不必转到您的服务器,它只是在cdn和最终用户之间。
“key”可以是文件名。
当涉及到一个文件时,将它存储为一个文件(几乎是*)总是最快的。如果将其存储在数据库中,则只会为检索文件增加额外的延迟。它总是比直接检索文件慢一点。
外面有很多CDN。aws的cloudfront可能是最容易访问和最便宜的(至少最初是这样)。akamai可能是最大的。maxcdn也是一个不错的选择。
rkkpypqq2#
最短的延迟是从本地存储读取文件到应用程序读取文件。这将消除所有网络延迟。
接下来的任务就是如何在不同的服务器上保持这些文件的副本同步?我会考虑用syncthing来帮你。