networking限制大file upload过程

我的应用程序需要有一个file upload组件,将上传非常大(> 1GB)的文件。 我还没有决定协议(HTTP或FTP)去(在这方面的任何帮助将不胜感激)。 现在,当一个用户使用这个上传function时,其他用户的工作不应该受到阻碍,即一个大file upload不应该占用其他用户的带宽。

有没有什么办法可以在n / w中限制这个上传过程,所以我只能分配这么多的b / w,这将继续上传过程,其他用户的工作也不会受到阻碍? 从n / w的angular度来看,对于这种types的大file upload(HTTP或FTP),什么是最好的协议? 有FTP和SFTP相同的东西或SFTP有更多的开销,因此有较慢的数据传输速率?

如果不考虑安全性,那么首选ftp over sftp来避免头部encryption。 对于大到1GB的文件,我不认为你会担心人们嗅探,因为用户通常不会嗅到这样的大文件。 所以ftp是好的。

如果您需要限制自己的应用程序,那么我build议您在应用程序本身中包括数据速率限制支持,但是如果使用第三方库进行发送,则可能无法进行发送。

您没有说明有关您的平台和预期的安装环境的任何问题,使特定的build议变得困难,但是libcurl( http://curl.haxx.se/ )通常是一个stream行的select,并且支持几乎所有的直接点对点协议传输,具有速率限制选项,并可用于大多数平台,包括Linux,BSD,MacOS和Windows。 许可证是允许它链接到非F / OSS应用程序的许可证,如果这是你的问题,并且如果你找不到你select的语言的直接绑定,你总是可以通过外部curl实用程序来调用它。

如果您使用不支持速率限制的库或外部程序,而您正在使用Linux(或其他unix-like环境),则可以查看涓stream( 请参见此处 )或可用的内置stream量调整现代内核(这里有很多指导, 这是一个快速谷歌的顶部)。 使用像这样的stream量整形将允许您控制整个传出带宽,而不仅仅是一个应用程序,因此您可以停止消耗所有networking上游带宽的任何stream(或stream的组合),而不更改单个应用程序。

如果您使用的应用程序支持,则可以在应用程序级别节制带宽。 例如,curl采用可以指定的–limit-rate选项。

您可以使用服务质量(QoS)来限制networking本身的带宽。 这有点复杂 – 这里有一个很好的介绍。