Zenodo: 学生项目:通过 HTTP 优化大文件下载/上传性能

创建于 2016-02-12  ·  6评论  ·  资料来源: zenodo/zenodo

用例

  • A) 一位研究人员想要将他/她的 260GB 研究数据集上传到 Zenodo。 研究人员只有拥有他/她的浏览器来完成这项工作。 变化:研究人员了解一点 Python,可以编写一个脚本,通过 API 将文件上传到 Zenodo。
  • B) 一位研究人员想从 Zenodo 下载一个 260GB 的研究数据集。

我们在这里讨论的是大文件(最小 100mb,

目标
优化从 Zenodo 上传和/或下载数据的性能。

上传
尽快将数据从 Zenodo 转移。 使用 1) JavaScript(浏览器)和/或 2) Python (API)。

_客户端_
JavaScript:块文件(许多现有的库都支持这个 - 例如 PLUpload),并行上传块(在任何地方都没有看到这个 - 可以使用例如 javascript web worker)。

Python:与 JavaScript 相同 - 块/并行化 + 查看 HTTP 管道和 TCP 层。

需要考虑的问题:

  • 文件完整性(我们如何确保用户拥有的文件正是已上传的文件(校验和文件,但如果您并行上传,您的校验和算法应该支持它)。
  • 潜伏
  • 浏览器对正在使用的功能的支持。

_服务器端_

  • 进程模型(阻塞/非阻塞 IO)——我们使用 Gunicorn 来运行我们的 Python 进程,这些进程具有不同的事件模型。
  • 服务器端的性能分析(例如,服务器可以将文件直接传输到文件存储,还是需要将块保存在内存中)。
  • 我们怎样才能增加并发连接的数量。

下载
示例 1:1000 个文件中的 260GB 数据集。 研究人员如何无需单击 1000 个链接即可轻松下载文件。
示例 2:4 个文件中的 260GB 数据集。 如果网络连接丢失(即可恢复下载)会发生什么情况。

_客户端_
也许可以编写一个 JavaScript 应用程序来帮助下载 1000 个文件。 相同的应用程序可以帮助进行可恢复下载。 同样,Javascript Web Worker 模型可能用于分块下载文件。

_服务器端_
实现对 HTTP 范围请求的支持。 像上传(流程模型和并发下载)。 例如,缓慢的客户端花时间下载文件将填满线路。

范围外(但应讨论):优化文件交付的其他方法,如内容交付网络。


Python 部分将主要进入 inveniosoftware/invenio-files-rest
JavaScript 部分将是单独的存储库。

最有用的评论

有没有比使用普通互联网浏览器下载大文件更好的方法? http 上的大文件往往会在数小时内失败,并且无法恢复下载。

就我而言,我正在尝试下载 50 GB 的数据集。
下载速度大约为 500 Kbps,并且在下载持续的 12 小时内连接失败。

几个月来我一直在尝试每天下载它(我需要我的硕士论文的数据集)。
有什么建议?

所有6条评论

很抱歉在一个有点偏离主题的方向上重新提出这个老问题......我非常希望 Zenodo HTTP 服务器支持原始评论中提到的 HTTP 范围请求。 据我所知,他们目前还没有获得荣誉。 目前这在路线图上吗?

有没有比使用普通互联网浏览器下载大文件更好的方法? http 上的大文件往往会在数小时内失败,并且无法恢复下载。

就我而言,我正在尝试下载 50 GB 的数据集。
下载速度大约为 500 Kbps,并且在下载持续的 12 小时内连接失败。

几个月来我一直在尝试每天下载它(我需要我的硕士论文的数据集)。
有什么建议?

5 次尝试后我什至无法下载 2.2 GB 的数据集,下载管理器也无济于事。

@Vichoko ,您设法解决了吗? 如果是,如何?

我也很沮丧地尝试下载一个包含两个大文件(12Gb 和 37Gb)的数据集。

我找到了https://zenodo.org/record/1261813 (https://gitlab.com/dvolgyes/zenodo_get),它确实有很大帮助。 我第一次尝试下载了整个记录。
乍一看,我看不出它有什么神奇之处,所以我猜这个技巧一定是在wget的 Python 实现的一些内部结构中。

Link: https://zenodo.org/api/files/cb4ca1fa-1db1-40f9-8f39-0e9d3b2af7ae/musdb18hq.zip   size: 21607.1 MB
  0% [                                             ]     3121152 / 22656664047

2006 年,我可以通过拨号更快地下载 21GB 的文件。 Zenodo 是否缺乏 CDN 基础设施? 为什么不使用 S3 或 GCS 存储桶?

鉴于 Zenodo 表现出异常缓慢和不稳定的下载,我认为应该重新打开这个问题。 或者如果有另一个问题来跟踪 Zenodo 下载?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ChiaraBi picture ChiaraBi  ·  4评论

minygd picture minygd  ·  8评论

bbarker picture bbarker  ·  4评论

maurice-schleussinger picture maurice-schleussinger  ·  3评论

davidanthoff picture davidanthoff  ·  5评论