© Liashko/Shutterstock.com
Entwickler Magazin
Die Bestandteile von Spring Cloud Netflix

Microservices à la Netflix

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 Microservices-Architekturen veröffentlicht. Wie passen diese beiden Dinge nun zusammen?

Carsten Pelka, Michael Plöd


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 (clientseitiges Load Balancing) und Hystrix (Circuit Breaker).

Eureka

Eine Microservices-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 Microservices-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.

Als Basis für einen eigenen Eureka-Server kann man sich an dem von Spring Cloud [1] bereitgestellten Projekt orientieren. Der Service kommt fertig konfiguriert, und andere Dienste können sich einfach an der Adresse anmelden. Zum Umfang von Eureka gehört auch ein Dashboard (Abb. 1), das Auskunft über angemeldete Dienste und deren Status und Serverdetails wie Replikationen, Speicherverbrauch und Uptime gibt.

Ab...

Entwickler Magazin
Die Bestandteile von Spring Cloud Netflix

Microservices à la Netflix

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 Microservices-Architekturen veröffentlicht. Wie passen diese beiden Dinge nun zusammen?

Carsten Pelka, Michael Plöd


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 (clientseitiges Load Balancing) und Hystrix (Circuit Breaker).

Eureka

Eine Microservices-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 Microservices-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.

Als Basis für einen eigenen Eureka-Server kann man sich an dem von Spring Cloud [1] bereitgestellten Projekt orientieren. Der Service kommt fertig konfiguriert, und andere Dienste können sich einfach an der Adresse anmelden. Zum Umfang von Eureka gehört auch ein Dashboard (Abb. 1), das Auskunft über angemeldete Dienste und deren Status und Serverdetails wie Replikationen, Speicherverbrauch und Uptime gibt.

Ab...

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