2014-05-21 19 views
8

मैं काफ्का, संस्करण 0.8.1.1 की खोज के शुरुआती चरणों में हूं।एक समूह में कफका एकल उपभोक्ता विफलता

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

एक परीक्षण केस जिसे मैं चलाने के लिए चाहता था वह तब होता है जब समूह में कोई उपभोक्ता अचानक मर जाता है (उदाहरण, हत्या -9)। जब मैं ऐसा करता हूं, तो मुझे उम्मीद है कि पुनर्गठन होने की उम्मीद है, लेकिन ऐसा नहीं हो रहा है। तो, क्या मैं इन चीजों में से एक कर सकता हूं?

  1. उत्प्रेरक एपीआई
  2. कॉन्फ़िगर काफ्का का उपयोग कर पुनर्संतुलन उपभोक्ता गतिविधि के लिए एक निश्चित समय के लिए प्रतीक्षा करें और स्वचालित रूप से यह मानते हुए कि यह ungracefully बंद हो गया था को संतुलित करने के लिए।

यहां समस्या यह है कि मृत उपभोक्ता को सौंपा गया विभाजन में सभी संदेश कतार में बनी हुई हैं और पुनर्विक्रय होने तक कभी संसाधित नहीं होती है।

+0

मैं एक ही तरीके का उल्लेख करने की कोशिश की, लेकिन अभी भी एक ही सामना करना पड़ रहा issue..can तुम मुझे सुराग बात http: //stackoverflow.com/questions/39241872/kafka-common-consumerrebalancefailedexception-cant-rebalance-after -4 – Ratha

उत्तर

7

असंतुलन स्वचालित रूप से होगा जो उपभोक्ता कॉन्फ़िगरेशन (zookeeper.session.timeout.ms) में सेट किया जा सकता है। चिड़ियाघर संचालक सत्र टाइमआउट: documentaion प्रति

zookeeper.session.timeout.ms के रूप में। यदि उपभोक्ता इस अवधि के लिए ज़ूकीपर को दिल की धड़कन में विफल रहता है तो इसे मृत माना जाता है और एक पुनर्वसन होगा। डिफ़ॉल्ट मान 6000 एमएस

उसी समूह में अन्य लाइव उपभोक्ता टाइमआउट अंतराल के बाद संदेश प्राप्त करना शुरू कर देगा।

अपनी आवश्यकताओं के अनुसार इस टाइमआउट मान को कॉन्फ़िगर करें।

इसके अलावा

काफ्का दस्तावेज़ से कुछ और जानकारी:

उपभोक्ता पुनर्संतुलन विफल रहता है (यदि आप ConsumerRebalanceFailedException देखेंगे): यह संघर्ष जब दो उपभोक्ताओं एक ही विषय विभाजन रखने की कोशिश कर रहे हैं के कारण है। लॉग आपको दिखाएगा कि संघर्ष के कारण क्या हुआ ("संघर्ष में" खोजें)।

  1. अपने उपभोक्ता कई विषयों का सदस्य बनता है और अपने ZK सर्वर व्यस्त है, यह एक ही समूह में सभी उपभोक्ताओं के लिए एक सुसंगत दृश्य देखने के लिए पर्याप्त समय नहीं होने के लिए उपभोक्ताओं की वजह से हो सकता है। यदि ऐसा है, तो rebalance.max.retries और rebalance.backoff.ms बढ़ाने का प्रयास करें।
  2. एक अन्य कारण यह हो सकता है कि उपभोक्ताओं में से एक को कड़ी मेहनत की जा रही है। पुनर्विक्रय के दौरान अन्य उपभोक्ताओं को यह एहसास नहीं होगा कि उपभोक्ता zookeeper.session.timeout.ms समय के बाद चला गया है। इस मामले में, सुनिश्चित करें कि rebalance.max.retries * rebalance.backoff.ms> zookeeper.session.timeout.ms।
+0

धन्यवाद, मैं पहले से ही यह कर रहा था, कई बार डॉक्टर के माध्यम से चला गया। लेकिन शायद मेरे कोड का "सिमुलेशन" मारना पर्याप्त नहीं था। मैंने उपभोक्ता थ्रेड.interrupt() द्वारा उपभोक्ता धागा को मार दिया था; शायद जेके के साथ कनेक्शन को तोड़ नहीं दिया। जब मैंने उपभोक्ताओं को कई प्रक्रियाओं के रूप में भाग लिया और उन्हें मार दिया, तो यह पूरी तरह से काम करता था, यानी पुनर्वितरण हुआ। धन्यवाद! – binit

+0

मैंने कोशिश की लेकिन यह मेरी समस्या का समाधान नहीं किया। http://stackoverflow.com/questions/39241872/kafka-common-consumerrebalancefailedexception-cant-rebalance-after-4 – Ratha

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