2015-12-29 17 views
8

मैंने पढ़ा है कि आपके पास प्रति किनेस स्ट्रीम में एकाधिक उपभोक्ता ऐप्स हो सकते हैं।एकाधिक उपभोक्ता प्रति किनेसिस शर्ड

http://docs.aws.amazon.com/kinesis/latest/dev/developing-consumers-with-kcl.html

हालांकि, मैंने सुना है आप केवल प्रति ठीकरा उपभोक्ता पर हो सकता है। क्या ये सच है? मुझे इसका समर्थन करने के लिए कोई दस्तावेज नहीं मिला है, और यह कल्पना नहीं कर सकता कि यह कैसे हो सकता है यदि एकाधिक उपभोक्ता एक ही स्ट्रीम से पढ़ रहे हों। निश्चित रूप से, इसका मतलब यह नहीं है कि निर्माता को विभिन्न उपभोक्ताओं के लिए विभिन्न shards में सामग्री दोहराने की जरूरत है।

उत्तर

10

किनेसिस क्लाइंट लाइब्रेरी पृष्ठभूमि में थ्रेड शुरू करता है, प्रत्येक स्ट्रीम में 1 शेड सुनता है। आप कई धागे पर एक शार्ड से कनेक्ट नहीं हो सकते हैं, जो डिज़ाइन है।

http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-scaling.html

उदाहरण के लिए, आपके आवेदन एक EC2 उदाहरण पर चल रहा है, और एक अमेज़न Kinesis धारा चार के टुकड़े है कि संसाधित कर रहा है, तो। यह एक उदाहरण में एक केसीएल कार्यकर्ता और चार रिकॉर्ड प्रोसेसर हैं (प्रत्येक रिकॉर्ड के लिए एक रिकॉर्ड प्रोसेसर)। ये चार रिकॉर्ड प्रोसेसर उसी प्रक्रिया के भीतर समानांतर में चलते हैं।

उपरोक्त स्पष्टीकरण में, "केसीएल कार्यकर्ता" शब्द काइनेस उपभोक्ता अनुप्रयोग को संदर्भित करता है। धागे नहीं।

लेकिन नीचे, उसी "केसीएल कार्यकर्ता" शब्द को एप्लिकेशन में "वर्कर" धागा से संदर्भित किया गया है; जो एक रननेबल है।

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

केसीएल स्रोत में Worker.java कक्षा देखें।

+0

अब मैं समझता हूं। इस मामले में, यहां तक ​​कि यदि कई उदाहरण हैं, तो वे एक ही ग्राहक आवेदन हैं। मैं कफका की रेखा के साथ सोच रहा था, जहां स्वतंत्र अनुप्रयोग एक ही स्ट्रीम से पढ़ सकते हैं। – bhomass

+2

@ user1058511: आप कर सकते हैं।किन्सिस एक ही स्ट्रीम को समान रूप से उपभोग करने के लिए एकाधिक अनुप्रयोगों के उपयोग-मामले का समर्थन करता है। उदाहरण के लिए, आपके पास एक ऐसा एप्लिकेशन है जो रीयल-टाइम डैशबोर्ड अपडेट करता है और दूसरा डेटा संग्रह करता है। आप चाहते हैं कि दोनों अनुप्रयोग समान स्ट्रीम से डेटा को एक साथ और स्वतंत्र रूप से उपभोग करें। –

+0

मुझे लगता है कि मुझे फिर से बदलाव करने की आवश्यकता है। काफ्का के मामले में, कई उपभोक्ता ऐप्स एक उपभोक्ता समूह में भाग ले सकते हैं क्योंकि किसी भी संदेश को बार-बार संसाधित नहीं किया जाता है। इस अर्थ में, मैं "स्वतंत्र" मानने के लिए "स्वतंत्र" नहीं कहना चाहता हूं। – bhomass

2

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

प्रत्येक ठीकरा 5 लेन-देन करने के लिए प्रति सेकंड पढ़ता के लिए एक अधिकतम कुल डेटा के समर्थन कर सकते हैं, पढ़ प्रति सेकंड 2 एमबी की दर:

वहाँ सीमा,, के रूप में the docs में बाहर रखी सहित हैं, हालांकि, ।

आप एक से अधिक उपभोक्ताओं को जहां प्रत्येक संदेश एक बार कार्रवाई की जाएगी साथ एक धारा चाहते हैं, तो आप शायद Amazon Simple Queue Service की तरह कुछ के साथ बेहतर कर रहे हैं।

+1

मैं "कम से कम एक बार संसाधित" होने के लिए "एक बार संसाधित" संपादित करूंगा। एसक्यूएस में, आपको गारंटी नहीं है कि एक बार एक संदेश संसाधित किया जाएगा। आपको कम से कम एक बार प्रोसेसिंग मिल जाएगी: https://stackoverflow.com/questions/37472129/using-many-consumers-in-sqs-queue – skeller88

+0

क्या दोनों केसीएल उदाहरण समान डेटा प्राप्त करेंगे या उदा। ईसी 2 उदाहरणों में डेटा "गोल लूट" हो सकता है? मैं एक ऐसे समाधान की तलाश में हूं जहां किनेसिस डेटा स्ट्रीम का उपभोक्ता लगातार चलने पर किसी अन्य सर्वर के स्टार्टअप के इंतजार किए बिना चल रहा है (उदाहरण के लिए दो सर्वर हमेशा चल रहे हैं, लेकिन रिकॉर्ड्स को दो बार संसाधित करने से बचें) –

+0

प्रत्येक उपभोक्ता को वही डेटा मिलता है (इसकी चेकपॉइंटिंग द्वारा प्रबंधित किया जाता है), और जो भी चाहें उसे उपभोग कर सकता है, एक दूसरे से स्वतंत्र, दो इटरेटर होने के समान। वे केवल उनकी संयुक्त पढ़ने की सीमा के साथ मिलकर हैं। यह वह जगह है जहां किनेसिस एडब्ल्यूएस एसक्यूएस के लिए अलग-अलग व्यवहार करती है (जो प्रभावी रूप से एक सिंगल इटरेटर है)। –

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