संक्षेप में, ZooKeeper आपको वितरित एप्लिकेशन बनाने में मदद करता है।
यह काम किस प्रकार करता है
आप ZooKeeper को अंतिम स्थिरता के साथ एक प्रतिकृति सिंक्रनाइज़ेशन सेवा के रूप में वर्णित कर सकते हैं। यह मजबूत है, क्योंकि लगातार डेटा को कई नोड्स के बीच वितरित किया जाता है (नोड्स के इस सेट को "पहनावा" कहा जाता है) और एक क्लाइंट उनमें से किसी से कनेक्ट होता है (यानी, एक विशिष्ट "सर्वर"), एक नोड विफल होने पर माइग्रेट करता है; जब तक नोड्स का एक सख्त बहुमत काम कर रहा है, ज़ूकेपर नोड्स का पहनावा जीवित है। विशेष रूप से, एक मास्टर नोड को पहनावा के भीतर आम सहमति से गतिशील रूप से चुना जाता है; यदि मास्टर नोड विफल रहता है, तो मास्टर की भूमिका दूसरे नोड में माइग्रेट होती है।
लिखते कैसे संभाला जाता है
मास्टर लेखन के लिए प्राधिकारी है: इस तरह से लिखते हैं कि इन-ऑर्डर को जारी रखने की गारंटी दी जा सकती है, अर्थात, लेखन रैखिक हैं । जब भी कोई ग्राहक पहनावा को लिखता है, तो अधिकांश नोड्स जानकारी को बनाए रखते हैं: इन नोड्स में क्लाइंट के लिए सर्वर और जाहिर है मास्टर शामिल हैं। इसका मतलब है कि प्रत्येक लेखन सर्वर को मास्टर के साथ अद्यतित करता है। हालांकि, इसका मतलब यह भी है कि आप समवर्ती लेखन नहीं कर सकते हैं।
लीनियर राइट्स की गारंटी इस तथ्य का कारण है कि ज़ूकीपर राइट-वर्थ वर्कलोड के लिए अच्छा प्रदर्शन नहीं करता है। विशेष रूप से, इसका उपयोग मीडिया जैसे बड़े डेटा के इंटरचेंज के लिए नहीं किया जाना चाहिए। जब तक आपके संचार में साझा डेटा शामिल होता है, तब तक चिड़ियाघरकीपर आपकी मदद करता है। जब डेटा समवर्ती रूप से लिखा जा सकता है, तो चिड़ियाघरकीपर वास्तव में रास्ते में हो जाता है, क्योंकि यह लेखकों के दृष्टिकोण से कड़ाई से आवश्यक नहीं होने पर भी संचालन का सख्त आदेश देता है। इसका आदर्श उपयोग समन्वय के लिए है, जहां ग्राहकों के बीच संदेशों का आदान-प्रदान होता है।
पढ़े कैसे संभाले जाते हैं
यह वह जगह है जहां ज़ूकेर एक्सेल: पढ़ता है समवर्ती है क्योंकि वे उस विशिष्ट सर्वर द्वारा सेवा करते हैं जिसे क्लाइंट कनेक्ट करता है। हालाँकि, यह अंततः सुसंगतता का कारण भी है: एक ग्राहक का "दृश्य" पुराना हो सकता है, क्योंकि मास्टर एक बाउंडेड लेकिन अपरिभाषित देरी के साथ संबंधित सर्वर को अपडेट करता है।
विस्तार से
ज़ूकेपर के प्रतिकृति डेटाबेस में ज़नोड्स का एक पेड़ शामिल है , जो फ़ाइल सिस्टम नोड्स (निर्देशिका के रूप में उनके बारे में सोचते हैं) का प्रतिनिधित्व करते हैं। प्रत्येक znode को बाइट सरणी द्वारा समृद्ध किया जा सकता है, जो डेटा संग्रहीत करता है। इसके अलावा, प्रत्येक ज़नोड में इसके तहत अन्य ज़नोड हो सकते हैं, व्यावहारिक रूप से एक आंतरिक निर्देशिका प्रणाली बनाते हैं।
अनुक्रमिक क्षेत्र
दिलचस्प रूप से, एक znode का नाम अनुक्रमिक हो सकता है , जिसका अर्थ है कि ग्राहक जो नाम znode बनाते समय प्रदान करता है वह केवल एक उपसर्ग है: पूरा नाम भी कलाकारों की टुकड़ी द्वारा चुने गए अनुक्रमिक संख्या द्वारा दिया गया है। यह उपयोगी है, उदाहरण के लिए, सिंक्रनाइज़ेशन उद्देश्यों के लिए: यदि कई क्लाइंट किसी संसाधन पर लॉक प्राप्त करना चाहते हैं, तो वे प्रत्येक स्थान पर क्रमिक रूप से एक अनुक्रमिक ज़नोड बना सकते हैं: जो भी सबसे कम नंबर प्राप्त करता है, वह लॉक का हकदार होता है।
पंचांग शून्य
इसके अलावा, एक znode अल्पकालिक हो सकता है : इसका मतलब यह है कि यह ग्राहक के रूप में जल्द ही नष्ट हो जाता है जिसने इसे काट दिया। यह मुख्य रूप से यह जानने के लिए उपयोगी है कि ग्राहक कब विफल होता है, जो तब प्रासंगिक हो सकता है जब ग्राहक के पास स्वयं जिम्मेदारियां हों जो एक नए ग्राहक द्वारा ली जानी चाहिए। लॉक का उदाहरण लेते हुए, जैसे ही क्लाइंट के पास लॉक डिस्कनेक्ट होता है, अन्य क्लाइंट यह जांच सकते हैं कि वे लॉक के हकदार हैं या नहीं।
घड़ियों
क्लाइंट डिस्कनेक्शन से संबंधित उदाहरण समस्याग्रस्त हो सकता है अगर हमें समय-समय पर ज़नोड्स की स्थिति का सर्वेक्षण करने की आवश्यकता होती है। सौभाग्य से, चिड़ियाघरकीपर एक घटना प्रणाली प्रदान करता है जहां एक घड़ी को ज़नोड पर सेट किया जा सकता है। इन घड़ियों को एक घटना को ट्रिगर करने के लिए सेट किया जा सकता है अगर ज़्नोड को विशेष रूप से बदल दिया जाता है या हटा दिया जाता है या इसके तहत नए बच्चे बनाए जाते हैं। यह ज़्नोड्स के अनुक्रमिक और अल्पकालिक विकल्पों के साथ संयोजन में स्पष्ट रूप से उपयोगी है।
इसका उपयोग कहां और कैसे करें
ज़ुकीपर उपयोग का एक कैनोनिकल उदाहरण वितरित-मेमोरी कम्प्यूटेशन है, जहां कुछ डेटा क्लाइंट नोड्स के बीच साझा किए जाते हैं और सिंक्रनाइज़ेशन के लिए खाते में बहुत सावधानी से एक्सेस / अपडेट किया जाना चाहिए।
चिड़ियाघरकीपर पुस्तकालय को आपके सिंक्रोनाइज़ेशन प्रिमिटिव का निर्माण करने की पेशकश करता है, जबकि वितरित सर्वर को चलाने की क्षमता केंद्रीयकृत (ब्रोकर की तरह) संदेश रिपॉजिटरी का उपयोग करते समय आपके पास एकल-बिंदु-विफलता की समस्या से बचती है।
ज़ूकीपर फीचर-लाइट है, जिसका अर्थ है कि नेता चुनाव, ताले, बैरियर आदि जैसे तंत्र पहले से मौजूद नहीं हैं, लेकिन ज़ूकीर प्राइमेटिव्स के ऊपर लिखे जा सकते हैं। यदि C / Java API आपके उद्देश्यों के लिए बहुत अधिक अनपेक्षित है, तो आपको चिड़ियाघर कीपर जैसे कि पिंजरों और विशेष रूप से क्यूरेटर पर निर्मित पुस्तकालयों पर भरोसा करना चाहिए ।
ज्यादा कहां पढ़ा जाए
इसके अलावा आधिकारिक दस्तावेज, जो बहुत अच्छा है, मैं सुझाव देता हूं कि Hadoop के अध्याय 14 को पढ़ें : निश्चित गाइड जिसमें ~ 35 पृष्ठ हैं जो अनिवार्य रूप से समझाते हैं कि चिड़ियाघरकीपर क्या करता है, इसके बाद एक कॉन्फ़िगरेशन सेवा का एक उदाहरण है।