Otimização de rede para o processo de upload de arquivos grandes

3

Meu aplicativo precisa ter um componente de upload de arquivo que fará upload de arquivos muito grandes (> 1gb). Eu ainda estou para decidir sobre o protocolo (HTTP ou FTP) para ir para (Qualquer ajuda a este respeito será muito apreciada). Agora, quando um usuário está usando esse recurso de upload, o trabalho de outro usuário não deve ser prejudicado, ou seja, um upload de arquivo grande não deve consumir a largura de banda de outro usuário.

Existe alguma maneira de este processo de upload ser regulado na n / w, de modo que eu possa alocar tanta b / w para ele, o que continuará o processo de upload e o trabalho de outro usuário também não está sendo prejudicado? Qual será o melhor protocolo para esse tipo de upload de arquivos grandes (HTTP ou FTP) do ponto de vista n / w? Está tendo FTP e SFTP a mesma coisa ou SFTP tem mais sobrecarga e, portanto, tem menor taxa de transferência de dados?

    
por kaychaks 07.07.2009 / 03:57

3 respostas

1

Se a segurança não for preocupante, prefira o ftp over sftp para evitar a criptografia na cabeça. Para arquivos de até 1 GB, não acho que você se preocupe com pessoas farejando, já que os usuários não costumam farejar esses arquivos grandes. Então o ftp está bem.

    
por 07.07.2009 / 09:34
3

Se você estiver precisando controlar seu próprio aplicativo, sugiro que inclua suporte limitador de taxa de dados no próprio aplicativo, mas se você estiver usando uma biblioteca de terceiros para fazer o envio, isso pode não ser possível.

Você não diz nada sobre a sua plataforma e o ambiente de instalação pretendido, o que dificulta recomendações específicas, mas o libcurl ( link ) é geralmente um escolha popular e suporta praticamente todos os protocolos para transferências ponto-a-ponto, tem opções limitadoras de taxa e está disponível para a maioria das plataformas, incluindo Linux, BSD, MacOS e Windows. A licença é uma que permite a sua ligação em aplicações não F / OSS também, se isso for um problema para você, e se você não puder encontrar ligações diretas para o seu idioma escolhido, você sempre poderá chamá-lo através do utilitário curl externo.

Se você está preso usando uma biblioteca ou um programa externo que não suporta limitação de taxa e você está usando Linux (ou outro ambiente similar ao unix), então você pode procurar em trickle ( veja aqui ) ou a modelagem de tráfego que está disponível embutida nos kernels modernos (existem muitos guias para isso, isso é o que chegou ao topo de um rápido Google). Usar a modelagem de tráfego como essa permitiria controlar toda a largura de banda de saída, não apenas um aplicativo, para impedir que qualquer fluxo (ou combinação de fluxos) consumisse toda a largura de banda upstream de sua rede sem alterar aplicativos individuais.

    
por 07.07.2009 / 10:13
1

Você pode limitar a largura de banda no nível do aplicativo, se o aplicativo que você estiver usando suportar. Por exemplo, o curl usa uma opção de limite de limite que você pode especificar.

Você pode limitar a largura de banda na própria rede, usando Qualidade de Serviço (QoS). Isso é um pouco mais complicado - uma boa introdução é aqui .

    
por 07.07.2009 / 05:43