Por que o Dropbox pode ser super rápido comparado ao FTP?

36

Eu gostaria de saber por que, tecnicamente, o Dropbox é muito mais rápido que o FTP? Que tipo de tecnologia usa?

Não estou falando sobre arquivos diff, estou falando sobre a transferência de novos arquivos em ambos os casos, o Dropbox é muito mais rápido.

Quero dizer, muito mais rápido, talvez 10 vezes mais rápido que o FTP para arquivos que eu enviei. Vou experimentar novamente para arquivos maiores depois.

    
por Peter Mortensen 15.03.2010 / 00:16

6 respostas

31

Pode haver várias razões para isso.
O protocolo FTP está longe eficiente.

  1. Uma transferência de FTP precisa de pelo menos duas conexões (uma para controle e outra para dados) onde o DropBox pode estar usando apenas uma conexão HTTP. Além disso, a conexão de dados para uma sessão FTP pode ser aberta do servidor para o seu cliente e, se você estiver NATed, poderá falhar para que seu cliente FTP tente se conectar, falhando e tentando o contrário.

  2. Há muitas coisas acontecendo em uma conexão FTP. Para enviar um arquivo, o cliente precisa enviar no mínimo dois comandos (um para abrir a conexão de dados e outro para iniciar o envio) e cada vez que precisar aguardar o servidor responder, adicionando latência extra. Além dessas duas viagens de ida e volta por arquivo, há várias viagens de resposta de comando para a conexão inicial - uma para enviar o nome de usuário, uma para a senha e pelo menos uma para definir parâmetros de transferência (para garantir que o servidor esteja esperando dados binários, não ASCII,). O cliente também pode emitir alguns comandos extras para obter informações do servidor sobre si mesmo. É provável que o Dropbox esteja usando apenas uma solicitação HTTP, ou no máximo duas (uma para autenticar, uma para enviar os dados).

  3. Além disso, dependendo de qual cliente você está usando para transferências por FTP (que você não especifica, seria uma boa idéia editar sua pergunta para incluir essa informação), pode estar perdendo a conexão após cada operação de envio e reconectar da próxima vez. Não é improvável que o DropBox mantenha uma conexão aberta por um tempo para fins de sondagens longas, para reagir o mais rápido possível a novos dados disponíveis que este cliente deve baixar, assim, enquanto ele precisa abrir um novo Conexão HTTP para enviar um arquivo, ele não precisará ser autenticado novamente.

  4. Não é improvável que o cliente DropBox esteja compactando dados antes de enviá-los (para melhorar a velocidade e economizar largura de banda) onde o seu cliente FTP não estará. Portanto, mesmo para arquivos maiores (a menos que sejam pré-compactados ou criptografados), o DropBox e utilitários como ele podem ser mais rápidos do que uma transferência FTP básica por alguma margem.

Para arquivos grandes, os três primeiros pontos acima serão insignificantes em comparação com o tempo gasto para transferir os dados, mas o ponto 4 ainda pode ser bastante importante. Para arquivos pequenos, todo o tempo extra de configuração adicionado pelo protocolo FTP pode ser um pouco mais longo que o tempo necessário para realmente enviar os dados.

    
por 15.03.2010 / 01:40
15

Como outros já mencionaram, o Dropbox pode pular partes de arquivos que não foram alterados . Mas também, o Dropbox irá ignorar o upload de arquivos se ele já tiver uma cópia no lado do servidor (um que você ou alguém já enviou).

Então, se você está tentando carregar um arquivo que é idêntico a um arquivo que o Dropbox já possui, o upload é ignorado (e as outras máquinas ligadas podem começar a baixá-lo dos servidores Dropbox). Se você estiver enviando um arquivo que é quase idêntico a outro arquivo já carregado (não está claro se o arquivo já carregado deve ser 'seu' ou pode ter vindo de qualquer usuário), ele enviará apenas partes suficientes do arquivo. arquivo para recriá-lo no servidor quando combinado com o arquivo que já foi carregado.

O FTP não pode fazer nada disso (é um protocolo simples para enviar e receber fluxos de dados sem referência a quaisquer outros dados disponíveis no lado remoto). Ferramentas como rsync e Unison pode 'pular partes que o outro lado já tem', mas geralmente limitam-se a comparar trechos dentro de arquivos em um caminho idêntico na hierarquia sincronizada. O Dropbox parece estender essa ideia para coleções de arquivos (então, se você "carregar" dois arquivos quase idênticos, presumivelmente, ele poderia enviar apenas um mais "diff" para recriar o outro).

    
por 15.03.2010 / 04:29
11

Suponho que você quer dizer mais rápido em termos de transferência de arquivos. Quando você salva um arquivo na sua pasta do Dropbox, o Dropbox envia apenas o delta (ou diff) dos dados para o armazenamento remoto servidor. O FTP (mais provável) envia o byte do arquivo por byte (em vez de apenas enviar as alterações), o que potencialmente leva muito mais tempo para ser transferido por uma rede. Da mesma forma, ao sincronizar do servidor remoto, os clientes locais farão o download apenas das alterações.

O recurso de sincronização da LAN também pode acelerar as sincronizações e reduzir o tráfego de rede necessário.

    
por 15.03.2010 / 00:29
0

O Dropbox pode ser mais rápido quando você envia uma quantidade maior de arquivos. FTP é tão rápido quanto você pode obter quando falamos de velocidade, mas é preciso muito "conversa" entre o servidor eo computador cliente para cada arquivo, assim o ftp parece ser mais lento. Se você estiver carregando algum aplicativo de código aberto com milhares de arquivos, é mais conveniente compactar todos os arquivos, carregá-lo via FTP e descompactá-lo no servidor.

    
por 15.03.2010 / 01:55
0

Eu acho que eles usam técnicas simples de hash semelhantes a md5 / sha

Sempre que você soltar um arquivo dentro da "caixa de depósito" local, o dropbox-client calcula o hash desse arquivo e deve enviar alguns dados extras, como o tamanho do arquivo e o nome do arquivo para o servidor dropbox.

Se o dropbox-server encontrar arquivos similares (eles devem manter o índice de hashes e dados de arquivo em seu servidor) ele simplesmente informará ao cliente que o arquivo foi "enviado" com sucesso. ; -)

Desta forma, você acaba "carregando" o arquivo apenas logicamente. Como não há transferência real de conteúdo de arquivo, isso deve ser mais rápido que qualquer outra coisa.

Não sei ao certo qual algoritmo de hashing usa o dropbox, mas tenho 100% de certeza de que seu princípio de funcionamento é semelhante ao descrito acima.

    
por 21.12.2010 / 21:18
0

Embora o Dropbox esteja usando outros serviços, eles têm usado historicamente o Amazon AWS (Amazon Web Services). Parece que a sua transferência da origem para o destino tem um tubo de transferência muito grande. Na minha experiência, o Dropbox está usando um destino que pode aceitar grandes quantidades de dados de uma só vez. O Dropbox também distribui o upload para diferentes endereços IP. O site para o qual você está realizando o FTP provavelmente tem um canal de transferência muito menor e não tem a capacidade de distribuir envios com a mesma eficiência.

Se você executar Monitor de recursos (resmon) , e vá para a guia Rede, você notará os diferentes processos usando a largura de banda da rede.

  • Em Processos com atividade de rede, selecione a coluna para Total (B/sec)
  • Em Conexões TCP, selecione a coluna para Total (B/sec)

Para mim, quando estou enviando um arquivo para o Dropbox, ele está usando 4 conexões para enviar 4 endereços IP diferentes.

    
por 18.10.2014 / 01:20

Tags