2015-01-13 17 views
24

क्यों यह है कि उपभोक्ता विभाजन स्थानों को पुनर्प्राप्त करने के लिए ज़ूकीपर से कनेक्ट होते हैं? और कफका उत्पादकों को मेटाडेटा को पुनः प्राप्त करने के लिए ब्रोकरों में से एक से जुड़ना होगा।काफ्का उपभोक्ता ज़ूकीपर से क्यों जुड़ते हैं, और निर्माता ब्रोकरों से मेटाडेटा प्राप्त करते हैं?

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

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

उत्तर

38

सबसे पहले, ज़ूकीपर केवल उच्च स्तर के उपभोक्ता के लिए आवश्यक है। SimpleConsumer को ज़ूकीपर को काम करने की आवश्यकता नहीं है।

मुख्य कारण ज़ूकीपर को उच्च स्तर के उपभोक्ता के लिए जरूरी है कि उपभोग वाले ऑफसेट ट्रैक करें और भार संतुलन को संभालें।

अब अधिक जानकारी में।

ऑफसेट ट्रैकिंग के संबंध में, निम्नलिखित परिदृश्य की कल्पना करें: आप उपभोक्ता शुरू करते हैं, 100 संदेश उपभोग करते हैं और उपभोक्ता को बंद कर देते हैं। अगली बार जब आप अपना उपभोक्ता शुरू करेंगे तो आप संभवतः अपने अंतिम उपभोग वाले ऑफसेट (जो 100 है) से फिर से शुरू करना चाहते हैं, और इसका मतलब है कि आपको कहीं भी अधिकतम खपत ऑफसेट स्टोर करना होगा। यहां पर ज़ूकीपर कहां जाता है: यह प्रत्येक समूह/विषय/विभाजन के लिए ऑफ़सेट स्टोर करता है। तो अगली बार जब आप अपना उपभोक्ता शुरू करेंगे तो यह पूछ सकता है "अरे ज़ूकीपर, ऑफसेट मुझे किससे शुरू करना चाहिए?"। कफका वास्तव में न केवल ज़ूकीपर में ऑफसेट स्टोर करने में सक्षम होने की दिशा में आगे बढ़ रहा है, लेकिन अन्य स्टोरेज में भी (अब केवल zookeeper और kafka ऑफ़सेट स्टोरेज उपलब्ध हैं और मुझे यकीन नहीं है कि kafka संग्रहण पूरी तरह कार्यान्वित किया गया है)।

भार संतुलन के संबंध में, उत्पादित संदेशों की मात्रा 1 मशीन द्वारा संभालने के लिए काफी बड़ी हो सकती है और आप शायद किसी बिंदु पर कंप्यूटिंग पावर जोड़ना चाहेंगे। मान लें कि आपके पास 100 विभाजन वाले विषय हैं और आपके पास 10 मशीनों की इस संदेश को संभालने के लिए है। वास्तव में यहां कई प्रश्न उत्पन्न हुए हैं:

  • इन 10 मशीनों को एक-दूसरे के बीच विभाजन कैसे विभाजित करना चाहिए?
  • यदि मशीनों में से कोई मर जाता है तो क्या होता है?
  • यदि आप कोई और मशीन जोड़ना चाहते हैं तो क्या होता है?

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

+2

उत्तर के लिए धन्यवाद, यह इसे साफ़ करता है, यह मैंने अनुमान लगाया है लेकिन मुझे इसे कहीं भी नहीं मिला। मैंने बस उस संस्करण 0.9 को पढ़ा है, उपभोक्ता अब ज़ूकीपर का उपयोग नहीं करेंगे, और इसका इस्तेमाल ब्रोकर द्वारा नेता चुनाव आदि के लिए किया जाता है। – Luckl507

7

kafka 0.9+ के साथ नया उपभोक्ता API पेश किया गया था। नए उपभोक्ताओं को जुकीपर से कनेक्शन की आवश्यकता नहीं है क्योंकि समूह संतुलन काफका स्वयं ही प्रदान किया जाता है।

संबंधित मुद्दे