Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor

 
15:05 - 15:45
 
Seminarraum 1.802

Asynchrone, event-getriebene Architekturen haben in den letzten Jahren stark an Bedeutung gewonnen. Ein Treiber für diese Entwicklung ist das Web mit ständig steigenden Anforderungen an Performanz, Skalierbarkeit und Ausfallsicherheit. Klassische Architekturen, die für jeden HTTP-Request einen Thread verwenden oder beim Datenbank-Aufruf blockieren, stoßen schnell an ihre Grenzen. In den letzten Jahren sind verschiedene Frameworks entstanden, die auf asynchrone Request-Verarbeitung mit einer geringen Anzahl dedizierter Threads setzen und so das Reactor Pattern implementieren. Prominentester Vertreter ist Node.js, aber auch Akka, Ruby’s EventMachine und Basisframeworks wie Netty sind hier zu nennen. Die grundlegende Philosophie dieses Ansatzes wird im Reactive Manifesto [ReactiveManifesto] beschrieben.

Zwei Frameworks für die Java-Plattform, die aktuell viel Aufmerksamkeit auf sich ziehen, sind Vert.x [Vertx] und Reactor von SpringSource [Reactor]:

  1. Vert.x ist als asynchrones, event-getriebenes und nicht-blockierendes Framework auf Nebenläufigkeit, Performance und Skalierbarkeit optimiert. Das Programmiermodell basiert auf Callbacks, das Nebenläufigkeitsmodell ist an das Aktorenmodell angelehnt. Nachrichten werden über einen Bus mittels verschiedener Kommunikationsprotokolle ausgetauscht und enthalten entweder primitive Typen oder JSON. Als polyglottes Framework erlaubt Vert.x den kombinierten Einsatz verschiedener JVM- Sprachen, neben Java unter anderem JavaScript, Groovy, JRuby, Clojure und Scala. Vert.x besticht durch gute Performance und ist Testsieger bei verschiedenen Benchmarks.
  2. Namensgebend für das neue Framework Reactor [Reactor] von SpringSource ist das Reactor-Pattern [POSA2]: Reactor ist ebenfalls reaktiv und event-getriebenes mit einem Bus als Kernkomponente. Als Basis-framework für asynchrone Anwendungen wird es als Bibliothek innerhalb einer Anwendung benutzt. Auch Reactor ist auf hohen Durchsatz ausgelegt – es erlaubt die Verarbeitung von bis zu 20 Mio. Events pro Sekunde auf einem handelsüblichen Quad-Core-Rechner.

Wir zeigen an Anwendungsbeispielen, wie reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor-Framework umgesetzt werden und gehen auf Gemeinsamkeiten und Unterschiede ein: Als Basisframework kommt Reactor als Bibliothek innerhalb einer Anwendung zum Einsatz, bringt dabei keine eigene Laufzeitumgebung mit. Vert.x dagegen ist ein Anwendungsframework mit eigener Laufzeitumgebung und bringt mit der Integration von Hazelcast auch Lösungen für Verteilung, Clustering und Hochverfügbarkeit mit.

Wir zeigen, wie Anwendungskomponenten in Vert.x bzw. Reactor zu implementieren sind. Außerdem erklären wir Konzepte des Event-Bus, der in beiden Frameworks jeweils den architektonischen Kern und das Kommunikations-zentrum darstellt und gehen auf konzeptionelle Unterschiede zwischen beiden Frameworks ein – beispielsweise hinsichtlich Dispatcher, Bus-Adressierung und Nachrichtentypen.

Martin Lehmann

Accso GmbH

Ich bin Diplom-Informatiker und seit 1997 in der Industrie in Software-Individualentwicklungsprojekten für verschiedene Kunden tätig (v.a. der Branchen Telekommunikation sowie Öffentlicher Dienst). Dabei habe ich verschiedene technische, teilweise auch fachliche Architekturen konzipiert, entwickelt und in der Umsetzung begleitet. Seit 2010 bin ich bei der Accso GmbH als Partner in der Geschäftsleitung tätig und verantworte als CTO die „Beschleunigte Softwaretechnik“ als Ordnungsrahmen für Accso-Projekte. Besonders interessieren mich Neuerungen der Java-Plattform – auch und gerade mit verschiedenen aktuellen Veröffentlichungen zu Java 8 (Lambdas, Streams) und serverseitigen Frameworks.

Dr. Rüdiger Grammes

Accso GmbH

Nach meinem Abschluss als Diplom-Informatiker habe ich im Bereich der Formalisierung und Modularisierung von Modellierungssprachen promoviert. Seit 2007 bin ich in der Industrie als Software-Entwickler und Berater unterwegs, unter anderem in großen Projekten im öffentlichen Dienst und im Bereich Medien. Seit 2011 arbeite ich bei der Accso GmbH als Berater, mit Schwerpunkt in der Software-Entwicklung und der Konzeption technischer Architekturen. Darüber hinaus betreue ich bei der Accso GmbH die Themen Rapid Application Development und Reaktive Systeme.