Apache Kafka Kya Hai

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

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

Messaging System क्या है

एक संदेश प्रणाली एक अनुप्रयोग से दूसरे में डेटा स्थानांतरित करने के लिए जिम्मेदार है इसलिए एप्लिकेशन डेटा पर ध्यान केंद्रित कर सकते हैं लेकिन इसे साझा करने के तरीके के बारे में चिंता न करें. वितरित संदेश विश्वसनीय संदेश कतार की अवधारणा पर आधारित है संदेश क्लाइंट अनुप्रयोग और संदेश प्रणाली के बीच अतुल्यकालिक रूप से कतारबद्ध हैं. दो प्रकार के मैसेजिंग पैटर्न उपलब्ध हैं एक है पॉइंट टू पॉइंट और दूसरा है पब्लिश-सब्सक्रिप्शन (पब-सब) मैसेजिंग सिस्टम. अधिकांश मैसेजिंग पैटर्न पब-उप का पालन करते हैं.

Point to Point Messaging System

एक बिंदु से बिंदु प्रणाली में, संदेश एक कतार में बने रहते हैं. एक या अधिक उपभोक्ता कतार में लगे संदेशों का उपभोग कर सकते हैं लेकिन एक विशेष संदेश का उपभोग अधिकतम एक उपभोक्ता ही कर सकता है. एक बार जब कोई उपभोक्ता कतार में कोई संदेश पढ़ता है तो वह उस कतार से गायब हो जाता है. इस प्रणाली का विशिष्ट उदाहरण एक ऑर्डर प्रोसेसिंग सिस्टम है जहां प्रत्येक ऑर्डर को एक ऑर्डर प्रोसेसर द्वारा संसाधित किया जाएगा लेकिन मल्टीपल ऑर्डर प्रोसेसर एक ही समय में काम कर सकते हैं.

Publish-Subscribe Messaging System

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

What is Kafka

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

Benefits

काफ्का के कुछ लाभ निम्नलिखित हैं -

  1. Reliability − कफका वितरित, विभाजन, प्रतिकृति और दोष सहिष्णुता है.

  2. Scalability − कफ़का मैसेजिंग सिस्टम बिना समय के आसानी से तराजू.

  3. Durability − काफ्का डिस्ट्रीब्यूटेड कमिट लॉग का उपयोग करता है जिसका अर्थ है कि संदेश डिस्क पर जितनी जल्दी हो सके इसलिए यह टिकाऊ है.

  4. Performance − संदेश को प्रकाशित करने और सदस्यता लेने दोनों के लिए काफ्का में उच्च प्रवाह है. यह स्थिर प्रदर्शन को बनाए रखता है यहां तक कि कई टीबी संदेशों को संग्रहीत किया जाता है.

काफ्का बहुत तेज है और शून्य डाउनटाइम और शून्य डेटा हानि की गारंटी देता है.

Use Cases

काफ्का का उपयोग कई उपयोग मामलों में किया जा सकता है. उनमें से कुछ नीचे सूचीबद्ध हैं -

  1. Metrics − कफका अक्सर परिचालन निगरानी डेटा के लिए उपयोग किया जाता है. इसमें परिचालन डेटा के केंद्रीकृत फ़ीड का उत्पादन करने के लिए वितरित अनुप्रयोगों के एकत्रित आंकड़े शामिल हैं.

  2. Log Aggregation Solution − कफ़्का का उपयोग कई सेवाओं से लॉग एकत्र करने और उन्हें मानक प्रारूप में कई कॉन-समर में उपलब्ध कराने के लिए एक संगठन में किया जा सकता है.

  3. Stream Processing − स्टॉर्म और स्पार्क स्ट्रीमिंग जैसे लोकप्रिय ढांचे एक विषय के डेटा को पढ़ते हैं इसे संसाधित करते हैं, और संसाधित डेटा को एक नए विषय पर लिखते हैं जहां यह उपयोगकर्ताओं और अनुप्रयोगों के लिए उपलब्ध हो जाता है. स्ट्रीम प्रसंस्करण के संदर्भ में काफ्का का मजबूत स्थायित्व भी बहुत उपयोगी है.

Need for Kafka

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

Apache Kafka WorkFlow

अब तक हमने काफ्का की मुख्य अवधारणाओं पर चर्चा की. आइए अब काफ्का के वर्कफ़्लो पर कुछ प्रकाश डालें.

काफ्का बस एक या अधिक विभाजन में विभाजित विषयों का एक संग्रह है. एक काफ्का विभाजन संदेशों का एक क्रमबद्ध रूप से क्रमबद्ध क्रम है जहां प्रत्येक संदेश को उनके सूचकांक द्वारा पहचाना जाता है जिसे ऑफसेट कहा जाता है. एक काफ्का क्लस्टर में सभी डेटा विभाजन का असंबद्ध संघ है. इनकमिंग संदेश एक विभाजन के अंत में लिखे गए हैं और संदेश उपभोक्ताओं द्वारा क्रमिक रूप से पढ़े जाते हैं. विभिन्न ब्रोकरों को संदेशों की प्रतिकृति द्वारा स्थायित्व प्रदान किया जाता है.

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

Workflow of Pub-Sub Messaging

निम्नलिखित पब-सब मैसेजिंग का चरणवार वर्कफ़्लो है -

  1. निर्माता नियमित अंतराल पर एक विषय पर संदेश भेजते हैं.

  2. Kafka ब्रोकर उस विशेष विषय के लिए कॉन्फ़िगर किए गए विभाजनों में सभी संदेशों को संग्रहीत करता है. यह सुनिश्चित करता है कि संदेश विभाजन के बीच समान रूप से साझा किए गए हैं. यदि निर्माता दो संदेश भेजता है और दो विभाजन होते हैं तो काफ्का पहले विभाजन में एक संदेश और दूसरे विभाजन में दूसरा संदेश संग्रहीत करेगा.

  3. उपभोक्ता एक विशिष्ट विषय की सदस्यता लेता है.

  4. एक बार जब उपभोक्ता किसी विषय की सदस्यता ले लेता है तो काफ्का उपभोक्ता को विषय की वर्तमान ऑफ़सेट प्रदान करेगा और ज़ुकाइपर पहनावे में ऑफ़सेट को भी बचाता है.

  5. उपभोक्ता नए संदेशों के लिए नियमित अंतराल जैसे 100 एमएस में काफ्का का अनुरोध करेगा.

  6. एक बार काफ्का उत्पादकों से संदेश प्राप्त करता है यह इन संदेशों को उपभोक्ताओं को अग्रेषित करता है.

  7. उपभोक्ता संदेश प्राप्त करेगा और इसे संसाधित करेगा.

  8. संदेशों के संसाधित होने के बाद उपभोक्ता काफ्का दलाल को एक पावती भेजेगा.

  9. एक बार जब काफ्का को एक पावती मिलती है तो वह ऑफसेट को नए मूल्य में बदल देता है और इसे ज़ूकीपर में अपडेट करता है. चूंकि ज़ुकाइटर में ऑफ़सेट बनाए जाते हैं इसलिए उपभोक्ता सर्वर के दौरान भी अगले संदेश को सही ढंग से पढ़ सकता है.

  10. यह उपरोक्त प्रवाह तब तक दोहराएगा जब तक कि उपभोक्ता अनुरोध को रोक नहीं देता है.

  11. उपभोक्ता के पास किसी भी समय किसी विषय की वांछित ऑफ़र्स को रिवाइंड स्किप करने का विकल्प होता है और बाद के सभी संदेशों को पढ़ सकता है.

Role of ZooKeeper

Apache Kafka की एक महत्वपूर्ण निर्भरता Apache Zookeeper है जो एक वितरित कॉन्फ़िगरेशन और सिंक्रनाइज़ेशन सेवा है. ज़ूकीफ़र काफ्का दलालों और उपभोक्ताओं के बीच समन्वय इंटरफ़ेस के रूप में कार्य करता है. काफ्का सर्वर एक ज़ुकीपर क्लस्टर के माध्यम से जानकारी साझा करता है. कफ़का ज़ूकीपर में बुनियादी मेटाडेटा संग्रहीत करता है जैसे कि विषयों, दलालों, उपभोक्ता ऑफ़सेट्स कतार पाठकों के बारे में जानकारी और इतने पर.

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