प्रतिक्रियाशील धाराएँ

प्रतिक्रियाशील धाराएँ नॉन-ब्लॉकिंग बैक प्रेशर के साथ अतुल्यकालिक धारा प्रसंस्करण के लिए एक मानक प्रदान करने की एक प्रेरणा है। [1][2]

उत्पत्ति
प्रतिक्रियाशील धाराएँ की शुरुआत 2013 के अंत में नेटफ्लिक्स, पिवोटल और लाइटबेंड के अभियन्ताओ के बीच एक प्रेरणा के रूप में हुई। कुछ शुरुआती चर्चाएं 2013 में लाइटबेंड में प्ले और अक्का टीमों के बीच प्रारंभ हुईं। [3][4] लाइटबेंड प्रतिक्रियाशील धाराएँ के मुख्य योगदानकर्ताओं में से एक है। [5] अन्य योगदानकर्ताओं में रेड हैट, ओरेकल, ट्विटर और स्प्रे.आईओ सम्मलित हैं।[6]

लक्ष्य
प्रतिक्रियाशील धाराएँ का मुख्य लक्ष्य एक अतुल्यकालिक सीमा के पार स्ट्रीम डेटा के आदान-प्रदान को नियंत्रित करना है - जैसे तत्वों को दूसरे थ्रेड या थ्रेड-पूल पर भेजना - जबकि यह सुनिश्चित करना कि प्राप्त करने वाला पक्ष डेटा की मनमानी मात्रा को बफर करने के लिए विवश नहीं है। दूसरे शब्दों में, धागों के बीच मध्यस्थता करने वाली कतारों को सीमित करने की अनुमति देने के लिए बैक प्रेशर इस मॉडल का एक अभिन्न अंग है।

विनिर्देश का अभिप्राय कई अनुरूप कार्यान्वयन के निर्माण की अनुमति देना है, जो नियमों का पालन करने के आधार पर एक स्ट्रीम अनुप्रयोग के संपूर्ण प्रसंस्करण ग्राफ में उल्लिखित लाभों और विशेषताओं को संरक्षित करते हुए, सुचारू रूप से इंटरोऑपरेबिलिटी  करने में सक्षम होंगे। निःशुल्क उपलब्ध प्रौद्योगिकी अनुकूलता किट विनिर्देश के साथ विकसित किया गया था जो विनिर्देश के कार्यान्वयनकर्ताओं को यह सत्यापित करने की अनुमति देता है कि क्या वे संभावित संतति स्थितियों की जांच सहित सभी नियमों और आवश्यकताओं का आवरण करते हैं।

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

जावा मानक में समावेश
सफल साबित होने और पर्याप्त पुस्तकालयों और विक्रेताओं द्वारा अपनाए जाने पर, आधिकारिक जावा मानक पुस्तकालय में भविष्य में शामिल करने के इरादे से विनिर्देश विकसित किया गया।

जेएसआर 166 के नेता डौग ली द्वारा प्रतिक्रियाशील धाराएँ को जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म)  9 का हिस्सा बनने का प्रस्ताव दिया गया था। एक नए प्रवाह वर्ग के रूप में इसमें वर्तमान में प्रतिक्रियाशील धाराएँ द्वारा प्रदान किए गए इंटरफेस शामिल होंगे। प्रतिक्रियाशील धाराएँ की सफल 1.0 रिलीज और बढ़ती स्वीकार्यता के बाद, प्रस्ताव को स्वीकार कर लिया गया और  जेडीके संवर्धन प्रस्ताव -266 के माध्यम से प्रतिक्रियाशील धाराएँ को जावा (सॉफ्टवेयर प्लेटफॉर्म) में शामिल किया गया।

गोद लेना
30 अप्रैल, 2015 को जेवीएम के लिए प्रतिक्रियाशील धाराएँ का संस्करण 1.0.0 जारी किया गया था,   जाने दो  सहित, एक पाठ्य विशिष्टता, एक प्रौद्योगिकी अनुकूलता किट और कार्यान्वयन उदाहरण। यह 1.0.0 के लिए TCK द्वारा सत्यापित अनेक अनुरूप कार्यान्वयनों के साथ आता है, जो वर्णानुक्रम में सूचीबद्ध हैं:

अन्य कार्यान्वयनों में अपाचे कैसेंड्रा, लोचदार खोज, अपाचे काफ्का, समानांतर ब्रह्मांड क्वासर, प्ले फ्रेमवर्क, शस्त्रागार.
 * अक्का (टूलकिट) स्ट्रीम
 * MongoDB
 * चूहा पैक
 * प्रतिक्रियाशील खरगोश – RabbitMQ/AMQP के लिए ड्राइवर
 * स्प्रिंग फ्रेमवर्क और पिवोटल सॉफ्टवेयर प्रोजेक्ट रिएक्टर
 * नेटफ्लिक्स आरएक्सजावा
 * चालाक (लाइब्रेरी) 3.0
 * Vert.x 3.0
 * विद्रोह
 * हेलिडॉन

स्प्रिंग फ्रेमवर्क को प्रतिक्रियाशील धाराएँ संगत रिएक्टर कोर पर बनाने की घोषणा की गई है।

अमेज़ॅन (कंपनी) ने घोषणा की कि उसकी अमेज़न वेब सेवाएँ सॉफ़्टवेयर विकास किट संस्करण 2.0 में अपने क्लाइंट लाइब्रेरी में स्ट्रीमिंग क्षमताएं प्रदान करने के लिए प्रतिक्रियाशील धाराएँ का समर्थन करेगी।

प्रतिक्रियाशील धाराएँ 1.0.1 9 अगस्त, 2017 को जारी किया गया है, जिसमें विनिर्देशन सटीकता, टीसीके सुधार और अन्य स्पष्टीकरण में विभिन्न सुधार शामिल हैं। विनिर्देश और इंटरफ़ेस 1.0.0 संस्करण के साथ पूरी तरह से पीछे की ओर संगत रहे, हालांकि इसका उद्देश्य भविष्य के कार्यान्वयनकर्ताओं के लिए अपनाने को सुव्यवस्थित करना और साथ ही ओपनजेडीके द्वारा निर्धारित कुछ अतिरिक्त आवश्यकताओं के साथ संरेखित करना था।

बंदरगाह और प्रभाव

 * .NET फ्रेमवर्क|.NET प्लेटफॉर्म के लिए एक ही कार्य समूह के तहत विनिर्देश, इंटरफेस और टीसीके का एक सीधा पोर्ट उपलब्ध कराया गया था।
 * जब एलिक्सिर (प्रोग्रामिंग भाषा) भाषा ने जेनस्टेज नामक अपनी स्ट्रीमिंग एपीआई पेश की, तो लेखकों ने अक्का-स्ट्रीम और प्रतिक्रियाशील धाराएँ परियोजनाओं को धन्यवाद दिया, जिन्होंने हमें चरणों के बीच मांग-संचालित विनिमय को लागू करने में मार्गदर्शन प्रदान किया।

संदर्भ



 * CC0 button.svg This article incorporates text from http://www.reactive-streams.org/, which is released under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.