अस्वीकरण : मैं एक अपाचे फ्लिंक कमिटर और पीएमसी सदस्य हूं और केवल स्टॉर्म के उच्च-स्तरीय डिजाइन से परिचित हूं, न कि इसके आंतरिक।
अपाचे फ्लिंक एकीकृत धारा और बैच प्रसंस्करण के लिए एक रूपरेखा है। फ़्लिंक का रनटाइम मूल रूप से समानांतर कार्यों के बीच पाइपलीड डेटा ट्रांसफ़र के कारण दोनों डोमेन का समर्थन करता है जिसमें पाइपलाइज़ किए गए फेरबदल शामिल हैं। रिकॉर्ड को उत्पादन कार्यों से तुरंत प्राप्त कार्यों (नेटवर्क ट्रांसफर के लिए बफर में एकत्र किए जाने के बाद) तक भेज दिया जाता है। ब्लॉकिंग डाटा ट्रांसफर का उपयोग करके बैच जॉब्स को वैकल्पिक रूप से निष्पादित किया जा सकता है।
अपाचे स्पार्क एक फ्रेमवर्क है जो बैच और स्ट्रीम प्रोसेसिंग का भी समर्थन करता है। फ्लिंक का बैच एपीआई काफी समान है और स्पार्क के समान उपयोग के मामलों को संबोधित करता है, लेकिन आंतरिक में भिन्न होता है। स्ट्रीमिंग के लिए, दोनों सिस्टम बहुत अलग तरीकों (मिनी-बैच बनाम स्ट्रीमिंग) का पालन करते हैं जो उन्हें विभिन्न प्रकार के अनुप्रयोगों के लिए उपयुक्त बनाता है। मैं कहूंगा कि स्पार्क और फ़िंक की तुलना करना वैध और उपयोगी है, हालांकि, स्पार्क फ़्लिंक के लिए सबसे समान स्ट्रीम प्रोसेसिंग इंजन नहीं है।
मूल प्रश्न पर आते हैं, अपाचे स्टॉर्म बैच क्षमताओं के बिना एक डेटा स्ट्रीम प्रोसेसर है। वास्तव में, फ्लिंक का पाइपलाइज्ड इंजन आंतरिक रूप से स्टॉर्म के समान है, यानी, फ्लिंक के समानांतर कार्यों के इंटरफेस स्टॉर्म के बोल्ट के समान हैं। स्टॉर्म और फ्लिंक में आम है कि वे पाइपलाइंड डेटा ट्रांसफर द्वारा कम विलंबता स्ट्रीम प्रसंस्करण के लिए लक्ष्य रखते हैं। हालाँकि, Flink, Storm की तुलना में अधिक उच्च-स्तरीय API प्रदान करता है। एक या अधिक पाठकों और कलेक्टरों के साथ एक बोल्ट की कार्यक्षमता को लागू करने के बजाय, फ्लिंक के डेटास्ट्रीम एपीआई मैप, ग्रुपबी, विंडो, और जॉइन जैसे कार्य प्रदान करता है। स्टॉर्म का उपयोग करते समय इस कार्यक्षमता का एक बहुत मैन्युअल रूप से लागू किया जाना चाहिए। एक और अंतर शब्दार्थ प्रसंस्करण है। तूफान कम से कम एक बार प्रसंस्करण की गारंटी देता है जबकि फ्लिंक बिल्कुल एक बार प्रदान करता है। कार्यान्वयन जो इन प्रसंस्करण की गारंटी देते हैं वे काफी अलग हैं। जबकि स्टॉर्म रिकॉर्ड-स्तरीय अभिस्वीकृति का उपयोग करता है, फ़्लिंक ने चांडी-लामपोर्ट एल्गोरिथम के एक संस्करण का उपयोग किया है। संक्षेप में, डेटा स्रोत समय-समय पर मार्करों को डेटा स्ट्रीम में इंजेक्ट करते हैं। जब भी कोई ऑपरेटर इस तरह के मार्कर को प्राप्त करता है, तो यह अपनी आंतरिक स्थिति को चेक करता है। जब कोई मार्कर सभी डेटा सिंक द्वारा प्राप्त किया गया था, तो मार्कर (और पहले से संसाधित किए गए सभी रिकॉर्ड) प्रतिबद्ध हैं। विफलता के मामले में, सभी स्रोत ऑपरेटर अपने राज्य में रीसेट हो जाते हैं जब उन्होंने अंतिम प्रतिबद्ध मार्कर देखा और प्रसंस्करण जारी रखा जाता है। यह मार्कर-चेकपॉइंट दृष्टिकोण स्टॉर्म के रिकॉर्ड-स्तर की स्वीकार्यता से अधिक हल्का है। यह डेटा स्रोत समय-समय पर मार्करों को डेटा स्ट्रीम में इंजेक्ट करते हैं। जब भी कोई ऑपरेटर इस तरह के मार्कर को प्राप्त करता है, तो यह अपनी आंतरिक स्थिति को चेक करता है। जब कोई मार्कर सभी डेटा सिंक द्वारा प्राप्त किया गया था, तो मार्कर (और पहले से संसाधित किए गए सभी रिकॉर्ड) प्रतिबद्ध हैं। विफलता के मामले में, सभी स्रोत ऑपरेटर अपने राज्य में रीसेट हो जाते हैं जब उन्होंने अंतिम प्रतिबद्ध मार्कर देखा और प्रसंस्करण जारी रखा जाता है। यह मार्कर-चेकपॉइंट दृष्टिकोण स्टॉर्म के रिकॉर्ड-स्तर की स्वीकार्यता से अधिक हल्का है। यह डेटा स्रोत समय-समय पर मार्करों को डेटा स्ट्रीम में इंजेक्ट करते हैं। जब भी कोई ऑपरेटर इस तरह के मार्कर को प्राप्त करता है, तो यह अपनी आंतरिक स्थिति को चेक करता है। जब कोई मार्कर सभी डेटा सिंक द्वारा प्राप्त किया गया था, तो मार्कर (और पहले से संसाधित किए गए सभी रिकॉर्ड) प्रतिबद्ध हैं। विफलता के मामले में, सभी स्रोत ऑपरेटर अपने राज्य में रीसेट हो जाते हैं जब उन्होंने अंतिम प्रतिबद्ध मार्कर देखा और प्रसंस्करण जारी रखा जाता है। यह मार्कर-चेकपॉइंट दृष्टिकोण स्टॉर्म के रिकॉर्ड-स्तर की स्वीकार्यता से अधिक हल्का है। यह जब वे अंतिम प्रतिबद्ध मार्कर देखते हैं तो सभी स्रोत ऑपरेटर अपने राज्य में रीसेट हो जाते हैं और प्रसंस्करण जारी रहता है। यह मार्कर-चेकपॉइंट दृष्टिकोण स्टॉर्म के रिकॉर्ड-स्तर की स्वीकार्यता से अधिक हल्का है। यह जब वे अंतिम प्रतिबद्ध मार्कर देखते हैं तो सभी स्रोत ऑपरेटर अपने राज्य में रीसेट हो जाते हैं और प्रसंस्करण जारी रहता है। यह मार्कर-चेकपॉइंट दृष्टिकोण स्टॉर्म के रिकॉर्ड-स्तर की स्वीकार्यता से अधिक हल्का है। यहस्लाइड सेट और संबंधित टॉक में फ़्लिंक की स्ट्रीमिंग प्रोसेसिंग अप्रोच जिसमें फ़ॉल्ट टॉलरेंस, चेकपॉइंटिंग और स्टेट हैंडलिंग शामिल है।
तूफान भी त्रिशूल नामक एक बिल्कुल उच्च स्तरीय एपीआई प्रदान करता है। हालांकि, ट्राइडेंट मिनी-बैचों पर आधारित है और इसलिए फ्लिंक की तुलना में स्पार्क के समान है।
फ्लिंक के समायोज्य विलंबता से तात्पर्य उस प्रकार से है, जिस तरह से फ्लिंक एक कार्य से दूसरे में रिकॉर्ड भेजता है। मैंने पहले कहा, कि फ्लिंक का उत्पादन होते ही पाइपलाइंड डेटा ट्रांसफर और फॉरवर्ड रिकॉर्ड का उपयोग किया जाता है। दक्षता के लिए, इन रिकॉर्ड्स को एक बफर में एकत्र किया जाता है जो नेटवर्क पर एक बार भरा हुआ है या एक निश्चित समय सीमा पूरी होने पर भेजा जाता है। यह सीमा रिकॉर्ड की विलंबता को नियंत्रित करती है क्योंकि यह अधिकतम समय निर्दिष्ट करती है कि एक रिकॉर्ड अगले कार्य को भेजे बिना एक बफर में रहेगा। हालाँकि, इसका उपयोग किसी रिकॉर्ड के लिए रिकॉर्ड करने से लेकर प्रोग्राम छोड़ने तक के समय के बारे में कड़ी गारंटी देने के लिए नहीं किया जा सकता है क्योंकि यह कार्यों के भीतर प्रसंस्करण समय और अन्य चीजों के बीच नेटवर्क हस्तांतरण की संख्या पर भी निर्भर करता है।