Mengapa Dropbox bisa super cepat dibandingkan dengan FTP?

36

Saya ingin tahu mengapa secara teknis Dropbox jauh lebih cepat daripada FTP? Teknologi apa yang digunakannya?

Saya tidak berbicara tentang file diff, saya berbicara tentang mentransfer file baru di kedua kasus, Dropbox jauh lebih cepat.

Maksud saya, jauh lebih cepat, mungkin 10 kali lebih cepat dari FTP untuk file yang saya unggah. Saya akan bereksperimen lagi untuk file yang lebih besar nanti.

Peter Mortensen
sumber
2
Berapa ukuran, jenis, dan jumlah file yang Anda unggah? Berapa lama masing-masing dari mereka mengunggah? Di mana Anda mengunggah file melalui FTP? Dropbox bukan sihir, penjelasan paling sederhana adalah bahwa server FTP yang Anda unggah juga memiliki bandwidth yang jauh lebih sedikit daripada Amazon.
user23307
2
jika mereka sudah memilikinya, itu tidak akan mengunggah kembali; p
Journeyman Geek
4
Anda mengatakan "file baru", tetapi kecuali file-file ini adalah data acak dan baru, Anda mungkin melihat manfaat dari sinkronisasi tingkat blok (seperti pada rsync dan alat lainnya).
Chris Johnsen
1
Ini lebih merupakan perbandingan hosting, saya tahu server FTP yang lebih cepat dari Dropbox dan saya juga menggunakan beberapa koneksi dengan Filezilla sehingga pernyataan yang tercantum dalam jawaban ini tidak berlaku.
Tamara Wijsman
Dropbox memang menggunakan de-duplikasi untuk menghemat ruang penyimpanan file umum, sehingga tidak perlu mengunggahnya jika sudah memilikinya.
paradroid

Jawaban:

31

Mungkin ada sejumlah alasan untuk ini.
Protokol FTP jauh dari efisien.

  1. Transfer FTP membutuhkan setidaknya dua koneksi (satu untuk kontrol dan satu untuk data) di mana DropBox mungkin hanya menggunakan satu koneksi HTTP. Juga koneksi data untuk sesi FTP dapat dibuka dari server ke klien Anda dan jika Anda NATed ini mungkin gagal sehingga klien FTP Anda mungkin mencoba untuk menyambungkan itu, gagal kemudian mencoba sebaliknya.

  2. Ada banyak hal yang harus dilakukan pada koneksi FTP. Untuk mengirim file, klien harus mengirim minimal dua perintah (satu untuk membuka koneksi data dan satu untuk memulai pengiriman) dan setiap kali perlu menunggu server untuk merespons, menambahkan latensi tambahan. Serta dua round-trip per file ada beberapa round-trip respon-perintah untuk koneksi awal - satu untuk mengirim nama pengguna, satu untuk kata sandi, dan setidaknya satu untuk mengatur parameter transfer (untuk memastikan server mengharapkan biner, bukan ASCII, data). Klien juga dapat mengeluarkan beberapa perintah tambahan untuk mendapatkan informasi kembali dari server tentang dirinya sendiri. Dropbox mungkin hanya menggunakan satu permintaan HTTP, atau paling banyak dua (satu untuk mengautentikasi, satu untuk mengirim data).

  3. Selain itu, tergantung pada klien apa yang Anda gunakan untuk transfer FTP (yang tidak Anda tentukan, akan lebih baik untuk mengedit pertanyaan Anda untuk memasukkan informasi itu) mungkin akan menjatuhkan koneksi setelah setiap operasi pengiriman dan menghubungkan kembali berikutnya waktu. Bukan tidak mungkin DropBox mempertahankan koneksi terbuka untuk sementara waktu untuk keperluan polling panjang, untuk bereaksi sesegera mungkin terhadap data baru yang tersedia yang harus diunduh oleh klien ini, sehingga sementara itu perlu memunculkan yang baru Koneksi HTTP untuk mengirim file tidak perlu diautentikasi ulang.

  4. Bukan tidak mungkin klien DropBox mengompresi data sebelum mengirimnya (untuk meningkatkan kecepatan dan menghemat bandwidth) di mana klien FTP Anda tidak berada. Jadi, bahkan untuk file yang lebih besar (kecuali file tersebut dipadatkan atau dienkripsi) DropBox, dan utilitas seperti itu, mungkin lebih cepat daripada transfer FTP dasar dengan margin tertentu.

Untuk file besar, tiga poin pertama di atas akan pucat menjadi tidak penting dibandingkan dengan waktu yang dibutuhkan untuk benar-benar mentransfer data, tetapi poin 4 mungkin masih cukup penting. Untuk file kecil, semua waktu pengaturan tambahan yang ditambahkan oleh protokol FTP berpotensi beberapa kali lebih lama daripada waktu yang dibutuhkan untuk benar-benar mengirim data.

David Spillett
sumber
+1 untuk jawaban terperinci. Saya juga bertanya-tanya bagaimana Dropbox begitu cepat.
Grant Palin
1
Saya membaca di suatu tempat bahwa data dropbox dienkripsi sebelum mentransfer - jadi masuk akal bahwa itu juga (setidaknya sedikit) terkompresi.
Dean Rather
File terenkripsi seharusnya tidak dapat dikompres - Lagipula saya tidak drop box mengenkripsi file selama transfer
Martin Beckett
@ mgb: Anda benar bahwa teknik kompresi file seharusnya tidak menemukan redundansi yang cukup dienkripsi ke data untuk berguna, jadi pada awalnya mengirim file tidak akan menghasilkan bantuan dari kompresi. Tetapi jika dropbox sudah memiliki file dan Anda baru saja memperbaruinya (dan kuncinya masih sama) maka kemungkinannya adalah tidak perlu mentransfer seluruh file untuk memperbarui salinan jarak jauh. Meskipun data tidak dapat dikompresi, jumlah yang Anda perlu kirim untuk tetap uptodate masih dapat dikurangi (terutama untuk file besar yang melihat pembaruan kecil).
David Spillett
1
Saya cukup yakin mereka menggunakan HTTPS untuk transfer (HTTP over SSL) daripada mengirim data dalam bentuk biasa. Saya tidak tahu enkripsi apa (jika ada) digunakan untuk penyimpanan aktual, tetapi jika data Anda sensitif, Anda tetap harus mengenkripsinya di sisi Anda sehingga hanya Anda yang memiliki salinan kunci yang relevan.
David Spillett
15

Seperti yang disebutkan orang lain, Dropbox dapat melewati bagian file yang tidak berubah . Tetapi juga, Dropbox akan melewatkan mengunggah file jika sudah memiliki salinan di sisi server (yang Anda atau orang lain telah unggah).

Jadi, jika Anda mencoba mengunggah file yang identik dengan file yang sudah dimiliki Dropbox, unggahan dilewati (dan mesin tertaut lainnya dapat mulai mengunduhnya dari server Dropbox). Jika Anda mengunggah file yang hampir identik dengan yang lain, file yang sudah diunggah (tidak jelas apakah file yang sudah diunggah harus menjadi milik Anda atau bisa berasal dari pengguna mana pun), maka itu hanya akan mengirim cukup banyak bagian dari file tersebut. file untuk membuatnya kembali di server ketika dikombinasikan dengan file yang sudah diunggah.

FTP tidak dapat melakukan semua hal ini (ini adalah protokol sederhana untuk mengirim dan menerima aliran data tanpa merujuk ke data lain yang tersedia di ujung jarak jauh). Alat-alat seperti rsync dan Unison dapat 'melewati potongan yang sudah dimiliki pihak lain', tetapi biasanya terbatas pada membandingkan potongan di dalam file pada jalur yang identik dalam hierarki yang disinkronkan. Dropbox tampaknya memperluas gagasan ini ke koleksi file (jadi jika Anda 'mengunggah' dua file yang hampir identik, mungkin itu bisa mengatur untuk hanya mengirim satu plus cukup dari 'diff' untuk membuat kembali yang lain).

Chris Johnsen
sumber
11

Saya menganggap maksud Anda lebih cepat dalam hal mentransfer file. Ketika Anda menyimpan file di folder Dropbox Anda, Dropbox hanya mengirim delta (atau perbedaan) data ke server penyimpanan jarak jauh. FTP (kemungkinan besar) mengirimkan file byte demi byte (bukan hanya mengirim perubahan), yang berpotensi membutuhkan waktu lebih lama untuk ditransfer melalui jaringan. Demikian pula, ketika menyinkronkan dari server jarak jauh, klien lokal hanya akan mengunduh perubahan.

Fitur sinkronisasi LAN juga berpotensi mempercepat sinkronisasi dan mengurangi lalu lintas jaringan yang diperlukan.

sblair
sumber
Memang saya berbicara tentang file baru untuk kedua kasus.
0

Dropbox mungkin lebih cepat ketika Anda mengirim sejumlah besar file. FTP secepat yang Anda bisa dapatkan ketika kita berbicara kecepatan tetapi terlalu banyak "bicara" antara server dan komputer klien untuk setiap file, sehingga ftp tampaknya lebih lambat. Jika Anda mengunggah beberapa aplikasi sumber terbuka dengan ribuan file, lebih mudah untuk mengompres semua file, mengunggahnya melalui FTP dan mendekompresnya di server.

Greenleader
sumber
0

Saya kira mereka menggunakan teknik hashing sederhana mirip dengan md5 / sha

Setiap kali Anda meletakkan file di dalam "dropbox" lokal, dropbox-client menghitung hash dari file itu dan harus mengirim beberapa data tambahan seperti filesize, nama file ke server dropbox.

Jika dropbox-server menemukan file serupa (mereka harus menjaga indeks hash dan file-data di server mereka) itu hanya akan memberi tahu klien bahwa file telah "diunggah" dengan sukses. ;-)

Dengan cara ini, Anda berakhir hanya "mengunggah" file secara logis. Karena tidak ada transfer file-konten nyata, ini harus lebih cepat daripada yang lain.

Saya tidak yakin algoritma hashing mana yang digunakan dropbox, tapi saya 100% yakin prinsip kerjanya mirip dengan yang saya jelaskan di atas.

rahul286
sumber
0

Meskipun Dropbox menggunakan layanan lain, mereka secara historis telah menggunakan Amazon AWS (Amazon Web Services). Sepertinya transfer Anda dari sumber ke tujuan memiliki pipa transfer yang sangat besar. Dalam pengalaman saya, Dropbox menggunakan tujuan yang dapat menerima sejumlah besar data sekaligus. Dropbox juga mendistribusikan unggahan ke berbagai alamat IP. Situs tempat Anda melakukan FTP kemungkinan memiliki pipa transfer yang jauh lebih kecil dan tidak memiliki kemampuan untuk mendistribusikan unggahan secara efisien.

Jika Anda menjalankan Resource Monitor (resmon) , dan pergi ke tab Network, Anda akan melihat berbagai proses menggunakan bandwidth jaringan.

  • Di bawah Proses dengan Aktivitas jaringan, pilih kolom untuk Total (B/sec)
  • Di bawah Koneksi TCP, pilih kolom untuk Total (B/sec)

Bagi saya, ketika saya mengunggah file ke Dropbox, menggunakan 4 koneksi untuk mengirim 4 alamat IP yang berbeda.

masukkan deskripsi gambar di sini

Matahari
sumber