एफ़टीपी की तुलना में ड्रॉपबॉक्स सुपर फास्ट क्यों हो सकता है?


36

मैं जानना चाहता हूँ कि तकनीकी रूप से ड्रॉपबॉक्स एफ़टीपी की तुलना में बहुत तेज़ क्यों है? यह किस तरह की तकनीक का उपयोग करता है?

मैं अलग फ़ाइलों के बारे में बात नहीं कर रहा हूँ, मैं दोनों मामलों में नई फ़ाइलों को स्थानांतरित करने के बारे में बात कर रहा हूँ, ड्रॉपबॉक्स बहुत तेज है।

मेरा मतलब है, बहुत तेज, शायद मेरे द्वारा अपलोड की गई फ़ाइलों के लिए एफ़टीपी की तुलना में 10 गुना अधिक तेज। मैं बाद में बड़ी फ़ाइलों के लिए फिर से प्रयोग करूंगा।


2
आपने किस आकार, प्रकार और कितनी फ़ाइलों को अपलोड किया है? उनमें से प्रत्येक को अपलोड करने में कितना समय लगा? आप एफ़टीपी के माध्यम से फ़ाइलों को कहाँ अपलोड कर रहे थे? ड्रॉपबॉक्स जादू नहीं है, सबसे सरल स्पष्टीकरण यह है कि जिस एफ़टीपी सर्वर को आप अपलोड कर रहे थे, उसमें अमेज़ॅन की तुलना में बहुत कम बैंडविड्थ है।
user23307

2
अगर वे पहले से ही है, यह फिर से अपलोड dosen't, पी
जर्नीमैन गीक

4
आप "नई फ़ाइलें" कहते हैं, लेकिन जब तक ये फ़ाइलें ताज़ा, यादृच्छिक डेटा नहीं होती हैं, आप शायद ब्लॉक-स्तरीय सिंकिंग (जैसे rsync और अन्य टूल) में लाभ देख रहे हैं ।
क्रिस जॉन्सन

1
यह एक होस्टिंग तुलना imo से अधिक है, मुझे पता है कि एफ़टीपी सर्वर ड्रॉपबॉक्स की तुलना में तेज़ हैं और मैं फाइलज़िला के साथ कई कनेक्शनों का भी उपयोग करता हूं ताकि इस उत्तर में सूचीबद्ध कथन पकड़ में न आए।
तमारा विज्समैन

ड्रॉपबॉक्स आम फ़ाइलों के भंडारण स्थान को बचाने के लिए डी-डुप्लिकेट का उपयोग करता है, इसलिए यदि उन्हें पहले से ही है तो उन्हें अपलोड करने की आवश्यकता नहीं है।
पैराडायरायड

जवाबों:


31

इसके कई कारण हो सकते हैं।
एफ़टीपी प्रोटोकॉल कुशल से दूर है।

  1. एफ़टीपी हस्तांतरण के लिए कम से कम दो कनेक्शन (नियंत्रण के लिए एक और डेटा के लिए एक) की आवश्यकता होती है, जहां ड्रॉपबॉक्स सिर्फ एक HTTP कनेक्शन का उपयोग कर सकता है। एफ़टीपी सत्र के लिए डेटा कनेक्शन सर्वर से आपके क्लाइंट के लिए खोला जा सकता है और यदि आप नेटेड हैं तो यह विफल हो सकता है इसलिए आपका एफ़टीपी क्लाइंट उस तरह से जुड़ने की कोशिश कर रहा हो सकता है, विफल हो सकता है और फिर दूसरे तरीके से कोशिश कर रहा हो।

  2. एफ़टीपी कनेक्शन पर बहुत से इन-इंग और फ्रॉ-इंग है। एक फाइल भेजने के लिए क्लाइंट को कम से कम दो कमांड भेजने की जरूरत होती है (डेटा कनेक्शन को खोलने के लिए एक और सेंड शुरू करने के लिए) और हर बार अतिरिक्त लेटेंसी को जोड़ने के लिए सर्वर के जवाब के लिए इंतजार करना पड़ता है। प्रति फ़ाइल इन दो राउंड-ट्रिप के साथ-साथ प्रारंभिक कनेक्शन के लिए कई कमांड-प्रतिक्रिया राउंड-ट्रिप हैं - एक उपयोगकर्ता नाम भेजने के लिए, एक पासवर्ड के लिए, और कम से कम एक ट्रांसफर पैरामीटर सेट करने के लिए (यह सुनिश्चित करने के लिए कि सर्वर है बाइनरी की उम्मीद करना, एएससीआईआई, डेटा नहीं)। क्लाइंट अपने बारे में सर्वर से जानकारी वापस पाने के लिए कुछ अतिरिक्त कमांड भी जारी कर सकता है। ड्रॉपबॉक्स का उपयोग केवल एक HTTP अनुरोध, या अधिकतम दो (प्रमाणीकरण करने के लिए, डेटा भेजने के लिए एक) होने की संभावना है।

  3. इसके शीर्ष पर, एफ़टीपी स्थानान्तरण के लिए आप किस ग्राहक का उपयोग कर रहे हैं, इस पर निर्भर करता है (जो आप इसे निर्दिष्ट नहीं करते हैं, उस जानकारी को शामिल करने के लिए अपने प्रश्न को संपादित करने के लिए एक अच्छा विचार होगा) यह प्रत्येक भेजने के संचालन के बाद कनेक्शन को छोड़ने और अगले फिर से कनेक्ट करने के लिए हो सकता है पहर। यह संभावना नहीं है कि ड्रॉपबॉक्स लंबे समय के मतदान के प्रयोजनों के लिए थोड़ी देर के लिए एक कनेक्शन खुला रखता है, जैसे ही यह नया डेटा उपलब्ध होने के लिए प्रतिक्रिया कर सकता है कि यह क्लाइंट डाउनलोड करना चाहिए, इसलिए इसे एक नया लाने की आवश्यकता होगी एक फ़ाइल भेजने के लिए HTTP कनेक्शन को इसे फिर से प्रमाणित करने की आवश्यकता नहीं होगी।

  4. यह संभावना नहीं है कि ड्रॉपबॉक्स ग्राहक इसे भेजने से पहले डेटा को संकुचित कर रहा है (गति में सुधार करने और बैंडविड्थ को बचाने के लिए) जहां आपका एफ़टीपी क्लाइंट नहीं होगा। तो बड़ी फ़ाइलों के लिए भी (जब तक कि वे पूर्व-संपीड़ित या एन्क्रिप्टेड न हों) ड्रॉपबॉक्स, और इसके जैसी उपयोगिताओं, कुछ मार्जिन द्वारा मूल एफ़टीपी हस्तांतरण की तुलना में तेज़ हो सकती हैं।

बड़ी फ़ाइलों के लिए, ऊपर दिए गए पहले तीन बिंदु वास्तव में डेटा को स्थानांतरित करने के लिए लिए गए समय की तुलना में महत्वहीनता में बदल जाएंगे, लेकिन बिंदु 4 अभी भी काफी महत्वपूर्ण हो सकता है। छोटी फ़ाइलों के लिए FTP प्रोटोकॉल द्वारा जोड़ा गया सभी अतिरिक्त सेटअप समय संभावित रूप से डेटा भेजने में लगने वाले समय की तुलना में कुछ समय अधिक हो सकता है।


विस्तृत उत्तर के लिए +1। मैं भी सोच रहा था कि ड्रॉपबॉक्स इतनी जल्दी कैसे हो गया।
ग्रांट पलिन

1
मैंने कहीं पढ़ा है कि ड्रॉपबॉक्स डेटा को स्थानांतरित करने से पहले एन्क्रिप्ट किया गया है - इसलिए यह समझ में आएगा कि यह भी (कम से कम थोड़ा) संकुचित है।
डीन राथर

एन्क्रिप्ट की गई फ़ाइल को संपीड़ित नहीं किया जाना चाहिए - मैं वैसे भी स्थानांतरण के दौरान बॉक्स एनक्रिप्ट की फ़ाइलों को नहीं छोड़ता
मार्टिन बेकेट

@ एमजीबी: आप सही हैं कि फ़ाइल संपीड़न तकनीकों को उपयोगी होने के लिए एन्क्रिप्टेड डेटा में पर्याप्त अतिरेक नहीं मिलना चाहिए, इसलिए शुरू में एक फ़ाइल भेजने से संपीड़न से कोई मदद नहीं मिलेगी। लेकिन अगर ड्रॉपबॉक्स में पहले से ही फाइल है और आपने अभी इसे अपडेट किया है (और कुंजी अभी भी वही है), तो संभावना है कि रिमोट कॉपी को अपडेट करने के लिए पूरी फाइल को ट्रांसफर करने की जरूरत नहीं होगी। हालांकि डेटा को संपीड़ित नहीं किया जा सकता है, लेकिन इसे ऊपर-नीचे रखने के लिए आपको जो राशि भेजने की आवश्यकता है वह अभी भी कम हो सकती है (बड़ी फ़ाइलों के लिए काफी है जो छोटे अपडेट देखते हैं)।
डेविड स्पिलेट

1
मुझे पूरा यकीन है कि वे सादे फॉर्म में डेटा भेजने के बजाय हस्तांतरण (HTTP ओवर एसएसएल) के लिए HTTPS का उपयोग करते हैं। मैं नहीं जानता कि क्या (यदि कोई हो) एन्क्रिप्शन का उपयोग वास्तविक भंडारण के लिए किया जाता है, लेकिन यदि आपका डेटा संवेदनशील है तो आपको इसे वैसे भी एन्क्रिप्ट करना चाहिए, क्योंकि आपके पास प्रासंगिक कुंजियों की एक प्रति है।
डेविड स्पिललेट

15

जैसा कि दूसरों ने उल्लेख किया है, ड्रॉपबॉक्स उन फ़ाइलों के हिस्सों को छोड़ सकता है जो बदल नहीं गए हैं । लेकिन इसके अलावा, ड्रॉपबॉक्स फ़ाइलों को अपलोड करना छोड़ देगा यदि इसमें पहले से ही सर्वर साइड पर एक कॉपी है (एक जिसे आप या किसी और ने पहले ही अपलोड किया है)।

इसलिए, यदि आप ऐसी फ़ाइल अपलोड करने का प्रयास कर रहे हैं जो ड्रॉपबॉक्स के पास पहले से मौजूद फ़ाइल के समान है, तो अपलोड छोड़ दिया जाता है (और अन्य लिंक की गई मशीनें ड्रॉपबॉक्स सर्वर से इसे डाउनलोड करना शुरू कर सकती हैं)। यदि आप एक ऐसी फ़ाइल अपलोड कर रहे हैं जो लगभग दूसरे के समान है, तो पहले से अपलोड की गई फ़ाइल (यह स्पष्ट नहीं है कि पहले से अपलोड की गई फ़ाइल 'आपकी' है या किसी भी उपयोगकर्ता से आ सकती है), तो यह बस पर्याप्त भागों को भेज देगी फ़ाइल को सर्वर पर फिर से बनाने के लिए जब पहले से अपलोड की गई फ़ाइल के साथ संयुक्त हो।

एफ़टीपी इनमें से कोई भी काम नहीं कर सकता है (यह दूरस्थ छोर पर उपलब्ध किसी भी अन्य डेटा के संदर्भ के बिना डेटा की धाराओं को भेजने और प्राप्त करने के लिए एक सरल प्रोटोकॉल है)। Rsync और Unison जैसे उपकरण the उन विखंडुओं को छोड़ सकते हैं जो दूसरे पक्ष के पास पहले से हैं ’, लेकिन आमतौर पर सिंक्रनाइज़ पदानुक्रम में समान पथ पर फ़ाइलों के अंदर विखंडन की तुलना करने के लिए सीमित हैं। ड्रॉपबॉक्स इस विचार को फ़ाइलों के संग्रह में विस्तारित करता है (इसलिए यदि आप दो समान फ़ाइलों को 'अपलोड' करते हैं, तो संभवत: यह दूसरे को फिर से बनाने के लिए केवल एक 'पर्याप्त' के पर्याप्त भेजने की व्यवस्था कर सकता है)।


11

मैं मानता हूं कि आप फ़ाइलों को स्थानांतरित करने के मामले में तेजी से मतलब रखते हैं। जब आप किसी फ़ाइल को अपने ड्रॉपबॉक्स फ़ोल्डर में सहेजते हैं, तो ड्रॉपबॉक्स केवल रिमोट स्टोरेज सर्वर को डेटा का डेल्टा (या भिन्न) भेजता है। एफ़टीपी (सबसे अधिक संभावना) फ़ाइल बाइट को बाइट द्वारा भेजता है (केवल परिवर्तनों को भेजने के बजाय), जो संभवतः एक नेटवर्क पर स्थानांतरित करने में बहुत अधिक समय लेता है। इसी तरह, रिमोट सर्वर से सिंक करते समय , स्थानीय क्लाइंट केवल परिवर्तन डाउनलोड करेंगे।

LAN सिंक फीचर संभावित रूप से सिंक को गति प्रदान कर सकता है और नेटवर्क ट्रैफिक को कम कर सकता है।


दरअसल मैं दोनों मामलों के लिए नई फाइलों के बारे में बात कर रहा हूं।

0

जब आप बड़ी मात्रा में फ़ाइलें भेजते हैं तो ड्रॉपबॉक्स तेज़ हो सकता है। एफ़टीपी उतना ही तेज़ है जितना आप तब उठा सकते हैं जब हम गति की बात करते हैं, लेकिन सर्वर और क्लाइंट कंप्यूटर के बीच प्रत्येक फ़ाइल के लिए बहुत अधिक "टॉक" लगता है, इसलिए एफ़टीपी धीमा प्रतीत होता है। यदि आप हजारों फ़ाइलों के साथ कुछ ओपन सोर्स एप्लिकेशन अपलोड कर रहे हैं, तो सभी फ़ाइलों को संपीड़ित करना अधिक सुविधाजनक है, इसे एफ़टीपी के माध्यम से अपलोड करें और इसे सर्वर पर डिकम्प्रेस करें।


0

मुझे लगता है कि वे md5 / sha के समान सरल हैशिंग तकनीक का उपयोग करते हैं

जब भी आप किसी फ़ाइल को स्थानीय "ड्रॉपबॉक्स" के अंदर छोड़ते हैं, ड्रॉपबॉक्स-क्लाइंट उस फ़ाइल के हैश की गणना करता है और ड्रॉपबॉक्स-सर्वर पर फाइल एक्स्ट्रीम जैसे फाइल, फ़ाइल नाम को भेजना चाहिए।

अगर ड्रॉपबॉक्स-सर्वर को समान फाइलें मिलती हैं (उन्हें अपने सर्वर पर हैश और फाइल-डेटा का इंडेक्स बनाए रखना चाहिए) तो यह क्लाइंट को आसानी से सूचित कर देगा कि फाइल सफलतापूर्वक "अपलोड" हो गई है। ;-)

इस तरह आप तार्किक रूप से केवल "अपलोड" फ़ाइल को समाप्त करते हैं। चूंकि कोई वास्तविक फ़ाइल-सामग्री स्थानांतरण नहीं है, इसलिए इसे किसी भी चीज़ से अधिक तेज़ होना चाहिए।

मुझे यकीन नहीं है कि हैशिंग एल्गोरिथ्म ड्रॉपबॉक्स का उपयोग करता है, लेकिन मुझे 100% यकीन है कि उनका काम करने का सिद्धांत ऊपर उल्लिखित एक के समान है।


0

हालांकि ड्रॉपबॉक्स अन्य सेवाओं का उपयोग कर रहा है, वे ऐतिहासिक रूप से अमेज़ॅन एडब्ल्यूएस (अमेज़ॅन वेब सेवा) का उपयोग कर रहे हैं। ऐसा लगता है कि स्रोत से गंतव्य तक आपका स्थानांतरण बहुत बड़ा स्थानांतरण पाइप है। मेरे अनुभव में, ड्रॉपबॉक्स एक गंतव्य का उपयोग कर रहा है जो एक बार में बड़ी मात्रा में डेटा स्वीकार कर सकता है। ड्रॉपबॉक्स भी अपलोड को अलग-अलग आईपी पते पर वितरित करता है। जिस साइट पर आप एफ़टीपी कर रहे हैं, उसकी संभावना बहुत कम ट्रांसफ़र पाइप है और इसमें कुशलता से अपलोड वितरित करने की क्षमता नहीं है।

यदि आप संसाधन मॉनिटर (रीसेट) चलाते हैं , और नेटवर्क टैब पर जाते हैं, तो आप नेटवर्क बैंडविड्थ का उपयोग करके विभिन्न प्रक्रियाओं को नोटिस करेंगे।

  • नेटवर्क गतिविधि वाली प्रक्रियाओं के तहत, के लिए कॉलम चुनें Total (B/sec)
  • टीसीपी कनेक्शन के तहत, के लिए कॉलम चुनें Total (B/sec)

मेरे लिए, जब मैं ड्रॉपबॉक्स पर फ़ाइल अपलोड कर रहा हूं, तो यह 4 कनेक्शनों का उपयोग करके 4 अलग-अलग आईपी पते भेज रहा है।

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.