वितरित डेटा प्रवाह

वितरित डेटा प्रवाह ("वितरित प्रवाह" के रूप में भी संक्षिप्त) एक वितरित कंप्यूटिंग या संचार प्रोटोकॉल में ईवेंट (कंप्यूटिंग) के एक सेट को संदर्भित करता है।

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

अनौपचारिक गुण
एक वितरित डेटा प्रवाह निम्नलिखित अनौपचारिक गुणों को संतुष्ट करता है।
 * एसिंक्रोनस, नॉन-ब्लॉकिंग और वन-वे। प्रत्येक ईवेंट गैर-अवरुद्ध तुल्यकालन|नॉन-ब्लॉकिंग, वन-वे, अतुल्यकालिक विधि मंगलाचरण  या दो परतों या सॉफ़्टवेयर घटकों के बीच स्पष्ट या निहित संदेश के अन्य रूप के एक उदाहरण का प्रतिनिधित्व करता है। उदाहरण के लिए, प्रत्येक घटना एक अंतर्निहित विश्वसनीय [[ बहुस्त्र्पीय ]] के लिए एक आवेदन परत द्वारा जारी किए गए पैकेट (सूचना प्रौद्योगिकी) को मल्टीकास्ट करने के लिए एक अनुरोध का प्रतिनिधित्व कर सकती है। आवश्यकता है कि ईवेंट एक तरफ़ा और अतुल्यकालिक हैं। परिणामों को लौटाने वाली विधियों के आह्वान को आम तौर पर दो अलग-अलग प्रवाहों के रूप में दर्शाया जाएगा: एक प्रवाह जो अनुरोधों का प्रतिनिधित्व करता है, और दूसरा प्रवाह जो प्रतिक्रियाओं का प्रतिनिधित्व करता है।
 * सजातीय, यूनिडायरेक्शनल और एकसमान। वितरित प्रवाह में सभी घटनाएँ समान कार्यात्मक और तार्किक उद्देश्य की पूर्ति करती हैं, और एक दूसरे से संबंधित हैं; आम तौर पर, हमें आवश्यकता होती है कि वे एक ही कार्यात्मक अमूर्त परत के ऑब्जेक्ट (कंप्यूटर विज्ञान) या समान घटक-आधारित सॉफ़्टवेयर इंजीनियरिंग के उदाहरणों के बीच विधि कॉल या संदेश के आदान-प्रदान का प्रतिनिधित्व करते हैं, लेकिन शायद संगणक संजाल  के भीतर विभिन्न नोड (नेटवर्किंग) पर। इसके अलावा, सभी घटनाओं को एक ही दिशा में प्रवाहित होना चाहिए (यानी, एक प्रकार की परत या घटक हमेशा उत्पादन करता है, और दूसरा हमेशा घटनाओं का उपभोग करता है), और एक ही प्रकार का पेलोड (कंप्यूटिंग) ले जाता है। उदाहरण के लिए, घटनाओं का एक सेट जिसमें एक ही मल्टीकास्ट प्रोटोकॉल के लिए एक ही एप्लिकेशन परत द्वारा जारी किए गए सभी मल्टीकास्ट अनुरोध शामिल हैं, एक वितरित प्रवाह है। दूसरी ओर, घटनाओं का एक सेट जिसमें विभिन्न अनुप्रयोगों द्वारा विभिन्न मल्टीकास्ट प्रोटोकॉल के लिए किए गए मल्टीकास्ट अनुरोध शामिल हैं, को वितरित प्रवाह नहीं माना जाएगा, और न ही उन घटनाओं का एक सेट होगा जो मल्टीकास्ट अनुरोधों के साथ-साथ पावती और त्रुटि सूचनाओं का प्रतिनिधित्व करते हैं।
 * समवर्ती, निरंतर और वितरित। प्रवाह में आमतौर पर वे सभी घटनाएँ शामिल होती हैं जो सॉफ्टवेयर की दो परतों के बीच प्रवाहित होती हैं, एक साथ विभिन्न स्थानों पर, और समय की एक परिमित या अनंत अवधि में। इस प्रकार, सामान्य तौर पर, एक वितरित प्रवाह में घटनाएं अंतरिक्ष में (वे अलग-अलग नोड्स पर होती हैं) और समय में (वे अलग-अलग समय पर होती हैं) दोनों में वितरित की जाती हैं। उदाहरण के लिए, मल्टीकास्ट अनुरोधों के प्रवाह में विभिन्न नोड्स पर दिए गए अनुप्रयोग परत उदाहरणों द्वारा किए गए ऐसे सभी अनुरोध शामिल होंगे; आम तौर पर, इस तरह के प्रवाह में वे घटनाएँ शामिल होंगी जो दिए गए मल्टीकास्ट प्रोटोकॉल में भाग लेने वाले सभी नोड्स पर होती हैं। एक प्रवाह, जिसमें सभी घटनाएँ एक ही नोड पर घटित होती हैं, को पतित माना जाएगा।

औपचारिक प्रतिनिधित्व
औपचारिक रूप से, हम प्रत्येक घटना को एक वितरित प्रवाह में (x, t, k, v) रूप के चौगुने के रूप में दर्शाते हैं, जहाँ x स्थान है (उदाहरण के लिए, भौतिक नोड का नेटवर्क पता) जिस पर घटना होती है, t है जिस समय ऐसा होता है, k एक संस्करण है, या विशेष घटना की पहचान करने वाली अनुक्रम संख्या है, और v एक मान है जो घटना पेलोड का प्रतिनिधित्व करता है (उदाहरण के लिए, एक विधि कॉल में पारित सभी तर्क)। प्रत्येक वितरित प्रवाह ऐसे चतुष्कोणों का एक (संभवतः अनंत) सेट है जो निम्नलिखित तीन औपचारिक गुणों को संतुष्ट करता है।


 * समय टी में किसी भी परिमित बिंदु के लिए, प्रवाह में केवल बहुत ही सीमित घटनाएं हो सकती हैं जो समय टी या उससे पहले होती हैं। इसका तात्पर्य यह है कि किस प्रवाह में, कोई हमेशा उस बिंदु को इंगित कर सकता है जिस पर प्रवाह उत्पन्न हुआ था। प्रवाह ही अनंत हो सकता है; ऐसी स्थिति में, किसी भी समय, अंततः एक नई घटना प्रवाह में दिखाई देगी।
 * ईवेंट e_1 और e_2 के किसी भी जोड़े के लिए जो एक ही स्थान पर होते हैं, यदि e_1 e_2 से पहले के समय में होता है, तो e_1 में संस्करण संख्या भी e_2 से छोटी होनी चाहिए।
 * एक ही स्थान पर होने वाली घटनाओं की किसी भी जोड़ी e_1 और e_2 के लिए, यदि दो घटनाओं की संस्करण संख्याएँ समान हैं, तो उनके मान भी समान होने चाहिए।

उपरोक्त के अलावा, प्रवाह में कई अतिरिक्त गुण हो सकते हैं।


 * 'गाढ़ापन'। एक वितरित प्रवाह को सुसंगत कहा जाता है यदि समान संस्करण वाली घटनाओं का हमेशा समान मूल्य होता है, भले ही वे अलग-अलग स्थानों पर हों। सुसंगत प्रवाह आम तौर पर प्रोटोकॉल या एप्लिकेशन द्वारा किए गए विभिन्न प्रकार के वैश्विक निर्णयों का प्रतिनिधित्व करते हैं।
 * 'एकरसता'। एक वितरित प्रवाह को कमजोर रूप से मोनोटोनिक कहा जाता है यदि किसी भी जोड़ी के लिए e_1 और e_2 जो एक ही स्थान पर होते हैं, यदि e_1 का e_2 से छोटा संस्करण है, तो e_1 को e_2 से छोटा मान रखना चाहिए। एक वितरित प्रवाह को जोरदार मोनोटोनिक (या केवल मोनोटोनिक) कहा जाता है यदि यह अलग-अलग स्थानों पर होने वाली घटनाओं e_1 और e_2 के जोड़े के लिए भी सही है। अत्यधिक मोनोटोनिक प्रवाह हमेशा सुसंगत होते हैं। वे आम तौर पर विभिन्न प्रकार के अपरिवर्तनीय निर्णयों का प्रतिनिधित्व करते हैं। कमजोर रूप से मोनोटोनिक प्रवाह सुसंगत हो सकता है या नहीं भी हो सकता है।