Reaktiva strömmar
Initial release | 15 maj 2015 |
---|---|
Stabil frisättning | 1.0.3 / 23 augusti 2019
|
Förvar | |
Skrivet i | Java (Scala, Groovy, Kotlin), .NET |
Hemsida |
Reactive Streams är ett initiativ för att tillhandahålla en standard för asynkron strömbehandling med icke-blockerande mottryck.
Ursprung
Reactive Streams startade som ett initiativ i slutet av 2013 mellan ingenjörer på Netflix , Pivotal och Lightbend . Några av de tidigaste diskussionerna började 2013 mellan Play- och Akka -lagen på Lightbend. Lightbend är en av de främsta bidragsgivarna till Reactive Streams. Andra bidragsgivare inkluderar Red Hat , Oracle , Twitter och spray.io.
Mål
Huvudmålet med Reactive Streams är att styra utbytet av strömdata över en asynkron gräns – som att skicka element vidare till en annan tråd eller trådpool – samtidigt som man säkerställer att den mottagande sidan inte tvingas att buffra godtyckliga mängder data. Med andra ord är mottryck en integrerad del av denna modell för att tillåta köerna som förmedlar mellan trådar att begränsas .
Avsikten med specifikationen är att tillåta skapandet av många överensstämmande implementeringar , som i kraft av att följa reglerna kommer att kunna samverka smidigt och bevara de nämnda fördelarna och egenskaperna över hela bearbetningsdiagrammet för en strömapplikation. Ett fritt tillgängligt Technology Compatibility Kit utvecklades tillsammans med specifikationen som gör det möjligt för implementatörer av specifikationen att verifiera om de täckte alla regler och krav, inklusive kontroller av potentiella tävlingsförhållanden.
Omfattningen av Reactive Streams är en minimal uppsättning gränssnitt , metoder och protokoll som beskriver nödvändiga operationer och enheter för att uppnå de asynkrona dataströmmarna med icke-blockerande mottryck. Slutanvändares DSL:er eller protokollbindande API :er har medvetet utelämnats för att uppmuntra och möjliggöra olika implementeringar som potentiellt använder olika programmeringsspråk för att förbli så sanna som möjligt mot deras plattforms idiom.
Inkludering i Java-standard
Specifikationen utvecklad med avsikten att framtida inkluderas i det officiella Java-standardbiblioteket, om det visar sig vara framgångsrikt och antagits av tillräckligt många bibliotek och leverantörer.
Reactive Streams föreslogs att bli en del av Java 9 av Doug Lea , ledare för JSR 166 som en ny Flow-klass som skulle inkludera de gränssnitt som för närvarande tillhandahålls av Reactive Streams. Efter en framgångsrik 1.0-release av Reactive Streams och växande användning accepterades förslaget och Reactive Streams inkluderades i JDK9 via JEP -266.
Adoption
släpptes version 1.0.0 av Reactive Streams för JVM , inklusive Java API , en textspecifikation , en TCK och implementeringsexempel. Den levereras med en mängd kompatibla implementeringar verifierade av TCK för 1.0.0, listade i alfabetisk ordning:
- Akka Strömmar
- MongoDB
- Ratpack
- Reactive Rabbit – drivrutin för RabbitMQ / AMQP
- Spring and Pivotal Project Reactor
- Netflix RxJava
- Slick 3.0
- Vert.x 3.0
- Myteri
- Helidon
Andra implementeringar inkluderar Cassandra , Elasticsearch , Apache Kafka , Parallel Universe Quasar, Play Framework , Armeria.
Spring 5 tillkännages byggas på Reactive Streams-kompatibla Reactor Core.
Amazon meddelade att dess Amazon Web Services SDK skulle stödja Reactive Streams för att tillhandahålla streamingmöjligheter i sina klientbibliotek i version 2.0.
Reactive Streams 1.0.1 släpptes den 9 augusti 2017, inklusive olika förbättringar av specifikationernas precision, TCK-förbättringar och andra förtydliganden. Både specifikationen och gränssnitten förblev helt bakåtkompatibla med 1.0.0-versionen, men syftade till att effektivisera antagandet för framtida implementörer samt anpassa sig till några ytterligare krav som ställts av OpenJDK.
Hamnar och influenser
- En direktport av specifikationen, gränssnitten och TCK gjordes tillgänglig under samma arbetsgrupp för .NET -plattformen.
- När Elixir- språket introducerade sitt streaming-API kallat GenStage, riktade författarna ett tack "[till] akka-streams och reactive-streams-projekt som gav oss vägledning för att implementera det efterfrågestyrda utbytet mellan stegen".
-
Den här artikeln innehåller text från
www .reactive-streams .org , som släpps under en CC0 1.0 Universal (CC0 1.0) Public Domain Dedication .