Top Banner
Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor Martin Lehmann, Dr. Rüdiger Grammes – Frankfurter Entwicklertag 2015
17

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

Apr 12, 2017

Download

Technology

Martin Lehmann
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und Reactor

1

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

Martin Lehmann, Dr. Rüdiger Grammes – Frankfurter Entwicklertag 2015

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

2 Copyright © Accso GmbH

Reaktive Systeme

Vert.x und Demo

Reactor und Demo

Fazit und Ausblick

Reaktive Systeme

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

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

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

4 Copyright © Accso GmbH

Anforderung: Beherrschbarkeit der Komplexität

Nebenläufigkeitsprogrammierung mit Low-Level-APIs viel zu komplex.

DisruptorReactorPattern

Aktoren-Modell

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

5 Copyright © Accso GmbH

Reaktive Systeme

Vert.x und Demo

Reactor und Demo

Fazit und Ausblick

Vert.x und Demo

http://vertx.io/

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

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

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

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)

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

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

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

11 Copyright © Accso GmbH

Demo

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

12 Copyright © Accso GmbH

Reaktive Systeme

Vert.x und Demo

Reactor und Demo

Fazit und Ausblick

Reactor und Demo

https://github.com/reactor/reactor

Page 11: Schnell reagiert! Reaktive Systeme auf der Java-Plattform mit Vert.x und 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

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

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

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

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

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

16 Copyright © Accso GmbH

Demo

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

17 Copyright © Accso GmbH

Reaktive Systeme

Vert.x und Demo

Reactor und Demo

Fazit und AusblickFazit und Ausblick

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

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

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

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