क्या कोई DHT कैसे काम करता है, इस पर कोई स्पष्टीकरण दे सकता है?
कुछ भी भारी नहीं, बस मूल बातें।
क्या कोई DHT कैसे काम करता है, इस पर कोई स्पष्टीकरण दे सकता है?
कुछ भी भारी नहीं, बस मूल बातें।
जवाबों:
ठीक है, वे मौलिक रूप से एक बहुत सरल विचार हैं। DHT आपको एक शब्दकोश जैसा इंटरफ़ेस देता है, लेकिन नोड्स पूरे नेटवर्क में वितरित किए जाते हैं। DHTs के साथ चाल यह है कि नोड जो किसी विशेष कुंजी को संग्रहीत करने के लिए हो जाता है, उस कुंजी को हैशिंग द्वारा पाया जाता है, इसलिए वास्तव में आपके हैश-टेबल बाल्टी नेटवर्क में स्वतंत्र नोड होते हैं।
यह बहुत अधिक दोष-सहिष्णुता और विश्वसनीयता देता है, और संभवतः कुछ प्रदर्शन लाभ देता है, लेकिन यह बहुत अधिक सिरदर्द भी पैदा करता है। उदाहरण के लिए, क्या होता है जब एक नोड नेटवर्क को छोड़ देता है, विफल या अन्यथा? और जब आप एक नोड में शामिल हो जाते हैं तो आप किस तरह से पुनर्वितरण करते हैं ताकि लोड लगभग संतुलित हो। यह सोचने के लिए आओ, आप किसी भी तरह समान रूप से चाबियाँ कैसे वितरित करते हैं? और जब एक नोड जुड़ता है, तो आप सब कुछ दोबारा करने से कैसे बचते हैं? (याद रखें कि यदि आप बाल्टियों की संख्या बढ़ाते हैं तो आपको सामान्य हैश तालिका में यह करना होगा)।
एक उदाहरण DHT जो इन समस्याओं में से कुछ से निपटता है, n नोड्स की एक तार्किक रिंग है, प्रत्येक कीस्पेस के 1 / n के लिए जिम्मेदारी ले रहा है। एक बार जब आप नेटवर्क में एक नोड जोड़ते हैं, तो यह दो अन्य नोड्स के बीच बैठने के लिए रिंग पर एक जगह पाता है, और इसके सिबलिंग नोड्स में कुछ चाबियों की जिम्मेदारी लेता है। इस दृष्टिकोण की सुंदरता यह है कि रिंग में कोई भी अन्य नोड प्रभावित नहीं होता है; केवल दो सहोदर नोड्स को चाबियों का पुनर्वितरण करना होगा।
उदाहरण के लिए, तीन नोड वाले रिंग में कहें कि पहले नोड में चाबियाँ 0-10, दूसरी 11-20 और तीसरी 21-30 हैं। अगर एक चौथा नोड आता है और नोड्स 3 और 0 के बीच खुद को सम्मिलित करता है (याद रखें, वे एक रिंग में हैं), यह कहने के लिए ज़िम्मेदारी ले सकता है कि 3 के कीस्पेस का आधा हिस्सा है, इसलिए अब यह 26-30 और नोड 3 के साथ 21 से संबंधित है -25।
इस तरह के रूप में कई अन्य उपरिशायी संरचनाएं हैं जो सही नोड को खोजने के लिए सामग्री-आधारित रूटिंग का उपयोग करती हैं, जिस पर एक कुंजी संग्रहीत करने के लिए। एक अंगूठी में एक कुंजी का पता लगाने के लिए एक बार में एक बार रिंग को एक नोड की तलाश करना पड़ता है (जब तक कि आप एक स्थानीय लुक-अप तालिका नहीं रखते हैं, हजारों नोड्स के डीएचटी में समस्याग्रस्त है), जो ओ (एन) -एचपी मार्ग है। अन्य संरचनाएं - संवर्धित छल्ले सहित - गारंटी O (लॉग एन) -hop रूटिंग, और कुछ ओ (1) के दावे का दावा करते हैं और अधिक रखरखाव की लागत पर।
विकिपीडिया पृष्ठ पढ़ें, और यदि आप वास्तव में गहराई से जानना चाहते हैं, तो हार्वर्ड में इस पाठ्यक्रम पृष्ठ की जांच करें जिसमें एक बहुत व्यापक पढ़ने की सूची है।
DHT उपयोगकर्ता को एक सामान्य हैशटेबल के रूप में एक ही प्रकार का इंटरफ़ेस प्रदान करते हैं (कुंजी द्वारा एक मूल्य देखें), लेकिन डेटा को संबंधित नोड्स की एक मनमानी संख्या में वितरित किया जाता है। विकिपीडिया का एक अच्छा मूल परिचय है कि अगर मैं अधिक लिखूं तो मैं अनिवार्य रूप से पुनर्मिलन करूंगा -
मैं हेनरीआर के उपयोगी उत्तर पर जोड़ना चाहूंगा क्योंकि मेरे पास लगातार हैशिंग में एक अंतर्दृष्टि थी। एक सामान्य / भोली हैश लुकिंग दो चर का एक फ़ंक्शन है, जिसमें से एक बाल्टी की संख्या है। सुसंगत हैशिंग की सुंदरता यह है कि हम समीकरण से "बाल्टी" की संख्या को खत्म करते हैं।
भोले हैशिंग में, पहला चर तालिका में संग्रहीत की जाने वाली वस्तु की कुंजी है। हम कुंजी "x" को कॉल करेंगे। दूसरा चर बकेट की संख्या है, "एन"। इसलिए, यह निर्धारित करने के लिए कि किस बाल्टी / मशीन में ऑब्जेक्ट स्टोर किया गया है, आपको गणना करना होगा: हैश (x) मॉड (एन)। इसलिए, जब आप बाल्टी की संख्या बदलते हैं, तो आप उस पते को भी बदलते हैं जिस पर लगभग हर वस्तु संग्रहीत होती है।
इसकी तुलना सुसंगत हैशिंग से करें। चलिए "R" को हैश फ़ंक्शन की श्रेणी के रूप में परिभाषित करते हैं। R केवल कुछ स्थिर है। सुसंगत हैशिंग में, किसी वस्तु का पता हैश (x) / R पर स्थित होता है। चूंकि हमारा लुकअप बाल्टी की संख्या का कार्य नहीं है, इसलिए जब हम बाल्टी की संख्या बदलते हैं, तो हम कम रीमैपिंग के साथ समाप्त हो जाते हैं।
hash(x)/R
आपको 34500 देता है। आपको अभी भी 34500% 3 करने की आवश्यकता है ।