© Excellent backgrounds/Shutterstock.com
Java Magazin
Reaktiver Datenzugriff mit Spring Data 2.0

Die neue Reaktivitätstheorie

Spring Data 2.0 ist da. Der Kay Release Train, der nach dem Pionier der Objektorientierung, Alan Kay, benannt ist, bringt reaktiven Datenzugriff für MongoDB, Apache Cassandra, Redis und Couchbase. Anwendungen können mit einem reaktiven Streaming-API auf Datenbanken zugreifen und gleichen nicht nur die Schwächen heutiger Programmiermodelle aus, sondern bereiten den Weg für neue Anwendungsfälle, während Latenzen minimiert und Ressourcen effizienter eingesetzt werden.

Mark Paluch


Heutige Programmiermodelle treffen Annahmen zur Ressourcennutzung, die verhindern, dass Ressourcen effizient genutzt werden können. In einem imperativen Programmiermodell werden Abläufe als Abfolge von Anweisungen dargestellt. Der Code wird in einem ­Thread ausgeführt und belegt ihn für die Ausführungsdauer. Diese Threads sind aber begrenzte Ressourcen und bilden somit eine Skalierungsgrenze. Um zu verstehen, warum das zu einem Problem werden kann, ist ein Blick ins Detail erforderlich.

Datenbankzugriffe und Interaktionen mit anderen Systemen nutzen Ressourcen, die außerhalb des Prozesses liegen und üblicherweise das Netzwerk einbeziehen: Es geht um I/O. Der Datenzugriff muss über das Netzwerk zum entfernen System transportiert werden, das System bearbeitet dann die Anfrage. Sobald die Antwort im aufrufenden Prozess angekommen ist, kann der imperative Code mit seinem Ablauf fortfahren. Während dieser Zeit werden Threads und Verbindungen exklusiv belegt und stehen anderen Prozessen, die eventuell mit ihrem Ablauf fortfahren könnten, nicht zur Verfügung.

Reaktiver Datenzugriff hingegen erfordert ein Programmiermodell, das keine Annahmen über Ressourcenbelegung trifft. Der Artikel zum Spring Framework 5 in diesem Heft geht bereits auf Aspekte reaktiver Programmierung ein (Seite 40). Abläufe werden als ineinander verschachtelte Funktionen entwickelt. In der funktional-reaktiven Programmierung werden diese Funktionen an einen Scheduler übergeben, der die einzelnen Aufrufe koordiniert. Spring setzt dazu auf Project Reactor als grundlegende Bibliothek, in der reaktive Sequenzen als Streams erzeugt werden [1]. Das Stream-API in Java 8 setzt bereits auf funktionale Programmierung. Streams können aus einer Datenquelle erzeugt werden (z. B. Iterator, Liste), und Funktionen werden durch funktionale Operatoren (filter, map) auf Datenelemente innerhalb des Streams angewandt. Für den Datenzugriff bedeutet das, dass der Code einem funktional-reaktiven Programmiermodell folgt und die Anwendung einen reaktiven Treiber benötigt.

Infobox: Synchron, asynchron, blocking, ­non-blockingSynchron: Bei synchroner Ausführung handelt es sich um ein Ausführungsmodell, bei dem der vorhergehende Schritt beendet sein muss, bevor der Ablauf fortfahren kann. Dies ist ein blockierendes Verhalten.Asynchron: Asynchron ist das genaue Gegenteil von synchron. Es bezeichnet ein Ausführungsmodell, bei dem das Ergebnis nicht sofort erwartet wird, sondern erst später eintreffen kann. Asynchrone Aufru...

Java Magazin
Reaktiver Datenzugriff mit Spring Data 2.0

Die neue Reaktivitätstheorie

Spring Data 2.0 ist da. Der Kay Release Train, der nach dem Pionier der Objektorientierung, Alan Kay, benannt ist, bringt reaktiven Datenzugriff für MongoDB, Apache Cassandra, Redis und Couchbase. Anwendungen können mit einem reaktiven Streaming-API auf Datenbanken zugreifen und gleichen nicht nur die Schwächen heutiger Programmiermodelle aus, sondern bereiten den Weg für neue Anwendungsfälle, während Latenzen minimiert und Ressourcen effizienter eingesetzt werden.

Mark Paluch


Heutige Programmiermodelle treffen Annahmen zur Ressourcennutzung, die verhindern, dass Ressourcen effizient genutzt werden können. In einem imperativen Programmiermodell werden Abläufe als Abfolge von Anweisungen dargestellt. Der Code wird in einem ­Thread ausgeführt und belegt ihn für die Ausführungsdauer. Diese Threads sind aber begrenzte Ressourcen und bilden somit eine Skalierungsgrenze. Um zu verstehen, warum das zu einem Problem werden kann, ist ein Blick ins Detail erforderlich.

Datenbankzugriffe und Interaktionen mit anderen Systemen nutzen Ressourcen, die außerhalb des Prozesses liegen und üblicherweise das Netzwerk einbeziehen: Es geht um I/O. Der Datenzugriff muss über das Netzwerk zum entfernen System transportiert werden, das System bearbeitet dann die Anfrage. Sobald die Antwort im aufrufenden Prozess angekommen ist, kann der imperative Code mit seinem Ablauf fortfahren. Während dieser Zeit werden Threads und Verbindungen exklusiv belegt und stehen anderen Prozessen, die eventuell mit ihrem Ablauf fortfahren könnten, nicht zur Verfügung.

Reaktiver Datenzugriff hingegen erfordert ein Programmiermodell, das keine Annahmen über Ressourcenbelegung trifft. Der Artikel zum Spring Framework 5 in diesem Heft geht bereits auf Aspekte reaktiver Programmierung ein (Seite 40). Abläufe werden als ineinander verschachtelte Funktionen entwickelt. In der funktional-reaktiven Programmierung werden diese Funktionen an einen Scheduler übergeben, der die einzelnen Aufrufe koordiniert. Spring setzt dazu auf Project Reactor als grundlegende Bibliothek, in der reaktive Sequenzen als Streams erzeugt werden [1]. Das Stream-API in Java 8 setzt bereits auf funktionale Programmierung. Streams können aus einer Datenquelle erzeugt werden (z. B. Iterator, Liste), und Funktionen werden durch funktionale Operatoren (filter, map) auf Datenelemente innerhalb des Streams angewandt. Für den Datenzugriff bedeutet das, dass der Code einem funktional-reaktiven Programmiermodell folgt und die Anwendung einen reaktiven Treiber benötigt.

Infobox: Synchron, asynchron, blocking, ­non-blockingSynchron: Bei synchroner Ausführung handelt es sich um ein Ausführungsmodell, bei dem der vorhergehende Schritt beendet sein muss, bevor der Ablauf fortfahren kann. Dies ist ein blockierendes Verhalten.Asynchron: Asynchron ist das genaue Gegenteil von synchron. Es bezeichnet ein Ausführungsmodell, bei dem das Ergebnis nicht sofort erwartet wird, sondern erst später eintreffen kann. Asynchrone Aufru...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang