Warum kann Dropbox im Vergleich zu FTP superschnell sein?

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 die Übertragung 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 wieder für größere Dateien experimentieren.

 36
Author: Peter Mortensen, 2010-03-14

6 answers

Dafür könnte es mehrere Gründe geben.
Das FTP-Protokoll ist weit von effizient.

  1. Eine FTP-Übertragung benötigt mindestens zwei Verbindungen (eine für die Steuerung und eine für Daten), bei denen DropBox möglicherweise nur eine einzige HTTP-Verbindung verwendet. Auch die Datenverbindung für eine FTP-Sitzung kann vom Server zu Ihrem Client geöffnet werden, und wenn Sie verbunden sind, kann dies fehlschlagen, sodass Ihr FTP-Client möglicherweise versucht, eine solche Verbindung herzustellen, und dann umgekehrt um.

  2. Es gibt eine Menge von to-ing und fro-ing auf einer FTP-Verbindung. Um eine Datei zu senden, muss der Client mindestens zwei Befehle senden (einen zum Öffnen der Datenverbindung und einen zum Starten des Sendens) und jedes Mal warten, bis der Server reagiert, wodurch eine zusätzliche Latenz hinzugefügt wird. Neben diesen beiden Roundtrips pro Datei gibt es mehrere Befehlsantwort-Roundtrips für die erste Verbindung - eine zum Senden des Benutzernamens, eine für das Kennwort und mindestens eine zum Festlegen der Übertragung parameter (um sicherzustellen, dass der Server binäre, nicht ASCII-Daten erwartet). Der Client kann auch einige zusätzliche Befehle ausführen, um Informationen vom Server über sich selbst abzurufen. Dropbox verwendet wahrscheinlich nur diese eine HTTP-Anforderung oder höchstens zwei (eine zum Authentifizieren, eine zum Senden der Daten).

  3. Abhängig davon, welchen Client Sie für FTP-Übertragungen verwenden (was Sie nicht angeben, wäre es eine gute Idee, Ihre Frage zu bearbeiten, um diese Informationen einzuschließen) . möglicherweise wird die Verbindung nach jedem Sendevorgang abgebrochen und beim nächsten Mal eine erneute Verbindung hergestellt. Es ist nicht unwahrscheinlich, dass DropBox eine Verbindung für eine Weile offen hält, um lange abzufragen, um so schnell wie möglich auf neue Daten zu reagieren, die dieser Client herunterladen sollte, so dass es, während es eine neue HTTP-Verbindung aufrufen muss, um eine Datei zu senden, die es nicht erneut authentifizieren muss.

  4. Es ist nicht unwahrscheinlich, dass der DropBox-Client Daten komprimiert, bevor er sie sendet (an verbessern Sie die Geschwindigkeit und sparen Sie Bandbreite), wo Ihr FTP-Client nicht sein wird. Selbst für größere Dateien (es sei denn, sie sind vorkomprimiert oder verschlüsselt) sind DropBox und Dienstprogramme wie diese möglicherweise mit Abstand schneller als eine grundlegende FTP-Übertragung.

Bei großen Dateien werden die ersten drei Punkte oben im Vergleich zu der Zeit, die für die tatsächliche Übertragung der Daten benötigt wird, bedeutungslos, aber Punkt 4 kann immer noch sehr wichtig sein. Für kleine Dateien können alle zusätzlichen Setup-Zeit durch das FTP-Protokoll hinzugefügt möglicherweise einige Male länger als die Zeit, die zum tatsächlichen Senden der Daten benötigt wird.

 31
Author: David Spillett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-03-15 00:40:38

Wie andere bereits erwähnt haben, kann Dropbox Teile von Dateien überspringen, die sich nicht geändert haben. Aber auch, Dropbox überspringt das Hochladen von Dateien, wenn es bereits eine Kopie auf der Serverseite (eine, die Sie oder jemand anderes bereits hochgeladen hat).

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 verknüpften Maschinen können sie von den Dropbox-Servern herunterladen). Wenn Sie eine Datei hochladen, die fast identisch mit einer anderen, bereits hochgeladenen Datei (es ist nicht klar, ob die bereits hochgeladene Datei "Ihre" sein muss oder von einem Benutzer stammen könnte), dann werden nur genügend Teile der Datei gesendet, um sie auf dem Server neu zu erstellen, wenn sie mit der bereits hochgeladenen Datei kombiniert werden.

FTP kann nichts davon tun (es ist ein einfaches Protokoll zum Senden und Empfangen von Datenströmen ohne Bezugnahme auf andere Daten, die auf dem Remote-Ende verfügbar sind). Werkzeuge wie rsync und Unisono kann "Chunks überspringen, die die andere Seite bereits hat", ist aber normalerweise darauf beschränkt, Chunks in Dateien mit einem identischen Pfad in der synchronisierten Hierarchie zu vergleichen. Dropbox scheint diese Idee auf Sammlungen von Dateien zu erweitern (wenn Sie also zwei fast identische Dateien "hochladen", könnte es vermutlich arrangieren, nur ein Plus genug von einem "Diff" zu senden, um das andere neu zu erstellen).

 15
Author: Chris Johnsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-03-15 03:29:29

Ich nehme an, Sie meinen schneller beim Übertragen von Dateien. Wenn Sie eine Datei in Ihrem Dropbox-Ordner speichern, sendet Dropbox nur das Delta (oder diff) der Daten an den Remote-Speicherserver. 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. Wenn Sie vom Remote-Server synchronisieren, laden die lokalen Clients nur die Änderungen herunter.

Die LAN sync funktion kann auch beschleunigen Sie möglicherweise die Synchronisierung und reduzieren Sie den erforderlichen Netzwerkverkehr.

 11
Author: sblair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-03-14 23:29:44

Dropbox ist möglicherweise schneller, wenn Sie eine größere Anzahl von Dateien senden. FTP ist so schnell, wie Sie bekommen können, wenn wir Geschwindigkeit sprechen, aber es dauert zu viel "Gespräch" zwischen Server und Client-Computer für jede Datei, so dass die ftp scheint langsamer zu sein. 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
Author: Greenleader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-03-15 00:55:05

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

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

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

Auf diese Weise enden Sie "hochladen" Datei nur logisch. Da es keine echte Datei-Content-Übertragung gibt, muss dies schneller sein als alles andere.

Ich bin mir nicht sicher, welchen Hashing-Algorithmus Dropbox verwendet, aber ich bin 100% sicher, dass ihr Arbeitsprinzip dem oben beschriebenen ähnelt.

 0
Author: rahul286,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-12-21 20:18:37

Obwohl Dropbox andere Dienste verwendet, haben sie in der Vergangenheit Amazon AWS (Amazon Web Services) verwendet. Es hört sich so an, als hätte Ihre Übertragung von der Quelle zum Ziel eine sehr große Übertragungsleitung. Nach meiner Erfahrung verwendet Dropbox ein Ziel, das große Datenmengen gleichzeitig akzeptieren kann. Dropbox verteilt den Upload auch an verschiedene IP-Adressen. Die Site, zu der Sie FTPing ausführen, hat wahrscheinlich eine viel kleinere Übertragungsleitung und kann Uploads nicht als verteilen effizient.

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 Total (B/sec)
  • Wählen Sie unter TCP-Verbindungen die Spalte für Total (B/sec)

Wenn ich eine Datei in Dropbox hochlade, werden für mich 4 Verbindungen verwendet, um 4 verschiedene IP-Adressen zu senden.

geben Sie hier die Bildbeschreibung ein

 0
Author: Sun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-10-17 23:20:07