Warum kann Dropbox im Vergleich zu FTP superschnell sein?


36

Ich würde gerne wissen, warum Dropbox technisch viel schneller ist als FTP? Welche Art von Technologie verwendet es?

Ich spreche nicht über Diff-Dateien, ich spreche über das Übertragen neuer Dateien in beiden Fällen, Dropbox ist viel schneller.

Ich meine es sehr viel schneller, vielleicht 10 mal schneller als FTP für Dateien, die ich hochgeladen habe. Ich werde später noch einmal nach größeren Dateien suchen.


2
Welche Größe, Art und Anzahl von Dateien haben Sie hochgeladen? Wie lange hat jeder von ihnen für das Hochladen gebraucht? Wohin haben Sie die Dateien per FTP hochgeladen? Dropbox ist keine Zauberei. Die einfachste Erklärung ist, dass der FTP-Server, den Sie hochgeladen haben, viel weniger Bandbreite hat als Amazon.
user23307

2
Wenn sie es bereits haben, wird es nicht erneut hochgeladen; p
Journeyman Geek

4
Sie sagen "neue Dateien", aber wenn es sich bei diesen Dateien nicht um frische, zufällige Daten handelt, sehen Sie wahrscheinlich den Vorteil der Synchronisierung auf Blockebene (wie in rsync und anderen Tools).
Chris Johnsen

1
Dies ist eher ein Hosting-Vergleich. Ich kenne FTP-Server, die schneller als Dropbox sind, und ich verwende auch mehrere Verbindungen mit Filezilla, sodass die in diesen Antworten aufgeführten Aussagen nicht zutreffen.
Tamara Wijsman

Dropbox verwendet die Deduplizierung, um Speicherplatz für häufig verwendete Dateien zu sparen, sodass sie nicht hochgeladen werden müssen, wenn sie bereits vorhanden sind.
Paradroid

Antworten:


31

Hierfür kann es mehrere Gründe geben.
Das FTP - Protokoll ist weit von effizient.

  1. Für eine FTP-Übertragung sind mindestens zwei Verbindungen erforderlich (eine für die Steuerung und eine für Daten), wobei DropBox möglicherweise nur eine einzige HTTP-Verbindung verwendet. Außerdem wird möglicherweise die Datenverbindung für eine FTP-Sitzung vom Server zu Ihrem Client geöffnet. Wenn Sie NAT verwenden, schlägt dies möglicherweise fehl, sodass Ihr FTP-Client möglicherweise versucht, eine Verbindung auf diese Weise herzustellen, und schlägt fehl, wenn Sie es andersherum versuchen.

  2. Es gibt viel Hin und Her auf einer FTP-Verbindung. Zum Senden einer Datei muss der Client mindestens zwei Befehle senden (einen zum Öffnen der Datenverbindung und einen zum Starten des Sendevorgangs) und jedes Mal warten, bis der Server antwortet, was zu einer zusätzlichen Latenz führt. Neben diesen beiden Roundtrips pro Datei gibt es mehrere Roundtrips für die Befehlsantwort bei der ersten Verbindung - eines zum Senden des Benutzernamens, eines für das Kennwort und mindestens eines zum Festlegen von Übertragungsparametern (um sicherzustellen, dass es sich um den Server handelt) erwartet binäre, nicht ASCII-Daten). Der Client kann auch einige zusätzliche Befehle ausgeben, um vom Server Informationen über sich selbst abzurufen. Dropbox verwendet wahrscheinlich nur diese eine HTTP-Anforderung oder höchstens zwei (eine zur Authentifizierung, eine zum Senden der Daten).

  3. Abhängig davon, welchen Client Sie für FTP-Übertragungen verwenden (wobei Sie nicht angeben, dass es eine gute Idee ist, Ihre Frage so zu bearbeiten, dass diese Informationen enthalten sind), wird die Verbindung möglicherweise nach jedem Sendevorgang getrennt und die Verbindung wird erneut hergestellt Zeit. Es ist nicht unwahrscheinlich, dass DropBox eine Verbindung für längere Zeit zum Zweck der Langzeitabfrage offen hält, um so schnell wie möglich auf neue Daten zu reagieren, die von diesem Client heruntergeladen werden sollten Eine HTTP-Verbindung zum Senden einer Datei muss nicht erneut authentifiziert werden.

  4. Es ist nicht unwahrscheinlich, dass der DropBox-Client Daten vor dem Senden komprimiert (um die Geschwindigkeit zu verbessern und Bandbreite zu sparen), wo sich Ihr FTP-Client nicht befindet. Selbst für größere Dateien (sofern diese nicht vorkomprimiert oder verschlüsselt sind) ist DropBox und ähnliche Dienstprogramme möglicherweise um einiges schneller als eine einfache FTP-Übertragung.

Bei großen Dateien sind die ersten drei Punkte im Vergleich zu der Zeit, die für die eigentliche Übertragung der Daten benötigt wird, nicht mehr von Belang, aber Punkt 4 ist möglicherweise immer noch sehr wichtig. Bei kleinen Dateien kann die vom FTP-Protokoll hinzugefügte zusätzliche Einrichtungszeit möglicherweise ein paar Mal länger sein als die Zeit, die zum eigentlichen Senden der Daten benötigt wird.


+1 für die ausführliche Antwort. Ich hatte mich auch gefragt, wie schnell Dropbox war.
Grant Palin

1
Ich habe irgendwo gelesen, dass die Dropbox-Daten vor der Übertragung verschlüsselt werden - daher ist es sinnvoll, dass sie auch (zumindest ein wenig) komprimiert werden.
Dean Rather

Eine verschlüsselte Datei sollte nicht komprimierbar sein - ich verwerfe keine verschlüsselten Dateien während der Übertragung
Martin Beckett

@mgb: Sie haben Recht, dass Dateikomprimierungstechniken in verschlüsselten Daten nicht genügend Redundanz finden sollten, um nützlich zu sein. Daher führt das anfängliche Senden einer Datei zu keiner Komprimierungshilfe. Wenn Dropbox die Datei bereits enthält und Sie sie gerade aktualisiert haben (und der Schlüssel immer noch derselbe ist), muss möglicherweise nicht die gesamte Datei übertragen werden, um die Remote-Kopie zu aktualisieren. Während die Daten nicht komprimiert werden können, kann die Menge, die Sie senden müssen, um sie auf dem neuesten Stand zu halten, immer noch reduziert werden (erheblich für große Dateien, bei denen kleine Aktualisierungen auftreten).
David Spillett

1
Ich bin mir ziemlich sicher, dass sie HTTPS für die Übertragung (HTTP über SSL) verwenden, anstatt Daten in einfacher Form zu senden. Ich weiß nicht, welche (wenn überhaupt) Verschlüsselung für den eigentlichen Speicher verwendet wird, aber wenn Ihre Daten sensibel sind, sollten Sie sie trotzdem an Ihrer Seite verschlüsseln, damit nur Sie eine Kopie der relevanten Schlüssel haben.
David Spillett

15

Wie bereits erwähnt, kann Dropbox Teile von Dateien überspringen, die nicht geändert wurden . Aber auch, wird Dropbox - Upload - Dateien überspringen , wenn es bereits eine Kopie auf der Server - Seite hat (ein , dass Sie oder jemand anderes hat bereits hochgeladen).

Wenn Sie also versuchen, eine Datei hochzuladen, die mit einer Datei identisch ist, über die Dropbox bereits verfügt, wird der Upload übersprungen (und die anderen verbundenen Computer können ihn von den Dropbox-Servern herunterladen). Wenn Sie eine Datei hochladen, die nahezu identisch mit einer anderen, bereits hochgeladenen Datei ist (es ist nicht klar, ob die bereits hochgeladene Datei "Ihre" sein muss oder von einem Benutzer stammen könnte), werden nur genügend Teile der Datei gesendet Datei, um sie auf dem Server zusammen mit der bereits hochgeladenen Datei neu zu erstellen.

FTP kann keine dieser Aktionen ausführen (es ist ein einfaches Protokoll zum Senden und Empfangen von Datenströmen ohne Bezug zu anderen Daten, die auf der Remote-Seite verfügbar sind). Tools wie rsync und Unison können "Blöcke überspringen, über die die andere Seite bereits verfügt", sind jedoch in der Regel darauf beschränkt, Blöcke innerhalb von Dateien auf einem identischen Pfad in der synchronisierten Hierarchie zu vergleichen. Dropbox scheint diese Idee auf Dateisammlungen auszudehnen (wenn Sie also zwei nahezu identische Dateien "hochladen", könnte es wahrscheinlich so aussehen, dass nur eine plus genug eines "Diff" gesendet wird, um die andere neu zu erstellen).


11

Ich nehme an, Sie meinen, die Übertragung von Dateien ist schneller. Wenn Sie eine Datei in Ihrem Dropbox-Ordner speichern, sendet Dropbox nur das Delta (oder Diff) der Daten an den Remotespeicherserver. FTP sendet (höchstwahrscheinlich) die Datei Byte für Byte (anstatt nur die Änderungen zu senden), was möglicherweise viel länger dauert, um über ein Netzwerk zu übertragen. In ähnlicher Weise laden die lokalen Clients beim Synchronisieren vom Remoteserver nur die Änderungen herunter.

Die LAN-Synchronisierungsfunktion kann möglicherweise auch die Synchronisierung beschleunigen und den erforderlichen Netzwerkverkehr reduzieren.


In der Tat spreche ich für beide Fälle von neuen Dateien.

0

Dropbox ist möglicherweise schneller, wenn Sie eine größere Anzahl von Dateien senden. FTP ist so schnell wie möglich, wenn wir mit Geschwindigkeit sprechen, aber es erfordert zu viel "Sprechen" zwischen Server und Client-Computer für jede Datei, sodass das FTP langsamer zu sein scheint. Wenn Sie eine Open Source-Anwendung mit Tausenden von Dateien hochladen, ist es bequemer, alle Dateien zu komprimieren, über FTP hochzuladen und auf dem Server zu dekomprimieren.


0

Ich vermute, sie verwenden einfache Hashing-Techniken ähnlich wie md5 / sha

Immer wenn Sie eine Datei in der lokalen "Dropbox" ablegen, berechnet der Dropbox-Client den Hash dieser Datei und muss einige zusätzliche Daten wie Dateigröße, Dateiname an den Dropbox-Server senden.

Wenn der Dropbox-Server ähnliche Dateien findet (sie müssen den Index der Hashes und Dateidaten auf ihrem Server verwalten) , informiert er den Client einfach darüber, dass die Datei erfolgreich "hochgeladen" wurde. ;-)

Auf diese Weise wird die Datei nur logisch "hochgeladen". Da es keine echte Übertragung von Dateiinhalten gibt, muss dies schneller sein als alles andere.

Ich bin mir nicht sicher, welchen Hashalgorithmus die Dropbox verwendet, aber ich bin mir zu 100% sicher, dass ihr Arbeitsprinzip dem oben beschriebenen ähnelt.


0

Obwohl Dropbox andere Dienste verwendet, haben sie in der Vergangenheit Amazon AWS (Amazon Web Services) verwendet. Es klingt so, als ob Ihre Übertragung von der Quelle zum Ziel eine sehr große Übertragungsleitung hat. Meiner Erfahrung nach verwendet Dropbox ein Ziel, das große Datenmengen gleichzeitig akzeptieren kann. Dropbox verteilt den Upload auch auf verschiedene IP-Adressen. Die Site, die Sie per FTP versenden, hat wahrscheinlich eine viel kleinere Übertragungsleitung und ist nicht in der Lage, Uploads so effizient zu verteilen.

Wenn Sie Resource Monitor (resmon) ausführen und zur Registerkarte Netzwerk wechseln, werden Sie feststellen, dass die verschiedenen Prozesse die Netzwerkbandbreite verwenden.

  • Wählen Sie unter Prozesse mit Netzwerkaktivität die Spalte für aus Total (B/sec)
  • Wählen Sie unter TCP-Verbindungen die Spalte für aus Total (B/sec)

Wenn ich eine Datei auf Dropbox hochlade, werden 4 Verbindungen verwendet, um 4 verschiedene IP-Adressen zu senden.

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.