मेरे पास 20 विभाजन और उपभोक्ताओं के साथ 3 प्रक्रियाएं (उसी group_id के साथ) विषय से संदेशों का उपभोग करने वाला विषय है। लेकिन मैं एक विसंगति देख रहा हूं जहां जब तक कोई एक प्रक्रिया नहीं करता है, दूसरा उपभोक्ता (एक अलग प्रक्रिया में) कोई संदेश नहीं पढ़ रहा है। जब मैं ऑटो-प्रतिबद्धता को सत्य पर सेट करता हूं तो उपभोक्ता अन्य प्रक्रिया में संदेश ग्रहण करते हैं। (यही कारण है कि मुझे संदेह है कि उपभोक्ताओं को प्रत्येक प्रक्रिया में पहले विभाजन को सौंपा जा रहा है)

क्या कोई कृपया इस मुद्दे पर मेरी मदद कर सकता है? और प्रक्रियाओं में समानांतर रूप से संदेशों का उपभोग कैसे करें?

यदि यह किसी काम का है, तो मैं इसे पॉड (कुबेरनेट्स) पर कर रहा हूं, जहां 3 प्रक्रियाएं 3 अलग-अलग खच्चर हैं।

1
darthsithius 25 फरवरी 2020, 12:52
यह स्पष्ट नहीं है कि आपके संदेशों को आपके विषय में कैसे वितरित किया जाता है
 – 
OneCricketeer
26 फरवरी 2020, 00:10

1 उत्तर

सबसे बढ़िया उत्तर

कमिट को कोई फर्क नहीं पड़ना चाहिए क्योंकि प्रतिबद्ध ऑफसेट का उपयोग केवल तभी किया जाता है जब समूह सदस्यता में कोई बदलाव होता है। तीन प्रक्रियाओं के साथ शुरू होने पर कुछ पुनर्संतुलन होगा लेकिन फिर जब सभी 3 चल रहे हों तो उनमें से प्रत्येक के पास विभाजन का उचित हिस्सा होगा।

हर बार जब वे मतदान करते हैं, तो वे याद करते हैं कि उन्होंने प्रत्येक विभाजन पर किस ऑफसेट का उपभोग किया है और प्रत्येक मतदान उन्हें उस बिंदु से प्राप्त करने का कारण बनता है। चाहे वे प्रतिबद्ध हों या नहीं, उस व्यवहार को प्रभावित नहीं करते हैं।

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

एक संभावित स्पष्टीकरण केवल दुर्लभ मतदान है। आप उल्लेख करते हैं कि अन्य उपभोक्ता विभाजन उठा रहे हैं, और व्यवहार को प्रभावित करता है, इसलिए मुझे लगता है कि यह कहना सुरक्षित है कि पुनर्संतुलन हो रहा होगा। पुनर्संतुलन या तो ब्रोकर के विभाजन में बदलाव (संभवतः ऐसा नहीं है) या समूह सदस्यता में बदलाव के कारण होता है, जो या तो दिल की धड़कन के धागे के मरने (एक पॉड को रोक दिया जाता है) या लंबे समय तक मतदान करने में विफल रहने वाले उपभोक्ता (डिफ़ॉल्ट 5 मिनट) के कारण होता है। , max.poll.interval.ms द्वारा निर्धारित)

एक पुनर्संतुलन के बाद, प्रत्येक विभाजन एक उपभोक्ता को सौंपा जाता है, और यदि किसी पिछले उपभोक्ता ने कभी उस विभाजन के लिए ऑफसेट किया है, तो नया उस ऑफसेट से मतदान करेगा। यदि नहीं, तो नया विभाजन या तो विभाजन की शुरुआत या उच्च वॉटरमार्क से मतदान करेगा - auto.offset.reset द्वारा निर्धारित - डिफ़ॉल्ट नवीनतम है (उच्च वॉटरमार्क)

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

यही कारण हो सकता है - आपके लॉग में क्या हो रहा है इसके बारे में अधिक जानकारी होनी चाहिए - काफ्का उपभोक्ता कोड पुनर्संतुलन के बारे में बहुत उपयोगी जानकारी स्तर लॉगिंग में डालता है।

0
Chris 28 फरवरी 2020, 11:23