© Excellent backgrounds/Shutterstock.com
Java Magazin
Load Balancing, Fault Tolerance und Konfiguration

Mit Spring Cloud gegen die Komplexität

Microservices sind verteilte Systeme - und stellen Entwickler vor komplexe Probleme. In diesem Teil der Spring-Cloud-Artikelserie geht es um Lastverteilung, die Vermeidung von Ausfällen bei REST-Kommunikation und die Konfiguration verteilter Services.

Eberhard Wolff


Im ersten Teil der Artikelserie (Java Magazin 3.2015) wurde das Projekt Spring Cloud vorgestellt. Spring Cloud basiert auf Spring Boot, das die Entwicklung von Spring-Anwendungen wesentlich vereinfacht und es auch erlaubt, Spring-Anwendungen ohne Application Server zu betreiben. Spring Cloud bietet zusätzlich zahlreiche Technologien und integriert einige Basistechnologien. Dadurch wird die Implementierung von Anwendungen für populäre Cloud-Anbieter einfacher. Zudem sind einige Features vor allem hinsichtlich der Herausforderungen bei Microservices-Systemen hilfreich.

Eine solche Herausforderung: Wenn in einem Netzwerk Microservices installiert sind, müssen die Dienste zueinander finden. Die Aufgabe ist eigentlich sehr einfach: Gegeben ist ein Name eines Service – auf welchem Rechner kann der Service unter welchem Port erreicht werden? Eine mögliche Lösung für dieses Problem ist die Service Registry Eureka aus dem Netflix-Stack [1]. Diese Lösung ist speziell auf die Anforderungen von Microservices ausgerichtet. In einer Microservices-Architektur können Dienste kommen und gehen – schließlich kann eine neue Version eines Microservice installiert werden, oder es werden mehr Instanzen gestartet, um mit höherer Last zurechtzukommen. Außerdem bietet eine Service Registry auch eine gute Möglichkeit, um Load Balancing und Failover umzusetzen. Unter dem Namen des Diensts können mehrere Instanzen registriert werden, die sich die Last teilen. Beim Ausfall einer Instanz kann eine andere die Arbeit übernehmen. Genau solche Features bietet Eureka an.

Der Fokus ist allerdings anders als bei klassischen Load Balancern: Eureka wird intern in einem Microservices-System genutzt – nicht für die HTTP-Requests von außen, wo klassische Load Balancer wirken. Eureka arbeitet daher auch anders als typische Load Balancer, die sich in den HTTP-Verkehr als Proxy einschalten: Eureka ist ein Server mit einer REST-Schnittstelle. Auf Anfragen gibt er für einen Namen jeweils eine Serviceinstanz zurück. Eureka kann zusammen mit einer Clientbibliothek verwendet werden, die Aufrufe der REST-Schnittstelle mit einem API für eine bestimmte Programmiersprache versieht. Eine solche Bibliothek gibt es für Java. Für andere Programmiersprachen muss ebenfalls eine entsprechende Library verwendet werden – oder man betreibt einen kleinen Java-Prozess, der die Kommunikation mit dem Eureka-Server regelt. Die Clientbibliothek hat neben der leichteren Nutzbarkeit noch einen weiteren Vorteil: Die Daten über...

Java Magazin
Load Balancing, Fault Tolerance und Konfiguration

Mit Spring Cloud gegen die Komplexität

Microservices sind verteilte Systeme - und stellen Entwickler vor komplexe Probleme. In diesem Teil der Spring-Cloud-Artikelserie geht es um Lastverteilung, die Vermeidung von Ausfällen bei REST-Kommunikation und die Konfiguration verteilter Services.

Eberhard Wolff


Im ersten Teil der Artikelserie (Java Magazin 3.2015) wurde das Projekt Spring Cloud vorgestellt. Spring Cloud basiert auf Spring Boot, das die Entwicklung von Spring-Anwendungen wesentlich vereinfacht und es auch erlaubt, Spring-Anwendungen ohne Application Server zu betreiben. Spring Cloud bietet zusätzlich zahlreiche Technologien und integriert einige Basistechnologien. Dadurch wird die Implementierung von Anwendungen für populäre Cloud-Anbieter einfacher. Zudem sind einige Features vor allem hinsichtlich der Herausforderungen bei Microservices-Systemen hilfreich.

Eine solche Herausforderung: Wenn in einem Netzwerk Microservices installiert sind, müssen die Dienste zueinander finden. Die Aufgabe ist eigentlich sehr einfach: Gegeben ist ein Name eines Service – auf welchem Rechner kann der Service unter welchem Port erreicht werden? Eine mögliche Lösung für dieses Problem ist die Service Registry Eureka aus dem Netflix-Stack [1]. Diese Lösung ist speziell auf die Anforderungen von Microservices ausgerichtet. In einer Microservices-Architektur können Dienste kommen und gehen – schließlich kann eine neue Version eines Microservice installiert werden, oder es werden mehr Instanzen gestartet, um mit höherer Last zurechtzukommen. Außerdem bietet eine Service Registry auch eine gute Möglichkeit, um Load Balancing und Failover umzusetzen. Unter dem Namen des Diensts können mehrere Instanzen registriert werden, die sich die Last teilen. Beim Ausfall einer Instanz kann eine andere die Arbeit übernehmen. Genau solche Features bietet Eureka an.

Der Fokus ist allerdings anders als bei klassischen Load Balancern: Eureka wird intern in einem Microservices-System genutzt – nicht für die HTTP-Requests von außen, wo klassische Load Balancer wirken. Eureka arbeitet daher auch anders als typische Load Balancer, die sich in den HTTP-Verkehr als Proxy einschalten: Eureka ist ein Server mit einer REST-Schnittstelle. Auf Anfragen gibt er für einen Namen jeweils eine Serviceinstanz zurück. Eureka kann zusammen mit einer Clientbibliothek verwendet werden, die Aufrufe der REST-Schnittstelle mit einem API für eine bestimmte Programmiersprache versieht. Eine solche Bibliothek gibt es für Java. Für andere Programmiersprachen muss ebenfalls eine entsprechende Library verwendet werden – oder man betreibt einen kleinen Java-Prozess, der die Kommunikation mit dem Eureka-Server regelt. Die Clientbibliothek hat neben der leichteren Nutzbarkeit noch einen weiteren Vorteil: Die Daten über...

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