12

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

मैंने नीचे चर्चा की गई कई विकल्पों की खोज की है लेकिन मैं एक शक्तिशाली स्केलेबल समाधान के साथ आने में सक्षम नहीं हूं।

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

मैंने इस समस्या को हल करने के लिए 3 दृष्टिकोणों का पालन किया 1> सॉकेटआईओ/सॉकेटक्लस्टर 2> ब्रोकर के रूप में मच्छर/खरगोश के साथ एमकेटी प्रोटोकॉल का पता लगाया। 3> एक्सप्लोर किया गया काफ्का

मुख्य लक्ष्य यह आर्किटेक्चर न केवल मिलियन से अधिक ग्राहक कनेक्शन के साथ उच्च स्केलेबल बनाना है, बल्कि लाखों से अधिक संदेश प्रकाशित और प्रति सेकंड उपभोग किए गए हैं।

पहला दृष्टिकोण सरल है और यह काम करता है लेकिन वेबसाकेट स्केलेबल समाधान नहीं है।

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

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

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

यह भी एक मुख्य समस्या यह है कि यह कफका क्लाइंट आकार में बड़ा है क्योंकि इसकी स्केल निर्भरताएं हैं इसलिए एंड्रॉइड में इस क्लाइंट का उपयोग करना एक अच्छा विकल्प नहीं होगा, मुझे नहीं लगता कि यह काम करेगा।

mqtt यहाँ excels के रूप में यह एंड्रॉयड, जावा के लिए सरकारी Phao ग्राहकों है, ios आदि वेब लाख उपभोक्ताओं के साथ पब/उप संदेश भेजने के लिए काफ्का के प्रयोग पर

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

मुख्य सवाल यह है कि इस तरह मैं संदेश दलाल के रूप में काफ्का के साथ mqtt प्रोटोकॉल (जो Android/iOS/वेब/iot के साथ अच्छी तरह से काम करता है) का उपयोग कर सकते हैं (जो एक उच्च प्रकाशित करें/सदस्यता लें दर) और एक साथ आते हैं इस समस्या के लिए स्केलेबल समाधान।

मेरा उपयोग केस किसी भी तरह से उबेर जैसा दिखता है जहां लाखों एंड्रॉइड/आईओएस डिवाइस (क्लाइंट) हैं और हम वास्तव में मानचित्र पर हमारे स्थान पर सभी कारों के वास्तविक समय के आंदोलन को देख सकते हैं, क्या किसी के पास कोई विचार है कारों के इन वास्तविक समय ट्रैकिंग के पीछे वास्तुकला क्या है।

उत्तर

5

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

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

हमें लगता है कि यह चीजों को करने का एक दिलचस्प तरीका है, लेकिन यह नौकरी किया जाता है। जैसा कि वे ध्यान देते हैं, फोकस थ्रूपुट पर है और विलंबता नहीं है, इसलिए जबकि यह इस तरह के उपयोग के लिए उपयुक्त नहीं है, यह नौकरी किया जाता है।

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