Apache Kafka में, उपभोक्ता द्वारा पढ़े गए अंतिम संदेश का ट्रैक कौन रखता है? और यह भी कौन ट्रैक करता है कि कौन सा कंज्यूमर ग्रुप आईडी किस पार्टीशन से पढ़ता है? क्या यह सारी जानकारी ज़ूकीपर में है?

2
Ash 14 जून 2020, 18:23

1 उत्तर

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

प्रत्येक उपभोक्ता समूह अपने ऑफसेट प्रति विषय विभाजन को बनाए रखता है। चूंकि v0.9 प्रत्येक उपभोक्ता समूह के लिए प्रतिबद्ध ऑफ़सेट की जानकारी इस आंतरिक विषय में संग्रहीत की जाती है (v0.9 से पहले यह जानकारी ज़ूकीपर पर संग्रहीत की गई थी)। जब ऑफ़सेट प्रबंधक को OffsetCommitRequest प्राप्त होता है, तो यह अनुरोध को __consumer_offsets नामक एक विशेष संकुचित काफ्का विषय में जोड़ देता है। अंत में, ऑफ़सेट प्रबंधक उपभोक्ता को एक सफल ऑफ़सेट कमिट प्रतिक्रिया तभी भेजेगा, जब ऑफ़सेट विषय की सभी प्रतिकृतियाँ ऑफ़सेट प्राप्त करती हैं।


विभाजन असाइनमेंट के बारे में आपके प्रश्न के संबंध में, काफ्का का उपयोग करता है Partition.assignment.strategy यह निर्धारित करने के लिए कि उपभोक्ताओं को विभाजन कैसे सौंपे जाते हैं। यह संपत्ति RangeAssignor:

रेंज असाइनर प्रति-विषय के आधार पर काम करता है। प्रत्येक विषय के लिए, हम उपलब्ध विभाजनों को संख्यात्मक क्रम में और उपभोक्ताओं को शब्दावली क्रम में रखते हैं। हम तब विभाजन की संख्या को उपभोक्ताओं की कुल संख्या से विभाजित करते हैं ताकि प्रत्येक उपभोक्ता को आवंटित किए जाने वाले विभाजनों की संख्या निर्धारित की जा सके। यदि यह समान रूप से विभाजित नहीं होता है, तो पहले कुछ उपभोक्ताओं के पास एक अतिरिक्त विभाजन होगा। उदाहरण के लिए, मान लें कि दो उपभोक्ता C0 और C1, दो विषय t0 और t1 हैं, और प्रत्येक विषय में 3 विभाजन हैं, जिसके परिणामस्वरूप विभाजन t0p0, t0p1, t0p2, t1p0, t1p1, और t1p2 हैं। असाइनमेंट होगा: C0: [t0p0, t0p1, t1p0, t1p1] C1: [t0p2, t1p2]

अन्य दो विकल्प हैं RoundRobinAssignor और StickyAssignor

2
Giorgos Myrianthous 14 जून 2020, 15:54