Reaktives Fundament der 2. Generation

Asynchrones Framework Reactor 2.5 erreicht ersten Meilenstein

Michael Thomas

© Shutterstock.com/3Dalia

Reactor, Pivotals Framework zur Programmierung asynchroner Anwendungen, hat mit dem ersten Meilenstein für Version 2.5 bedeutende Änderungen erfahren. Zentral ist die Aufspaltung des Frameworks in mehrere Unterprojekte.

Die Entwicklung der zweiten Hauptversion von Reactor begann Ende 2014, fast zur selben Zeit, als das Reactive-Streams-Projekt die Bühne betrat; Pivotal beteiligte sich an der Initiative und lieferte im Rahmen von Reactor 2.0 eine erste Reactive-Streams-Implementierung von RingBuffer-basierten Schedulern ab.

Eine der größten Neuerungen des nun verfügbaren ersten Meilensteins von Reactor 2.5 stellt die Aufspaltung des Frameworks in mehrere Unterprojekte, namentlich Reactor Core, Reactor Stream, Reactor IO, Reactor Add-ons und Incubator (zur näheren Beschreibung siehe die GitHub-Seite von Reactor), dar. Unter dem Namen Reactive Streams Commons wurde zudem ein weiteres neues Unterprojekt gestartet, dessen Ziel die Schaffung möglichst effizienter Nebenläufigkeits-Operatoren für Reactive Streams ist.

Wie der Projektleiter Stephane Maldini in der Ankündigung schreibt, bietet die Core-Komponente Reactor 2.5 M1 „gerade genug“ Rx-Abdeckung, um reaktive Anwendungen oder Bibliotheken zu bauen. Weiterführened Informationen über die neuen Bestandteile des Scatter-Gather-Szenarios, darunter beispielsweise die Reactive-Streams-Publisher Flux und Mono und ein neues, auf State- und Flow-Repräsentationen basierendes Introspection-API, findet sich auf dem Spring-Blog. Ungeduldigere Naturen können sich alternativ mit der Quickstart-Anleitung auf GitHub auseinandersetzen.

Über Reactor und Reactive Streams

An Bord von Reactor befindet sich eine Implementierung der Reactive-Streams-Spezifikation, die 2014 von einer gemeinsamen Initiative der Unternehmen Typesafe, Red Hat, Netflix, Pivotal, Oracle, Twitter und spray.io erstmals vorgestellt wurde. Diese Initiative zielte darauf ab, gemeinsame Standards zur asynchronen Streamverarbeitung auf der Java Virtual Machine zu erarbeiten.

Dank eines komplett überarbeiteten Stream- und Promise-APIs ist Reactor seit Version 2.0 mit anderen Reactive-Streams-Implementierungen wie Akka Streams, Ratpack oder RxJava integrierbar. Der Reactive-Streams-Standard ermöglicht eine asynchrone Stream-Verarbeitung mit nicht-blockierendem „Gegendruck“ (non-blocking backpressure), wobei es kurz gesagt um eine Umkehr des Publisher-Subscriber-Prinzips geht: Statt passiv und uneingeschränkt Daten vom Publisher zu empfangen, fragt der Subscriber den Publisher aktiv nach spezifischen Daten. Auf diese Weise empfängt der Subscriber nie mehr Daten, als er verarbeiten kann; eine Pufferung ist somit nicht mehr nötig.

Seinen Namen leitet Reactor vom Reactor Pattern ab, bei dem es darum geht, nebenläufige Service Requests über einen Service Handler zu bündeln (demultiplex) und synchron an die jeweiligen Request Handler weiterzuleiten. Auf diese Weise sollen auch große Datenmengen (Big Data) schnell verarbeitet werden können, ohne in die „Callback-Hölle“ verschachtelter Aufrufe in nebenläufigen Prozessen zu geraten.

Aufmacherbild: 3d render of a nuclear reactor core von shutterstock.com / Urheberrecht: 3Dalia

Verwandte Themen:

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: