अपाचे चिड़ियाघर कीपर को समझाते हुए


376

मैं चिड़ियाघर कीपर को समझने की कोशिश कर रहा हूं कि यह कैसे काम करता है और यह क्या करता है। क्या कोई आवेदन है जो ज़ूकीपर के बराबर है?

यदि आप जानते हैं, तो आप एक आम आदमी को चिड़ियाघर कीपर का वर्णन कैसे करेंगे?

मैंने अपाचे विकी की कोशिश की है, ज़ूकीपर सोर्सफोर्ज ... लेकिन मैं अभी भी इससे संबंधित नहीं हूं।

मैं सिर्फ http://zookeeper.sourceforge.net/index.sf.shtml पढ़ता हूं , तो क्या इसके लिए और अधिक सेवाएं नहीं हैं? क्या यह केवल सर्वर सेवा की नकल करने जितना आसान है?


6
आप के लिए देख रहे हैं, लेकिन सटीक जवाब के समान: stackoverflow.com/questions/1479442/real-world-use-of-zookeeper
zengr


आप इस पेपर चिड़ियाघरकीपर को पढ़ सकते हैं : दो याहू द्वारा लिखित इंटरनेट-स्केल सिस्टम के लिए प्रतीक्षा-मुक्त समन्वय ! इंजीनियरों
यापेट

यहाँ एक तकनीकी बात है जो Camille Fournier द्वारा Apache ZooKeeper का परिचय है जो RentTheRunway के CTO हैं। मुझे आशा है कि यह उपयोगी है।
Genadinik

@ ल्यूका गेरेटी ... मेरे लिए अभिवादन, ज़ुकपर एप का सेट प्रदान करता है ताकि हम वितरित एप्लिकेशन को समन्वयित करने के लिए इसका उपयोग कर सकें। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं।
user3797438

जवाबों:


434

संक्षेप में, ZooKeeper आपको वितरित एप्लिकेशन बनाने में मदद करता है।

यह काम किस प्रकार करता है

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

लिखते कैसे संभाला जाता है

मास्टर लेखन के लिए प्राधिकारी है: इस तरह से लिखते हैं कि इन-ऑर्डर को जारी रखने की गारंटी दी जा सकती है, अर्थात, लेखन रैखिक हैं । जब भी कोई ग्राहक पहनावा को लिखता है, तो अधिकांश नोड्स जानकारी को बनाए रखते हैं: इन नोड्स में क्लाइंट के लिए सर्वर और जाहिर है मास्टर शामिल हैं। इसका मतलब है कि प्रत्येक लेखन सर्वर को मास्टर के साथ अद्यतित करता है। हालांकि, इसका मतलब यह भी है कि आप समवर्ती लेखन नहीं कर सकते हैं।

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

पढ़े कैसे संभाले जाते हैं

यह वह जगह है जहां ज़ूकेर एक्सेल: पढ़ता है समवर्ती है क्योंकि वे उस विशिष्ट सर्वर द्वारा सेवा करते हैं जिसे क्लाइंट कनेक्ट करता है। हालाँकि, यह अंततः सुसंगतता का कारण भी है: एक ग्राहक का "दृश्य" पुराना हो सकता है, क्योंकि मास्टर एक बाउंडेड लेकिन अपरिभाषित देरी के साथ संबंधित सर्वर को अपडेट करता है।

विस्तार से

ज़ूकेपर के प्रतिकृति डेटाबेस में ज़नोड्स का एक पेड़ शामिल है , जो फ़ाइल सिस्टम नोड्स (निर्देशिका के रूप में उनके बारे में सोचते हैं) का प्रतिनिधित्व करते हैं। प्रत्येक znode को बाइट सरणी द्वारा समृद्ध किया जा सकता है, जो डेटा संग्रहीत करता है। इसके अलावा, प्रत्येक ज़नोड में इसके तहत अन्य ज़नोड हो सकते हैं, व्यावहारिक रूप से एक आंतरिक निर्देशिका प्रणाली बनाते हैं।

अनुक्रमिक क्षेत्र

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

पंचांग शून्य

इसके अलावा, एक znode अल्पकालिक हो सकता है : इसका मतलब यह है कि यह ग्राहक के रूप में जल्द ही नष्ट हो जाता है जिसने इसे काट दिया। यह मुख्य रूप से यह जानने के लिए उपयोगी है कि ग्राहक कब विफल होता है, जो तब प्रासंगिक हो सकता है जब ग्राहक के पास स्वयं जिम्मेदारियां हों जो एक नए ग्राहक द्वारा ली जानी चाहिए। लॉक का उदाहरण लेते हुए, जैसे ही क्लाइंट के पास लॉक डिस्कनेक्ट होता है, अन्य क्लाइंट यह जांच सकते हैं कि वे लॉक के हकदार हैं या नहीं।

घड़ियों

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

इसका उपयोग कहां और कैसे करें

ज़ुकीपर उपयोग का एक कैनोनिकल उदाहरण वितरित-मेमोरी कम्प्यूटेशन है, जहां कुछ डेटा क्लाइंट नोड्स के बीच साझा किए जाते हैं और सिंक्रनाइज़ेशन के लिए खाते में बहुत सावधानी से एक्सेस / अपडेट किया जाना चाहिए।

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

ज़ूकीपर फीचर-लाइट है, जिसका अर्थ है कि नेता चुनाव, ताले, बैरियर आदि जैसे तंत्र पहले से मौजूद नहीं हैं, लेकिन ज़ूकीर प्राइमेटिव्स के ऊपर लिखे जा सकते हैं। यदि C / Java API आपके उद्देश्यों के लिए बहुत अधिक अनपेक्षित है, तो आपको चिड़ियाघर कीपर जैसे कि पिंजरों और विशेष रूप से क्यूरेटर पर निर्मित पुस्तकालयों पर भरोसा करना चाहिए ।

ज्यादा कहां पढ़ा जाए

इसके अलावा आधिकारिक दस्तावेज, जो बहुत अच्छा है, मैं सुझाव देता हूं कि Hadoop के अध्याय 14 को पढ़ें : निश्चित गाइड जिसमें ~ 35 पृष्ठ हैं जो अनिवार्य रूप से समझाते हैं कि चिड़ियाघरकीपर क्या करता है, इसके बाद एक कॉन्फ़िगरेशन सेवा का एक उदाहरण है।


2
मुझे यकीन नहीं है कि मैं आपके द्वारा सुझाई जा रही संचार योजना को समझता हूं, लेकिन आप एक निर्माता से जानकारी को "प्रकाशित" करने के लिए चिड़ियाघरकीपर का उपयोग कर सकते हैं और कई उपभोक्ता इसे पढ़ सकते हैं। यदि दूसरी ओर सर्वर के प्रत्येक प्रकार का केवल एक उदाहरण मौजूद है, तो ZK का उपयोग करने में बहुत कम लाभ है।
लुका गेरेटी

57
IMO यह स्पष्ट करने में विफल रहता है कि ज़ूपर एक लेपर्सन के लिए क्या है। मुझे चिड़ियाघरकीपर की आवश्यकता कब होगी? मैं इसे क्या लिखूंगा? यह किस समस्या का हल है? क्या यह एक कुंजी-मूल्य की दुकान है? सर्च्र इंजन? एक वितरित ताला? क्यों मैं Redis या एक फ़ाइल या JIRA या पोस्ट-इट नोट्स पर ZooKeeper उठाऊंगा? आप चिड़ियाघरकीपर के बारे में स्पष्ट रूप से बहुत कुछ जानते हैं - लेकिन क्या आप इसे तकनीकी रूप से कम समझा सकते हैं?
दान पसारो

1
जैसा कि ज़ुकीपर ने रेखीय लिखा है, कि मुझे नोड बनाने और कॉलबैक में प्रतिक्रिया लेने के लिए एसिंक्रोनस एपीआई का उपयोग करने के लिए रोक नहीं है? हालांकि आंतरिक रूप से यह समवर्ती लेखन की अनुमति नहीं दे सकता है, या क्या मैं कुछ याद कर रहा हूं?
jdk2588

1
"हर बार जब कोई ग्राहक पहनावा लिखता है, तो अधिकांश नोड्स जानकारी को बनाए रखते हैं: इन नोड्स में क्लाइंट के लिए सर्वर शामिल होता है, और जाहिर है मास्टर" => क्या आप कृपया मुझे एक डॉक्टर को इंगित कर सकते हैं। या कुछ और जहां यह समझाया गया है? मैं सोच रहा हूं कि क्या यह संभव है कि जिस सर्वर से ग्राहक जुड़ा हुआ है, उस स्थिति को छोड़कर एक राज्य परिवर्तन सफलतापूर्वक किया गया था (किस स्थिति में, ग्राहक एक पल के लिए खुद के लिखने को पढ़ने में सक्षम नहीं होने के अजीब व्यवहार का अनुभव कर सकता है)
sense 28

2
पूछे जाने वाले प्रश्न के लिए पूरी तरह से और पूरी तरह से एंटीथेटिकल। यदि यह एक घड़ी थी, तो वह "टाइम कीपिंग डिवाइस" की तलाश करेगा, जिसमें मुख्यतः, पहिया ट्रेन, भागने और दोलन की अवधि, जड़ता के क्षण और कृत्रिम नीलम के प्रभाव के आधार पर उनकी बातचीत का विवरण नहीं होगा।
रिक ओ'शिआ

10

ज़ुकीपर सबसे अच्छा ओपन सोर्स सर्वर और सेवा है जो वितरित प्रक्रियाओं को विश्वसनीय रूप से समन्वयित करने में मदद करता है। ज़ुकीपर एक सीपी सिस्टम (रेफर कैप प्रमेय) है जो संगतता और विभाजन सहिष्णुता प्रदान करता है। सभी नोड्स में ज़ुकाइपर राज्य की प्रतिकृति यह अंततः एक सुसंगत वितरित सेवा बनाती है।

इसके अलावा, कोई भी नवनिर्वाचित नेता अपने अनुयायियों को लापता प्रस्तावों के साथ या राज्य के स्नैपशॉट के साथ अपडेट करेगा, यदि अनुयायियों के पास कई प्रस्ताव गायब हैं।

ज़ूकीपर एक एपीआई भी प्रदान करता है जिसका उपयोग करना बहुत आसान है। इस ब्लॉग पोस्ट, ज़ुकीपर जावा एपीआई के उदाहरणों में कुछ उदाहरण हैं , यदि आप उदाहरणों की तलाश कर रहे हैं।

तो हम इसका उपयोग कहां करते हैं? यदि आपकी वितरित सेवा को एक केंद्रीकृत, विश्वसनीय और सुसंगत कॉन्फ़िगरेशन प्रबंधन, ताले, कतारें आदि की आवश्यकता है, तो आपको ज़ुकाइपर एक विश्वसनीय विकल्प मिलेगा।


4
"ज़ुकीपर एक सीपी सिस्टम (रेफर कैप प्रमेय) है जो संगतता और विभाजन सहिष्णुता प्रदान करता है", मुझे लगता है कि ज़ुकीपर के पास मास्टर और अनुयायी हैं, जब मास्टर नीचे होता है, तो अनुयायी में से एक को नेता के रूप में चुना जाएगा, इसलिए ज़ुकीपर को प्रदान करना चाहिए एपी, हालांकि सी अंततः लगातार है।
यूफेंग शेन

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

7

मैं चिड़ियाघर कीपर को सामान्य रूप से समझता हूं, लेकिन "कोरम" और "विभाजित मस्तिष्क" शब्दों के साथ समस्या थी, इसलिए शायद मैं आपके साथ अपने निष्कर्षों को साझा कर सकता हूं (मैं खुद को एक आम आदमी मानता हूं)।

मान लें कि हमारे पास 5 सर्वरों का एक ज़ूकीपर क्लस्टर है। सर्वरों में से एक नेता बन जाएगा और अन्य अनुयायी बन जाएंगे।

  • ये 5 सर्वर एक कोरम बनाते हैं। कोरम का सीधा मतलब है कि "ये सर्वर इस बात पर मतदान कर सकते हैं कि कौन नेता होना चाहिए"।

  • इसलिए मतदान बहुमत पर आधारित है। बहुतायत का अर्थ है "आधे से अधिक" इसलिए आधे से अधिक सर्वरों को नेता बनने के लिए एक विशिष्ट सर्वर के लिए सहमत होना चाहिए।

  • तो यह बुरी चीज है जिसे "विभाजित मस्तिष्क" कहा जा सकता है। एक विभाजित मस्तिष्क बस यह है, जहां तक ​​मैं समझता हूं: 5 सर्वरों का क्लस्टर दो भागों में विभाजित होता है, या चलो इसे "सर्वर टीम" कहते हैं, जिसमें 2 का एक हिस्सा और 3 सर्वरों का दूसरा हिस्सा हो सकता है। यह वास्तव में एक बुरी स्थिति है जैसे कि दोनों "सर्वर टीमों" को एक विशिष्ट आदेश निष्पादित करना होगा आप कैसे तय करेंगे कि कौन सी टीम को प्राथमिकता दी जानी चाहिए? उन्हें ग्राहकों से अलग-अलग जानकारी मिली होगी। इसलिए यह जानना वास्तव में महत्वपूर्ण है कि "सर्वर टीम" क्या अभी भी प्रासंगिक है और किसको अनदेखा किया जाना चाहिए।

  • अधिकांश कारण यह भी है कि आपको विषम संख्या में सर्वर का उपयोग करना चाहिए। यदि आपके पास 4 सर्वर और एक विभाजित मस्तिष्क है जहां 2 सर्वर अलग हो जाते हैं, तो दोनों "सर्वर टीम" कह सकते हैं "हे, हम तय करना चाहते हैं कि नेता कौन है!" लेकिन आपको यह कैसे तय करना चाहिए कि आपको कौन से 2 सर्वर चुनने चाहिए? 5 सर्वरों के साथ यह सरल है: 3 सर्वरों वाली सर्वर टीम के पास बहुमत है और उन्हें नए नेता का चयन करने की अनुमति है।

  • यहां तक ​​कि अगर आपके पास सिर्फ 3 सर्वर हैं और उनमें से एक अन्य विफल रहता है 2 अभी भी बहुमत बनाते हैं और सहमत हो सकते हैं कि उनमें से एक नया नेता बन जाएगा।

मुझे एक बार एहसास हुआ कि आप इसके बारे में कुछ समय सोचते हैं और उन शर्तों को समझते हैं जो अब इतनी जटिल नहीं हैं। मुझे उम्मीद है कि इससे इन शर्तों को समझने में भी किसी को मदद मिलेगी।


1

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

अधिक जानकारी


2
आप क्या कहते हैं कि ज़ुकीपर केंद्रीकृत है? ज़ुकीपर वितरित किया जा सकता है और वितरित किया जाना चाहिए।
बेंजामिन हैमर नॉरगार्ड

1

मैं निम्नलिखित संसाधनों का सुझाव दूंगा:

  1. पेपर: https://pdos.csail.mit.edu/6.824/papers/zookeeper.pdf
  2. MIT 6.824 द्वारा 36:00 बजे से दिया गया व्याख्यान: https://youtu.be/pbmyrNjzdDk?t=2198

मेरा सुझाव है कि वीडियो देखें, पेपर पढ़ें, और फिर वीडियो देखें। यदि आप बेतरतीब ढंग से पहले से जानते हैं तो यह समझना आसान होगा।

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