我有一个很小的文件集合(少于50个),每个文件平均约为4 4GB。我希望能够从不同的服务器访问这些文件,并尽可能减少延迟。你会怎么做?
我一开始考虑使用一些数据库,但MySQL对大于2 2GB的文件有限制。
我正在寻找的接口非常简单,我想发布文件,将它们与一个键相关联,并使用该键检索它们(就像redis一样,但redis用于缓存,最大大小为512MB)。
发布于 2018-01-09 03:22:12
如果你只是想让一个文件在尽可能小的延迟下可用,你正在寻找一个CDN (内容分发网络)。
CDN会将文件放在全球多个机房,并从离您最近的机房拉取,尽可能减少延迟。CDN还针对快速检索和发送文件进行了优化。一旦缓存,请求甚至不需要去你的服务器,它只需要在CDN和最终用户之间。
"key“可以只是文件名。
当涉及到文件时,将其存储为文件(几乎是*)总是最快的。如果您将其存储在数据库中,则只会增加检索文件的额外延迟。它总是至少比直接检索文件慢一点。
有许多CDN存在。亚马逊网络服务的CloudFront可能是最容易获得和最便宜的(至少最初是这样)。Akamai可能是最大的。MaxCDN也是一个很好的选择。
*:从仅检索文件的超级技术、纯速度的角度来看,将其保存在内存(RAM)而不是存储(硬盘)中可能会更快,这一点您可以轻松地使用数据库,尽管您也可以使用自定义文件系统驱动程序。虽然使用CDN,您失去了这种低级控制,但具有分布式服务器的CDN的好处将会更多。
发布于 2018-01-09 03:34:19
最小的延迟是从读取文件的应用程序的本地存储中读取文件。这将消除所有网络延迟。
那么任务就变成了如何在不同的服务器上保持这些文件的副本同步?我会考虑使用SyncThing来帮助解决这个问题。
https://stackoverflow.com/questions/48156667
复制相似问题