क्या ज़फ़ेपर कफ़्का के लिए जरूरी है?


134

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


12
काफ्का के सबसे बड़े डिजाइन लक्ष्यों में से एक क्लस्टर तैनाती हैं। यही वह समस्या है जो वे हल कर रहे हैं, और यह एक स्टैंडअलोन सर्वर के लिए zk- कम संस्करण बनाने के लिए मूर्खतापूर्ण होगा। मुझे लग रहा है कि काफ्का आपकी नौकरी का साधन नहीं है, लेकिन यह कि आप केवल एक वेनिला फ़ाइल का उपयोग करना बेहतर होगा ..
रिक्की

5
मुझे वास्तव में यह जानना अच्छा लगेगा कि आपने क्या अंतिम रूप दिया है? चूंकि आपने कोई उत्तर नहीं चुना है, इसलिए मुझे लगता है कि आपके पास इसके लिए अपना समाधान था। धन्यवाद !
कार्तिकेयन

जोको ज़ूकीपर निर्भरता और सिंगल बाइनरी इंस्टॉल के बिना काफ्का का एक गोलगप्पा कार्यान्वयन है
अरुण गोपालपुरी

1
ज़ुकाइपर को हटा दिया गया है, नीचे दिए गए उत्तर देखें - stackoverflow.com/a/57328140/1699956
मंगत राय मोदी

1
सिर्फ जोड़ने के लिए, अगर आप पढ़ते हैं कि ज़ुकाइपर क्या करता है, तो आपको यह विचार मिलेगा -Zookeeper is network coordinator in a distributed system. Use ZooKeeper extensively for discovery, resource allocation, leader election, and high priority notifications.
roottraveller

जवाबों:


128

हां, ज़फ़ेपर को काफ्का चलाने के लिए आवश्यक है। कफ़्का से प्रारंभ दस्तावेज

चरण 2: सर्वर शुरू करें

यदि आप पहले से ही एक नहीं है तो काफ्का ज़ुकीपर का उपयोग करता है। आप त्वरित और गंदे एकल-नोड ज़ुकीपर उदाहरण प्राप्त करने के लिए काफ्का के साथ पैक की गई सुविधा स्क्रिप्ट का उपयोग कर सकते हैं।

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

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


9
वास्तव में, कफ़्का को इस तरह से डिज़ाइन किया गया है कि आप में से एक भी ब्रोकर के साथ जाता है यह अभी भी वितरित मोड है, लेकिन 1 के प्रतिकृति कारक के साथ - कोई शॉर्टकट तंत्र या विशेष मोड नहीं होगा (और यह अच्छा है, वास्तव में)।
om-nom-nom

2
काफ्का 0.8.1 zk की आवश्यकता है। और मुझे आश्चर्य है, अगर एक समन्वय प्रणाली के साथ काम करने के लिए काफ्का में कोई सार परत नहीं है, तो अन्य समन्वय प्रणाली को काफ्का के लिए कैसे सक्षम किया जा सकता है।
stanleyxu2005

महत्वपूर्ण अपडेट stackoverflow.com/a/57328140/3438570
थियोडोसिस

64

जैसा कि दूसरों द्वारा समझाया गया है, काफ्का (यहां तक ​​कि सबसे हाल के संस्करण में) ज़ुकीपर के बिना काम नहीं करेगा।

कफ़्का निम्नलिखित के लिए ज़ुकीपर का उपयोग करता है:

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

क्लस्टर सदस्यता - कौन से दलाल जीवित हैं और क्लस्टर का हिस्सा हैं? यह भी चिड़ियाघरकीपर के माध्यम से प्रबंधित किया जाता है।

विषय विन्यास - कौन से विषय मौजूद हैं, प्रत्येक में कितने विभाजन हैं, प्रतिकृतियां कहां हैं, पसंदीदा नेता कौन हैं, प्रत्येक विषय के लिए कौन सा कॉन्फ़िगरेशन ओवरराइड निर्धारित हैं

(0.9.0) - कोटा - प्रत्येक ग्राहक को कितना डेटा पढ़ने और लिखने की अनुमति है

(0.9.0) - ACLs - जिन्हें किस विषय (पुराने उच्च स्तरीय उपभोक्ता) को पढ़ने और लिखने की अनुमति है - कौन से उपभोक्ता समूह मौजूद हैं, उनके सदस्य कौन हैं और प्रत्येक विभाजन से प्राप्त प्रत्येक समूह की नवीनतम ऑफसेट क्या है।

[ https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]

अपने परिदृश्य के बारे में, केवल एक ब्रोकर उदाहरण और कई उपभोक्ता के साथ एक निर्माता, यू एक चैनल बनाने के लिए पुशर का उपयोग कर सकता है, और उस चैनल को इवेंट को पुश कर सकता है जिसे उपभोक्ता उन घटनाओं को सब्सक्राइब और हाथ कर सकता है। https://pusher.com/


3
क्या आप "सबसे नवीनतम संस्करण" को वास्तविक संस्करण में संपादित करना चाहेंगे। आपकी प्रतिक्रिया आयु को बेहतर बनाता है।
akauppi


मैं संदर्भ जोड़ता हूं, अंतिम पैराग्राफ मूल रूप से मुझ से है।
केविन ली

47

महत्वपूर्ण अपडेट - अगस्त 2019:

ज़ूकेपर निर्भरता अपाचे काफ्का से हटा दी जाएगीKIP-500 में उच्च स्तरीय चर्चा देखें : ZooKeeper को एक स्व-प्रबंधित मेटाडेटा कोरम के साथ बदलें

इन प्रयासों में कुछ काफ्का रिलीज़ और अतिरिक्त केआईपी होंगे। Kafka नियंत्रकों वर्तमान ZooKeeper कार्यों के कार्यों को संभाल लेंगे। कंट्रोलर्स इवेंट लॉग का लाभ उठाएंगे जो काफ्का की एक मुख्य अवधारणा है।

नई काफ्का वास्तुकला के कुछ लाभ एक सरल वास्तुकला हैं, संचालन में आसानी और बेहतर मापनीयता (उदाहरण के लिए "असीमित विभाजन" की अनुमति देते हैं)।


17

जुलाई 2020 पर अपडेट किया गया

नवीनतम संस्करण (2.5.0) के लिए ज़ूकेपर को अभी भी काफ्का चलाने के लिए आवश्यक है , लेकिन निकट भविष्य में ज़ूकीपर को स्व-प्रबंधित मेटाडेटा कोरम के साथ बदल दिया जाएगा

स्वीकृत KIP-500 में विवरण देखें ।


11

काफ्का ज़ुकाइपर का उपयोग करने के लिए बनाया गया है। उससे कोई बचने वाला नहीं है।

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

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


9

IMHO Zookeeper एक उपरि नहीं है, लेकिन आपके जीवन को बहुत आसान बना देता है।

यह मूल रूप से एक क्लस्टर में विभिन्न नोड्स के बीच समन्वय बनाए रखने के लिए उपयोग किया जाता है। कफ़्का के लिए सबसे महत्वपूर्ण चीजों में से एक यह है कि यह समय-समय पर ऑफ़सेट के लिए ज़ुकीपर का उपयोग करता है ताकि नोड विफलता के मामले में यह पहले से किए गए ऑफसेट से फिर से शुरू हो सके (कल्पना करें कि यह सब अपने आप से ध्यान रखना)।

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

भविष्य के काफ़्का रिलीज़ ज़ुकीपर निर्भरता को दूर करने की योजना बना रहे हैं लेकिन अब तक यह इसका एक अभिन्न हिस्सा है।

यहां उनके FAQ पृष्ठ से कुछ पंक्तियां ली गई हैं:

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

अधिक जानकारी के लिए यहां देखें


13
ज़ुकाइपर एक बड़ा सिरदर्द है। HBase में। काफ्का में। तूफान में। लंबे समय से कीड़े हैं मुझे काफ्का / जेडके में पता है कि मेरी टीम ने इसे रैबिटएमक्यू के पक्ष में छोड़ दिया। HBase की स्थापना में ZK मुद्दों से निपटने के लिए समय शामिल है। हालाँकि ओपी आईएस से संबंधित आपका उत्तर सही है: जेडके आवश्यक है।
जावदबा

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

हां, उच्च लोड परिदृश्यों के लिए काफ्का बेहतर है। हमने तब तक RabbitMQ करने का फैसला किया, जब तक कि हमें उन लाभों की स्पष्ट रूप से आवश्यकता नहीं है। RabbitMQ में प्रोग्रामिंग आसान थी: काफ्का के लिए मुश्किल स्कैला संस्करण निर्भरताएं थीं।
जावदबा ११'१५ को १av:

4
IMHO zookeeper is not an overhead but makes your life a lot easier.-> एक sysop के दृष्टिकोण से नहीं। Zk पिछड़े पुराने जावा cruft का टुकड़ा है। उदाहरण के लिए, इसमें एक लंबा बकाया बग है कि यह dns प्रविष्टि के ttl का पालन नहीं करता है इसलिए यह एक प्रविष्टि को फिर से हल नहीं करेगा। खिड़की से बाहर अपने सर्वर स्वैप संभावनाओं जाता है। मैं इसे खुशी-खुशी वगैरह के लिए एक्सचेंज करूंगा।
रिका

"हमने तब तक RabbitMQ करने का फैसला किया, जब तक कि हमें स्पष्ट रूप से उन लाभों की आवश्यकता नहीं है"। काश मेरी टीम इस तरह प्रबुद्ध होती। IMHO, हमारे पास स्पष्ट रूप से काफ्का को सही ठहराने के लिए अधिक भार नहीं है, लेकिन हम वैसे भी काफ्का का उपयोग कर रहे हैं :(
श्री स्मिथ

4

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

काफ्का एक वितरित प्रणाली है। और इसलिए इसे अपने नोड्स के लिए किसी प्रकार के ऑर्केस्ट्रेशन की आवश्यकता होती है जो भौगोलिक रूप से दूर हो सकता है (या नहीं)।


3

हाँ, ज़फ़ेफ़र को काफ्का के लिए डिज़ाइन द्वारा होना चाहिए। क्योंकि ज़ूकीपर के पास काफ्का क्लस्टर के प्रबंधन की जिम्मेदारी है। इसके साथ सभी काफ्का दलालों की सूची है। यह काफ्का को सूचित करता है, यदि कोई दलाल नीचे जाता है, या विभाजन नीचे जाता है या नया दलाल ऊपर होता है या विभाजन ऊपर होता है। संक्षेप में ZK कफका क्लस्टर की वर्तमान स्थिति के बारे में हर काफ्का दलाल को अपडेट रखता है।

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


3

सामान्य पेलोड संदेश हस्तांतरण के अलावा, कई अन्य संचार हैं जो कफ़्का में होते हैं, जैसे

  • क्लस्टर सदस्यता का अनुरोध करने वाले दलालों से संबंधित घटनाएं।
  • ब्रोकर्स से संबंधित कार्यक्रम उपलब्ध हो रहे हैं।
  • बूटस्ट्रैप कॉन्फिगरेशन सेटअप करना।
  • नियंत्रक और नेता अपडेट से संबंधित घटनाएं।
  • स्टेटस अपडेट जैसे कि हार्टबीट अपडेट।

ज़ूकीपर स्वयं एक वितरित प्रणाली है जिसमें एक पहनावा में कई नोड्स होते हैं। ज़ुकाइटर ऐसे मेटाडेटा को बनाए रखने के लिए केंद्रीकृत सेवा है।


1

यह लेख काफ्का में ज़ुकीपर की भूमिका की व्याख्या करता है। यह बताता है कि काफ्का कैसे सांविधिक है और कफ़्का की वितरित प्रकृति (और कई और वितरित प्रणालियाँ) में ज़ूपर कैसे महत्वपूर्ण भूमिका निभाता है।


1

ज़फ़ेपर के बिना काफ्का को चलाने का अनुरोध काफी आम है। पुस्तकालय चार्लटन ने इसे संबोधित किया।

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

चार्लटन पुस्तकालय के लिए लेखकों के मुख्य उत्पाद के साथ काम करते समय मुझे उस पुस्तकालय का सामना करना पड़ा; यह ठीक काम करता है ...


0

पहले तो

Apache ZooKeeper एक वितरित स्टोर है जिसका उपयोग उच्च उपलब्ध तरीके से कॉन्फ़िगरेशन और सिंक्रोनाइज़ेशन सेवाएँ प्रदान करने के लिए किया जाता है । काफ़्का के अधिक हाल के संस्करणों में, क्लाइंट उपभोक्ताओं के लिए यह जानकारी रखने के लिए काम किया गया था कि उन्होंने ज़ूकेर में संदेशों (ऑफ़सेट्स) का सेवन कितनी दूर तक किया था .This reduced usage did not get rid of the need for consensus and coordination in distributed systems however.जबकि काफ़्का गलती-सहिष्णुता और लचीलापन प्रदान करता है , कुछ प्रदान करने के लिए आवश्यक है समन्वय की आवश्यकता है और ज़ूकीपर समग्र प्रणाली के उस टुकड़े को सक्षम बनाता है।

दूसरे

इस बात पर सहमत होना कि विभाजन का नेता कौन है, काफ्का पारिस्थितिकी तंत्र के भीतर चिड़ियाघरकीपर के व्यावहारिक अनुप्रयोग का एक उदाहरण है।

Zookeeper would work if there was even a single broker. 

ये काफ्का इन एक्शन किताब से हैं। छवि इस पाठ्यक्रम से है

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