1
Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor
Martin Lehmann, Dr. Rüdiger Grammes – Frankfurter Entwicklertag 2015
2 Copyright © Accso GmbH
Reaktive Systeme
Vert.x und Demo
Reactor und Demo
Fazit und Ausblick
Reaktive Systeme
3 Copyright © Accso GmbH
Was sind die Anforderungen?
Anforderungen an Performance:
Geringe Antwortzeiten, minimale Latenz, hoher Durchsatz
Anforderungen an Skalierbarkeit:steigende Nutzerzahlen, Multi-Core
Anforderungen an Verfügbarkeit:24x7, Failover, hohe Fehlertoleranz
Forderungen des Reactive Manifesto: Responsive, Resilient, Elastic, Message-Driven
4 Copyright © Accso GmbH
Anforderung: Beherrschbarkeit der Komplexität
Nebenläufigkeitsprogrammierung mit Low-Level-APIs viel zu komplex.
DisruptorReactorPattern
Aktoren-Modell
5 Copyright © Accso GmbH
Reaktive Systeme
Vert.x und Demo
Reactor und Demo
Fazit und Ausblick
Vert.x und Demo
http://vertx.io/
6 Copyright © Accso GmbH
Vert.x im Überblick
JVM 2.1.5 (und 3) modular
Laufzeit-Umgebung
nicht-blockierend
Message-Bus
polyglott
Open-Source
nebenläufig
single-threadedLaufzeitmodell
Programmiermodell
7 Copyright © Accso GmbH
Die Baustein-Architektur von Vert.x
Vert.x ClusterVert.x Laufzeitumgebung Vert.x Laufzeitumgebung
Vert.x Modul
Event-Bus
VerticleVerticleVerticleA
VerticleVerticleVerticleVerticleB
VerticleVerticleA
VerticleVerticleVerticleC
Shared Data Shared Data
Event Loop ThreadsEvent Loop Threads
Browser
Java-script
SockJS
Clustering(Hazelcast)
Clustering(Hazelcast)
9 Copyright © Accso GmbH
Die Laufzeit-Architektur von Vert.x
Vert.x Laufzeitumgebung
Event Loop Thread 1
Event Loop Thread 2
Event Loop Thread 3
Event Loop Thread 4
Zeit
Verticle A Verticle B Verticle A
Verticle C Verticle D
Verticle E Verticle F Verticle F
Verticle G Verticle H
12 Copyright © Accso GmbH
Reaktive Systeme
Vert.x und Demo
Reactor und Demo
Fazit und Ausblick
Reactor und Demo
https://github.com/reactor/reactor
13 Copyright © Accso GmbH
Das Reactor Framework im Überblick
“Reactor is a foundational library building for reactive fast data applications on the JVM.”
Basisframework für reaktive Anwendungen
Keine Laufzeitumgebung
Optimiert auf Performanz und Durchsatz
Beeinflusst durch: Reactor Pattern, Java 8 Streams
14 Copyright © Accso GmbH
Der Kern von Reactor ist ein asynchroner Event-Bus
Reactor
Nimmt Events von Produzenten entgegen
HeisstEvent-Busab Version 2
Dispatcher
Schedulingund Routing von Events
Nutzt Thread-Pool, Ringbuffer, je nach Konfiguration
Selector
Bestimmt die Adressaten eines Events
Adressierung über Strings, Objekttyp, Regulären Ausdruck, …
Consumer
Verarbeitet Events
15 Copyright © Accso GmbH
Mit Reactive Streams aus der Callback-Hölle
http://www.reactive-streams.org/
Subscriber Publisher
subscribe
onSubscribe
onNext
onError
onComplete
Subscription
request(n)cancel
RxJava
Ratpack
17 Copyright © Accso GmbH
Reaktive Systeme
Vert.x und Demo
Reactor und Demo
Fazit und AusblickFazit und Ausblick
18 Copyright © Accso GmbH
Zum Nachlesen
JavaSPEKTRUM 5/2014
Dr. Rüdiger Grammes, Martin Lehmann, Dr. Kristine Schaal
Gut verknotet - Vert.x im Einsatz für hochskalierbare Architekturen
PDF: http://goo.gl/j4zyb0
Dr. Rüdiger Grammes, Martin Lehmann, Dr. Kristine Schaal
Reaktive Anwendungen mit dem Reactor-Framework
http://heise.de/-2405139
19
Begeisterung für dieanspruchsvollen Aufgaben unserer Kunden
Accso – Accelerated Solutions GmbHwww.accso.detwitter.com/accso
Berliner Allee 5864295 DarmstadtTelefon: +49 (6151) 13029-0Fax: +49 (6151) 13029-10
Moltkestraße 131 a50674 KölnTelefon: +49 (221) 630691-0Fax: +49 (221) 630691-10
Theatinerstraße 1180333 MünchenTelefon: +49 (89) 71042-2040Fax: + 49 (89) 71042-2001