प्रतिक्रियाशील धाराएँ
Initial release | 15 May 2015 |
---|---|
Stable release | 1.0.3
/ 23 August 2019 |
Repository | github |
Written in | Java (Scala, Groovy, Kotlin), .NET |
Website | reactive-streams |
रिएक्टिव स्ट्रीम्स एसिंक्रोनस I/O|नॉन-ब्लॉकिंग बैक प्रेशर के साथ एसिंक्रोनस सीरियल संचार धारा प्रसंस्करण के लिए एक तकनीकी मानक प्रदान करने की एक पहल है।[1][2]
उत्पत्ति
रिएक्टिव स्ट्रीम्स की शुरुआत 2013 के अंत में NetFlix , निर्णायक सॉफ्टवेयर और लाइटबेंड के इंजीनियरों के बीच एक पहल के रूप में हुई। कुछ शुरुआती चर्चाएं 2013 में लाइटबेंड में प्ले फ्रेमवर्क और अक्का (टूलकिट) टीमों के बीच शुरू हुईं।[3][4] लाइटबेंड रिएक्टिव स्ट्रीम के मुख्य योगदानकर्ताओं में से एक है।[5]अन्य योगदानकर्ताओं में लाल टोपी, ओरेकल कॉर्पोरेशन, ट्विटर और स्प्रे.आईओ शामिल हैं।[6]
लक्ष्य
रिएक्टिव स्ट्रीम का मुख्य लक्ष्य एक अतुल्यकालिक सीमा के पार स्ट्रीम डेटा के आदान-प्रदान को नियंत्रित करना है – जैसे तत्वों को दूसरे थ्रेड (कंप्यूटिंग) या धागा पूल पर पास करना – यह सुनिश्चित करते हुए कि प्राप्तकर्ता पक्ष को डेटा की मनमानी मात्रा को डेटा बफ़र करने के लिए मजबूर नहीं किया जाता है। दूसरे शब्दों में, थ्रेड्स के बीच मध्यस्थता करने वाली संदेश कतार को बाउंडेड-बफर समस्या होने की अनुमति देने के लिए बैक प्रेशर इस मॉडल का एक अभिन्न अंग है।
विनिर्देश का इरादा कई अनुरूप कार्यान्वयन के निर्माण की अनुमति देना है, जो नियमों का पालन करने के आधार पर एक स्ट्रीम एप्लिकेशन के संपूर्ण प्रसंस्करण ग्राफ में उल्लिखित लाभों और विशेषताओं को संरक्षित करते हुए, सुचारू रूप से इंटरोऑपरेबिलिटी करने में सक्षम होंगे। निःशुल्क उपलब्ध प्रौद्योगिकी अनुकूलता किट[7] विनिर्देश के साथ विकसित किया गया था जो विनिर्देश के कार्यान्वयनकर्ताओं को यह सत्यापित करने की अनुमति देता है कि क्या वे संभावित दौड़ स्थितियों की जांच सहित सभी नियमों और आवश्यकताओं को कवर करते हैं।
रिएक्टिव स्ट्रीम का दायरा अप्लिकेशन प्रोग्रामिंग अंतरफलक, विधियों और प्रोटोकॉल का एक न्यूनतम सेट है जो गैर-अवरुद्ध बैक प्रेशर के साथ डेटा की अतुल्यकालिक धाराओं को प्राप्त करने के लिए आवश्यक संचालन और इकाइयों का वर्णन करता है।[2] अंतिम उपयोगकर्ता|अंत-उपयोगकर्ता डोमेन-विशिष्ट भाषा या प्रोटोकॉल बाइंडिंग एपीआई को जानबूझकर अलग-अलग कार्यान्वयन को प्रोत्साहित करने और सक्षम करने के दायरे से बाहर रखा गया है जो संभावित रूप से अपने प्लेटफ़ॉर्म के मुहावरों के लिए यथासंभव सही रहने के लिए विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं।
जावा मानक में समावेश
सफल साबित होने और पर्याप्त पुस्तकालयों और विक्रेताओं द्वारा अपनाए जाने पर, आधिकारिक जावा मानक पुस्तकालय में भविष्य में शामिल करने के इरादे से विनिर्देश विकसित किया गया।
जेएसआर 166 के नेता डौग ली द्वारा रिएक्टिव स्ट्रीम को जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म) 9 का हिस्सा बनने का प्रस्ताव दिया गया था।[8] एक नए प्रवाह वर्ग के रूप में[9] इसमें वर्तमान में रिएक्टिव स्ट्रीम्स द्वारा प्रदान किए गए इंटरफेस शामिल होंगे।[5][10] रिएक्टिव स्ट्रीम्स की सफल 1.0 रिलीज और बढ़ती स्वीकार्यता के बाद, प्रस्ताव को स्वीकार कर लिया गया और जेडीके संवर्धन प्रस्ताव -266 के माध्यम से रिएक्टिव स्ट्रीम्स को जावा (सॉफ्टवेयर प्लेटफॉर्म) में शामिल किया गया।[10]
गोद लेना
30 अप्रैल, 2015 को जेवीएम के लिए रिएक्टिव स्ट्रीम का संस्करण 1.0.0 जारी किया गया था,[5][6][11] जाने दो सहित,[12] एक पाठ्य विशिष्टता,[13] एक प्रौद्योगिकी अनुकूलता किट और कार्यान्वयन उदाहरण। यह 1.0.0 के लिए TCK द्वारा सत्यापित अनेक अनुरूप कार्यान्वयनों के साथ आता है, जो वर्णानुक्रम में सूचीबद्ध हैं:[11]
- अक्का (टूलकिट) स्ट्रीम[14][15]
- MongoDB[16]
- चूहा पैक[17]
- प्रतिक्रियाशील खरगोश – RabbitMQ/AMQP के लिए ड्राइवर
- स्प्रिंग फ्रेमवर्क[2] और पिवोटल सॉफ्टवेयर प्रोजेक्ट रिएक्टर[18]
- नेटफ्लिक्स आरएक्सजावा[19]
- चालाक (लाइब्रेरी) 3.0[20][21]
- Vert.x 3.0[22]
- विद्रोह
- हेलिडॉन
अन्य कार्यान्वयनों में अपाचे कैसेंड्रा,[23] लोचदार खोज,[24] अपाचे काफ्का,[25] समानांतर ब्रह्मांड क्वासर,[26] प्ले फ्रेमवर्क,[27] शस्त्रागार.[28] स्प्रिंग फ्रेमवर्क को रिएक्टिव स्ट्रीम संगत रिएक्टर कोर पर बनाने की घोषणा की गई है।[29] अमेज़ॅन (कंपनी) ने घोषणा की कि उसकी अमेज़न वेब सेवाएँ सॉफ़्टवेयर विकास किट संस्करण 2.0 में अपने क्लाइंट लाइब्रेरी में स्ट्रीमिंग क्षमताएं प्रदान करने के लिए रिएक्टिव स्ट्रीम का समर्थन करेगी।[30] रिएक्टिव स्ट्रीम्स 1.0.1 9 अगस्त, 2017 को जारी किया गया है, जिसमें विनिर्देशन सटीकता, टीसीके सुधार और अन्य स्पष्टीकरण में विभिन्न सुधार शामिल हैं। विनिर्देश और इंटरफ़ेस 1.0.0 संस्करण के साथ पूरी तरह से पीछे की ओर संगत रहे, हालांकि इसका उद्देश्य भविष्य के कार्यान्वयनकर्ताओं के लिए अपनाने को सुव्यवस्थित करना और साथ ही ओपनजेडीके द्वारा निर्धारित कुछ अतिरिक्त आवश्यकताओं के साथ संरेखित करना था।[31]
बंदरगाह और प्रभाव
- .NET फ्रेमवर्क|.NET प्लेटफॉर्म के लिए एक ही कार्य समूह के तहत विनिर्देश, इंटरफेस और टीसीके का एक सीधा पोर्ट उपलब्ध कराया गया था।[32]
- जब एलिक्सिर (प्रोग्रामिंग भाषा) भाषा ने जेनस्टेज नामक अपनी स्ट्रीमिंग एपीआई पेश की, तो लेखकों ने अक्का-स्ट्रीम और रिएक्टिव-स्ट्रीम परियोजनाओं को धन्यवाद दिया, जिन्होंने हमें चरणों के बीच मांग-संचालित विनिमय को लागू करने में मार्गदर्शन प्रदान किया।[33]
उद्धरण
- ↑ reactive-streams.org
- ↑ 2.0 2.1 2.2 Walls 2019, pp. 243–245, §10.1.1 Defining Reactive Streams.
- ↑ A Journey into Reactive Streams
- ↑ Reactive Streams 1.0.0 interview
- ↑ 5.0 5.1 5.2 Reactive Streams Releases First Stable Version for JVM
- ↑ 6.0 6.1 Reactive Streams 1.0.0 – a new standard in reactive data processing
- ↑ "प्रतिक्रियाशील धाराएँ टीसीके". GitHub.
- ↑ "jdk9 Candidate classes Flow and SubmissionPublisher". Archived from the original on 2015-01-20. Retrieved 2015-12-23.
- ↑ "java.util.concurrent.Flow". Archived from the original on 2016-02-03. Retrieved 2015-12-23.
- ↑ 10.0 10.1 JEP 266: More Concurrency Updates
- ↑ 11.0 11.1 Reactive Streams 1.0.0 is here!
- ↑ Java API
- ↑ Reactive Streams for the JVM specification
- ↑ InfoQ: Reactive Streams with Akka Streams
- ↑ "अक्का स्ट्रीम के पीछे डिज़ाइन सिद्धांत". Archived from the original on 2016-01-12. Retrieved 2015-12-23.
- ↑ MongoDB Reactive Streams Java Driver
- ↑ Ratpack: The Reactive Streams API
- ↑ Reactor 2.0.0.RC1 with native Reactive Streams support now available!
- ↑ Advanced RxJava: The Reactive-Streams API (part 1)
- ↑ Slick 3: Reactive Streams for Asynchronous Database Access in Scala
- ↑ Slick 3.0.0
- ↑ Vert.x Reactive Streams Integration
- ↑ Accessing Cassandra in a Reactive Way
- ↑ elastic4s — Non blocking, type safe DSL and Scala client for Elasticsearch
- ↑ Reactive Streams for Apache Kafka
- ↑ "क्वासर और प्रतिक्रियाशील धाराएँ". Archived from the original on 2015-10-04. Retrieved 2015-12-24.
- ↑ Play Framework — Reactive Streams integration (experimental)
- ↑ Armeria - Completely asynchronous and reactive
- ↑ Reactive Spring
- ↑ "AWS SDK for Java 2.0 developer preview announcement".
- ↑ "Reactive Streams 1.0.1 Release Announcement".
- ↑ "रिएक्टिव स्ट्रीम .NET". GitHub.
- ↑ "Elixir blog: Announcing GenStage".
संदर्भ
- Walls, Craig (October 2019). Spring in Action (in English) (Fifth ed.). Manning. p. 520. ISBN 9781617294945.
- This article incorporates text from www
.reactive-streams .org, which is released under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.