Carsten Pelka innoQ

„Eine populäre Herangehensweise in Microservice-Landschaften ist das Ausphasen alter Service-Endpoints, auch „Service-Strangulation“ genannt. Hierbei wird eine neue Implementierung eines Diensts parallel zur bestehenden, alten Implementierung produktiv gesetzt, und Aufrufe zur neuen Implementierung werden erst peu à peu hochgefahren.“

Michael Plöd innoQ

„Arbeitet man in Umgebungen, die neben Java oder Groovy auch Nicht-JVM-Sprachen verwenden, kann man mithilfe von Spring Cloud Netflix Sidecar dennoch Dienste wie Eureka, Ribbon oder den Config Server verwenden.“

Netflix hat in den letzten Jahren sehr interessante Open-Source-Frameworks wie beispielsweise Eureka, Hystrix oder Zuul via GitHub publiziert. Parallel dazu hat das Spring-Team mit Spring Boot und Spring Cloud zwei hoch interessante Module für Cloud-basierte Microservice-Architekturen veröffentlicht. Wie passen diese beiden Dinge nun zusammen?

Das Projekt Spring Cloud Netflix integriert Spring Boot mit den Netflix-Open-Source-Bibliotheken und bindet sie in die bekannte Autokonfiguration und das Binding von Spring Boot mit ein. Mithilfe von Spring Cloud Netflix ist es möglich, durch wenige, einfache Annotationen die entsprechenden Komponenten von Netflix zu integrieren, zu konfigurieren und zu nutzen. Im Rahmen des Artikels geben wir ihnen einen Überblick über die Anbindung von Eureka (Service Discovery), Zuul (Intelligentes Routing), Ribbon (Client-seitiges Load Balancing) und Hystrix (Circuit Breaker).

Eureka

Eine Microservice-Architektur beruht unter anderem darauf, dass die einzelnen Services technisch unabhängig lauffähig sind. Das bezieht auch mit ein, dass es mehrere Instanzen einzelner Services verteilt geben kann. Um nun die technische Kommunikation zwischen den verschiedenen Diensten zu ermöglichen, müssen sie natürlich wissen, unter welcher Netzwerkadresse die jeweilige Gegenseite zu erreichen ist. Dies könnte mit viel Aufwand und in Abhängigkeit der aktuellen Infrastruktur (manuell) konfiguriert werden. Die Alternative dazu ist eine so genannte „Service Discovery“; ein eigener Dienst, dessen Aufgabe eine zentrale Adressverwaltung für Services darstellt. Im Netflix-Stack übernimmt Eureka diese Aufgabe, bestehend aus zwei Komponenten: dem Eureka Server und dem Eureka Client. Derzeit liegt Eureka in Version 1.0 vor, die von Spring Cloud Netflix in den beiden Eureka-Starter-Projekten eingebunden werden.

Eureka Server

Der Eureka Server wird als eigenständiger Dienst innerhalb einer Microservice-Architektur betrieben und stellt die (de-)zentrale Anlaufstelle für die Eureka Clients dar. Im Gegensatz zu anderen Diensten empfiehlt sich hier eine feste Adresse pro Instanz. Das vereinfacht die Konfiguration der registrierenden Dienste bzw. die Anfragen nach Serviceadressen. Mehrere Eureka Server lassen sich so auch einfach zu einem Cluster zusammenschließen, da jeder Eureka Server selbst per Konvention auch Client ist und somit die gleichen Methoden (Registry etch von den Peers) nutzen kann.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin Spezial Vol. 9: Microservices - "Microservices"

Alle Infos zum Heft
275521Microservices à la Netflix mit Spring Cloud
X
- Gib Deinen Standort ein -
- or -