पीयर-टू-पीयर बताता है कि एप्लिकेशन के पैकेट कैसे यात्रा करते हैं, और इससे अधिक कुछ नहीं। साथियों को अभी भी एक-दूसरे को खोजना, यह साबित करना कि वे कौन हैं, और कभी-कभी रिले का सहारा लेना पड़ता था जब सीधा पथ नहीं बनाया जा सकता था। ये तीन अलग सेवाएँ हैं, और तैनाती डेटा के लिए पीयर-टू-पीयर हो सकती है जबकि बाकी सब कुछ के लिए पूरी तरह केंद्रीकृत हो। डिज़ाइनों की तुलना करने का अर्थ उन कार्यों की तुलना है, आरेख पर तीर की नहीं।

केंद्रीय अग्रेषण तीर के बिना एक आरेख पंजीकरण प्राधिकरण, खोज सेवा और रिले छिपा सकता है, जो सभी परिचालन निर्भरताएँ हैं।

सीधा पथ, साझा नियंत्रण तल

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

हर कार्य को अलग-अलग चित्रित करें, भले ही एक ही होस्ट सभी को करे। अन्यथा चित्र विकेंद्रीकृत डेटा तल दिखाता है और इस परिचालन वास्तविकता को छिपाता है कि हर नए साथी को वही दो सेवाएँ चाहिए।

खोज, विश्वास और रिले तीन कार्य हैं

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

प्रस्तावित तैनाती के लिए उस युग्म के लिए समर्थित बैकअप पथ लिखें जो सीधे कनेक्ट नहीं हो सकता। विफल होल-पंच एक नेटवर्क के बारे में एक डेटा बिंदु है, यह प्रमाण नहीं कि NAT के पीछे दो साथी कभी नहीं मिल सकते; विपरीत दावा, कि सीधी कनेक्टिविटी किसी भी नीति के तहत काम करती है, उतना ही आधारहीन है।

हर निर्भरता किस पर विफल होती है

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

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

पूछें कि किस रुकावट से आप बच सकते हैं

समान सुनने वाली आवश्यकताएँ अलग-अलग डिज़ाइनों की ओर ले जाती हैं। अग्रेषण की एक अड़चन से बचना किसी विक्रेता द्वारा होस्ट किए गए नियंत्रण तल से बचने के समान नहीं है, और इनमें से कोई भी तब संचालन जारी रखने से मेल नहीं खाता जब समन्वयक अनुपलब्ध हो। नाम दें कि तैनाती को इन तीनों में से कौन-सी पूरी करनी है, फिर मैपिंग जाँचें। जो डिज़ाइन पहली को पूरा करता है और दूसरी में विफल होता है वह सामान्य है और बेईमान नहीं, जब तक कोई उसे पूरी तरह विकेंद्रीकृत न कहे।

लिखें कि खोज, विश्वास और रिले को कौन संचालित करता है और हर एक को कैसे प्रतिस्थापित किया जाता है। वही रिकॉर्ड अगले व्यक्ति को वास्तविक प्रश्न का उत्तर देने देता है: यह नेटवर्क किन विफलताओं से बचता है, और साझा रहने वाली स्थिति को कौन बनाए रखता है?

विकेंद्रीकृत शब्द अपनी जगह तभी कमाता है जब वह उन विफलताओं का नाम ले। उस सूची के बिना यह एक आरेख का वर्णन करता है, प्रणाली का नहीं।

संबंधित लेख