© DrHitch/Shutterstock.com
Microservices-Architektur

4 Communication-Patterns


Communication-Patterns lösen Problemstellungen der Kommunikation zwischen Microservices. Die Patterns können in drei Klassen unterteilt werden, die auf unterschiedliche Kommunikationsarchitekturen angewendet werden können. Dazu gehören:

  • Synchrone Kommunikationsarchitektur
  • Asynchrone Kommunikationsarchitektur
  • Reaktive Kommunikationsarchitektur

Bei der synchronen Kommunikationsarchitektur sendet der Client einen Request an den Microservice, wird während der Bearbeitungszeit blockiert und erhält nach der Bearbeitung eine Response. Ein derzeit sehr prominenter Vertreter der synchronen Kommunikationsarchitektur ist REST in Kombination mit HTTP.

Bei der asynchronen Kommunikationsarchitektur sendet der Client eine Nachricht, die an alle interessierten Microservices verteilt wird. Während der Bearbeitung der Nachricht ist der Client nicht blockiert. In aller Regel wird die asynchrone Kommunikation mit einer Message-oriented Middleware (MOM) umgesetzt, an der Client und Microservice angeschlossen sind. Die Kommunikation erfolgt über das Advanced Message Queuing Protocol (AMQP) [1], ein binäres Protokoll, das sprachenunabhängig verwendet werden kann und daher gerade für die Microservices Architecture besonders geeignet ist.

Reaktive Kommunikationsarchitektur oder auch Reactive Programming [2] ist ein ganz neues Programmiermodell, das sowohl auf synchrone als auch auf asynchrone Kommunikation angewendet werden kann. Die Reaktive Programmierung unterstützt interaktive, fehlertolerante und skalierbare Anwendungen und ist damit optimal für den Einsatz in Microservices-Architekturen geeignet. Das Reactive Manifesto [3] beschreibt die Werte der reaktiven Programmierung. Das Manifest besteht seit 2013 und hat bereits über 13 000 Unterzeichner, Tendenz steigend, und liegt seit September 2014 in der Version 2.0 vor. Die Basis der Implementierung für das reaktive Programmiermodell bilden die Reactive Extensions, die von ReactiveX [4] bereitgestellt werden. Für die Reactive Extensions – kurz Rx – gibt es eine Vielzahl von Implementierungen in unterschiedlichen Sprachen. Für Java stellt Netflix mit RxJava [5] eine Implementierung bereit, und mit Java 8 steht auch im JDK eine Implementierung zur Verfügung.

In diesem shortcut liegt der Fokus auf der am häufigsten verwendeten Kommunikation, der synchronen Kommunikation, die mit REST und HTTP das Request-and-Response-Pattern implementiert, und der asynchronen Kommunikation mit dem Fire-and-Forget-Pattern.

4.1 Request and Re...

Neugierig geworden?

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