Gostaria de saber por que tecnicamente o Dropbox é muito mais rápido que o FTP? Que tipo de tecnologia ele usa?
Não estou falando de arquivos diff, estou falando de transferir novos arquivos nos dois casos, o Dropbox é muito mais rápido.
Quero dizer, muito mais rápido, talvez 10 vezes mais rápido que o FTP para os arquivos que eu enviei. Vou experimentar novamente para arquivos maiores mais tarde.
Respostas:
Pode haver várias razões para isso.
O protocolo FTP está longe de ser eficiente.
Uma transferência FTP precisa de pelo menos duas conexões (uma para controle e outra para dados) em que o DropBox pode estar usando apenas uma única 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ê for NAT, isso poderá falhar, portanto seu cliente FTP poderá estar tentando se conectar dessa maneira, falhando e tentando o contrário.
Há muitas coisas a se fazer 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 a resposta do servidor, 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 os parâmetros de transferência (para garantir que o servidor seja 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 e outra para enviar os dados).
Além disso, dependendo do cliente que você está usando para transferências de FTP (que você não especifica, seria uma boa ideia editar sua pergunta para incluir essas informações), pode estar deixando a conexão cair após cada operação de envio e reconectando a próxima Tempo. Não é improvável que o DropBox mantenha uma conexão aberta por um tempo para fins de pesquisa prolongada, para reagir o mais rápido possível aos novos dados disponíveis para download do cliente; portanto, será necessário apresentar um novo Conexão HTTP para enviar um arquivo que não precisará autenticar novamente.
Não é improvável que o cliente DropBox esteja compactando dados antes de enviá-los (para melhorar a velocidade e economizar largura de banda) para onde seu cliente FTP não estará. Portanto, mesmo para arquivos maiores (a menos que estejam pré-compactados ou criptografados), o DropBox e utilitários como esse 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 ficarão insignificantes em comparação com o tempo necessário 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 potencialmente duas vezes maior que o tempo necessário para o envio dos dados.
fonte
Como outros já mencionaram, o Dropbox pode pular partes de arquivos que não foram alterados . Mas também, o Dropbox pulará o upload de arquivos se ele já tiver uma cópia no servidor (uma que você ou qualquer outra pessoa já tenha carregado).
Portanto, se você estiver tentando fazer upload de um arquivo idêntico a um arquivo que o Dropbox já possui, o upload será ignorado (e as outras máquinas vinculadas poderão iniciar o download nos servidores do Dropbox). Se você estiver carregando um arquivo quase idêntico a outro arquivo já carregado (não está claro se o arquivo já carregado deve ser 'seu' ou pode ter sido de qualquer usuário), ele enviará apenas partes suficientes do 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 enviar e receber fluxos de dados sem referência a outros dados disponíveis no lado remoto). Ferramentas como rsync e Unison podem 'pular pedaços que o outro lado já possui', mas geralmente se limitam a comparar pedaços dentro de arquivos em um caminho idêntico na hierarquia sincronizada. O Dropbox parece estender essa idéia a coleções de arquivos (portanto, se você 'enviar' dois arquivos quase idênticos, presumivelmente, ele poderá enviar apenas um mais um 'diff' suficiente para recriar o outro).
fonte
Suponho que você queira dizer mais rápido em termos de transferência de arquivos. Quando você salva um arquivo na pasta Dropbox, o Dropbox envia apenas o delta (ou diff) dos dados para o servidor de armazenamento remoto. O FTP (provavelmente) envia o arquivo byte a byte (em vez de apenas enviar as alterações), o que potencialmente leva muito mais tempo para ser transferido pela rede. Da mesma forma, ao sincronizar a partir do servidor remoto, os clientes locais farão o download apenas das alterações.
O recurso de sincronização da LAN também pode potencialmente acelerar as sincronizações e reduzir o tráfego de rede necessário.
fonte
O Dropbox pode ser mais rápido quando você envia uma quantidade maior de arquivos. O FTP é o mais rápido possível quando falamos de velocidade, mas é preciso muito "diálogo" entre o servidor e o computador cliente para cada arquivo; portanto, o ftp parece 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.
fonte
Eu acho que eles usam técnicas simples de hash semelhantes ao md5 / sha
Sempre que você solta um arquivo dentro da "caixa de depósito" local, o cliente da caixa de depósito calcula o hash desse arquivo e deve enviar alguns dados extras, como tamanho do arquivo, nome do arquivo para o servidor da caixa de depósito.
Se o servidor da caixa de depósito encontrar arquivos semelhantes (eles devem manter o índice de hashes e dados do arquivo no servidor), ele simplesmente informará ao cliente que o arquivo foi "carregado" com êxito. ;-)
Dessa 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 do que qualquer outra coisa.
Não tenho certeza de qual dropbox do algoritmo de hash usa, mas tenho 100% de certeza de que o princípio de funcionamento é semelhante ao descrito acima.
fonte
Embora o Dropbox esteja usando outros serviços, eles historicamente usam o Amazon AWS (Amazon Web Services). Parece que 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á enviando o FTP provavelmente possui um canal de transferência muito menor e não tem a capacidade de distribuir envios com a mesma eficiência.
Se você executar o Monitor de Recursos (resmon) e for para a guia Rede, notará os diferentes processos usando a largura de banda da rede.
Total (B/sec)
Total (B/sec)
Para mim, quando carrego um arquivo no Dropbox, ele usa 4 conexões para enviar 4 endereços IP diferentes.
fonte