2017-08-08 32 views
6

मैं कफका के साथ स्ट्रीम प्रसंस्करण में गोता लगाने के लिए चाहता हूं और मुझे कुछ डिज़ाइन प्रिंसिपल के आसपास अपना सिर पाने में कुछ मदद चाहिए जो वर्तमान में मेरे लिए बहुत स्पष्ट नहीं है।काफ्का स्ट्रीम एप्लिकेशन डिज़ाइन प्रिंसिपल

1.) मानते हैं कि मेरे पास कुछ वास्तविक समय स्टॉक मूल्य डेटा है। क्या आप स्टॉक प्रतीक द्वारा एक विषय "मूल्य" कुंजी (और इसलिए विभाजित) बनायेंगे? या आप प्रति प्रतीक एक विषय बना देंगे? उदाहरण में क्या होता है यदि मैं बाद में एक पूर्ण इतिहास सहित कुछ और स्टॉक प्रतीकों का उत्पादन (जोड़ने) का फैसला करता हूं? अब "इतिहास" विषय में मेरा इतिहास (लॉग में ऑर्डर करना) एक गड़बड़ है, है ना? दूसरी तरफ प्रत्येक मूल्य श्रृंखला के लिए मैं बाद में रिटर्न की गणना करना चाहता हूं और यदि वे अलग-अलग विषयों पर हैं तो मुझे उनका ट्रैक रखना होगा और प्रत्येक एकल प्रतीक के लिए नए स्ट्रीम एप्लिकेशन शुरू करना होगा।

2.) अब अलग-अलग वास्तविक समय की कीमतें हैं और मुझे उनमें से एक बड़े रिकॉर्ड में एक आर्बिटरी संख्या में शामिल होने की आवश्यकता है। उदाहरण के लिए सभी sp500 प्रतीकों को एक रिकॉर्ड में शामिल करें। चूंकि मेरे पास एक ही समय के लिए सभी sp500 प्रतीकों की कीमत नहीं है लेकिन शायद बहुत करीब है। यदि कोई सही समय पर गायब है तो मैं हमेशा नवीनतम कीमत का उपयोग करके उनसे कैसे जुड़ सकता हूं?

3.) कहें कि मैंने उपयोग के मामले में शामिल होने का हल किया है और मैं सभी एसपी 500 शेयरों के शामिल रिकॉर्ड को कफका में पंप करता हूं। अगर मैंने कोई गलती की है और मैं एक प्रतीक भूल गया तो मुझे क्या करने की ज़रूरत है? जाहिर है, मैं इसे स्ट्रीम में जोड़ना चाहता हूं। अब मुझे "sp500" लॉग को पोंछने की ज़रूरत है और इसे सही तरीके से पुनर्निर्माण करना है? या शुरुआती ऑफ़सेट को किसी विशेष ऑफ़सेट पर रीसेट करने के लिए कुछ तंत्र है (जिस पर मैंने शामिल होने का निर्णय लिया है)? सबसे अधिक संभावना है कि मेरे पास अन्य धारा अनुप्रयोग हैं जो इस विषय से उपभोग कर रहे हैं। उन्हें किसी प्रकार का रीसेट/रीप्ले करने की भी आवश्यकता है। क्या यह शायद एक बेहतर विचार है कि SP500 विषय को स्टोर न करें बल्कि इसे एक लंबी स्ट्रीम प्रक्रिया का हिस्सा बनाएं? लेकिन फिर मैं इसे कई बार संभावित रूप से शामिल करने के लिए समाप्त कर दूंगा।

4.) शायद इस 1. होना चाहिए, क्योंकि यह मेरा लक्ष्य की ^^ हिस्सा है - लेकिन, मैं कैसे इस तरह के तरह एक डाटा प्रवाह मॉडल सकता है:

produce prices -> calculate returns -> join several returns into a row vector -> calculate covariance (window of rowvectors) -> join covariance with returns 
                       ->            -> into a tuple (ret, cov) 

मैं नहीं भी यकीन है कि अगर इस तरह के एक हूँ आज के स्ट्रीम प्रसंस्करण का उपयोग कर जटिल उपयोग केस संभव है।

उत्तर

1

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

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

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

3) काफ्का विषय में संदेश आपके प्रतिधारण विन्यास के आधार पर जमा हो जाती है। तो आप इसे कॉन्फ़िगर कर सकते हैं उदा। 7 दिनों के लिए सभी डेटा स्टोर करने के लिए। यदि आप बाद में डेटा जोड़ना चाहते हैं लेकिन इसके लिए कुछ और समय का उपयोग करें तो इसके समय का उत्पादन करें, आपको अपने संदेश डेटा के हिस्से के रूप में एक समय भेजने की आवश्यकता है और बाद में इसे संसाधित करते समय इसका उपयोग करें। प्रत्येक उपभोक्ता के लिए आप ऑफ़सेट सेट/रीसेट कर सकते हैं जहां इसे पढ़ना शुरू करना चाहिए। जिसका अर्थ है कि आप वापस जा सकते हैं और अपने डेटा में मौजूद सभी डेटा को पुन: प्रोसेस कर सकते हैं।

4) मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं क्योंकि आपका प्रवाह आपके लक्ष्य के लिए ठीक है। काफ्का और स्ट्रीम प्रसंस्करण आपके उपयोग के मामले के लिए एक अच्छा मैच है।

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

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