Estou enviando grandes quantidades de dados de forma sensata?

5

Estou prestes a criar um serviço de conversão de vídeo escalável no lado da conversão.

A arquitetura é a seguinte:

  • Página da web para upload de vídeo
  • Quando concluído, uma mensagem é enviada para um dos vários servidores de redimensionamento
  • O servidor localiza o vídeo, salva-o no disco e o converte em vários formatos e resoluções
  • O servidor de redimensionamento faz o upload da saída para um servidor de conteúdo e envia uma mensagem de que a conversão está concluída.

Mensagens são algo que eu cobri, mas agora estou transferindo via FTP, e me pergunto se existe uma maneira melhor? Existe algo mais rápido ou mais confiável? Todos os servidores estarão no mesmo switch gigabit ou no switch vizinho, então espera-se uma transferência rápida.

EDIT:
A questão vai no servidor < - > lado do servidor das coisas. Os servidores estão localizados na mesma LAN, portanto, a segurança da interconexão não deve ser o principal problema.

    
por Sofus Albertsen 14.11.2012 / 15:31
fonte

4 respostas

2

Eu usaria servidores autônomos. Cada servidor hospeda o frontend de upload, o codificador e o serviço de download. Dessa forma, você não precisa transferir arquivos. Para escalar, basta adicionar mais servidores - parece que você não tem nenhum obstáculo fazendo isso.

Pesquise se você pode transmitir o processo; começar a codificar o arquivo enquanto ele ainda estiver carregando, faça o download do resultado enquanto ele ainda estiver sendo codificado. Isso não reduzirá o custo de nenhuma das operações, mas o usuário final perceberá um benefício significativo.

Ofereça alternativas ao upload HTTP se seus arquivos forem grandes. Se o upload parar por qualquer motivo, o usuário deve reiniciar o upload do zero.

    
por 14.11.2012 / 21:11
fonte
1

Em vez de enviar os arquivos para os servidores, sugiro que você use uma partição no servidor que esteja montada em todos os servidores. Portanto, não precisamos mover o arquivo.

    
por 14.11.2012 / 15:35
fonte
1

"A página da web para upload de vídeo" carregará o vídeo no servidor da web. É assim que o HTTPS e um formulário HTML com um arquivo de upload funciona. Certifique-se de definir corretamente o tipo de conteúdo em sua tag de formulário para um arquivo. Você não pode enviar outros parâmetros para o servidor com a mesma solicitação que um upload de arquivo devido ao mesmo parâmetro de tipo de conteúdo. Um grande problema pode ser pessoas com arquivos grandes e / ou internet lenta que mantêm sua conexão HTTP aberta por 15 minutos ou mais. Os provedores da maioria das pessoas têm uma taxa máxima de upload de 500 Kbps (bits / s, não bytes / s) ou algo muito baixo assim. Conexões longas fazem de você um alvo para ataques DOS.

Se você quiser que o arquivo termine em algum lugar diferente do seu servidor web, você estará escrevendo código no lado do servidor. Seu aplicativo da web terá que canalizar / transmitir para esse local diferente.

O FTP é um pouco mais rápido que o HTTP, talvez 5-10% no máximo, mas acho que minha experiência mostra que ele está mais próximo de 1%. O FTP pode ser melhor para transferir 2 ou mais arquivos ao mesmo tempo, não sei. Eu acho que todos os navegadores modernos suportam FTP nativamente, assim como HTTP. Para usar outro protocolo como alguém sugeriu, você precisa do código do lado do servidor. Eu usaria HTTP para o seu primeiro passe.

Alguém levantou um bom ponto sobre a criptografia. Você quer que alguém envie um vídeo confidencial ou não público. Isso vai desacelerar um pouco as coisas, mas provavelmente não muito. HTTPS com um certificado do lado do servidor cuidará disso se você precisar.

Ao transferir arquivos grandes, você precisa usar um protocolo que garanta que eles não sejam usados pelo destinatário até que a cópia seja concluída. Talvez você toque em outro arquivo ou envie uma mensagem "all-done transferting myFile2321.avi". Compactar arquivos grandes e descompactá-los depois da transferência é geralmente mais rápido do que copiá-los pela rede ou pela Internet. Se você pagar pela banda, pode ser mais barato também.

Então, apesar de tudo, esses são alguns detalhes para pensar e algumas sugestões. Não vejo nada de errado com o seu plano geral. Veja como o YouTube faz isso, porque acho que eles já fazem tudo o que você está planejando, apenas em um contexto diferente ou por um motivo diferente.

    
por 15.11.2012 / 04:44
fonte
0

Outra opção: considere o uso de uma área de armazenamento compartilhado, que todos os servidores podem acessar.

Para isso, você precisaria usar um sistema de arquivos distribuídos . Existem vários para escolher (NFS, SMB, etc.) - qual deles é o melhor seria outra pergunta: -).

É claro que, se você usar essa rota, tome cuidado para ter algum mecanismo de bloqueio para evitar que dois servidores trabalhem no mesmo arquivo.

    
por 15.11.2012 / 11:11
fonte

Tags