Microservices in Java - Spring Cloud und Netflix im Überblick - Teil 1
Bekanntlich gibt es eine große Dynamik rund um Microservices. Der Übergang von einer monolithischen zu einer mikroservicebasierten Architektur bietet viele Vorteile in Bezug auf Wartbarkeit, Skalierbarkeit, hohe Verfügbarkeit usw.
Was sind Microservices?
Ein Microservice, auch bekannt als Microservice-Architektur, ist ein Architekturstil, der eine Anwendung als eine Sammlung von Diensten strukturiert. Die Vorteile der Microservice-Architektur sind wie folgt:
- Kleine Module
- Lose gekoppelt
- Unabhängig einsetzbar
- Schnellere Fehlerisolierung
Die Microservice-Architektur ermöglicht die schnelle, häufige und zuverlässige Bereitstellung großer, komplexer Anwendungen. Sie ermöglicht es einem Unternehmen auch, seine Technologie weiterzuentwickeln. Darüber hinaus hilft uns die Microservice-Architektur bei der kontinuierlichen Bereitstellung und Integration.
Was ist Spring Cloud und wofür wird sie verwendet?
Spring Cloud ist ein Framework für den Aufbau robuster Cloud-Anwendungen und bietet eine Lösung für die bei der Entwicklung eines verteilten Systems häufig auftretenden Muster. Das Spring Cloud-Framework bietet Entwicklern Tools, mit denen sie schnell sowohl Cloud-Anwendungen als auch Microservice-basierte Anwendungen erstellen können.
Mit Spring Cloud kann ein Entwickler schnell Dienste und Anwendungen entwickeln, die Designmuster implementieren, die in jeder verteilten Umgebung gut funktionieren. Spring Cloud ist jedoch kein einzelnes Projekt, sondern eine Gruppe von Projekten zur Bewältigung der Herausforderungen bei der Entwicklung von Cloud-nativen Systemen. Einige wichtige Projekte sind die folgenden:
- Spring Cloud Konfig
- Spring Cloud Netflix
- Spring Cloud Bus
- Spring Cloud Sleuth
- Spring Cloud Kubernetes
Spring Cloud Netflix ist das beliebteste Projekt, das Teil von Spring Cloud ist. Es hat etwa 3,5k Sterne auf GitHub. Es bietet Netflix OSS-Integrationen für Spring Boot-Anwendungen durch automatische Konfiguration und Bindung an die Spring-Umgebung. Mit ein paar einfachen Anmerkungen können Sie die gemeinsamen Muster innerhalb Ihrer Anwendung schnell aktivieren und konfigurieren und mit dem Aufbau großer verteilter Systeme beginnen.
Dienstentdeckung – Netflix Eureka
Beim verteilten Computing gibt es ein Konzept namens Service Discovery and Registration, bei dem ein dedizierter Server für die Verwaltung des Registers aller bereitgestellten und entfernten Microservices verantwortlich ist.
Stellen Sie es sich als einen Nachschlagedienst vor, bei dem sich Microservices (Clients) registrieren und andere registrierte Microservices entdecken können. Wenn sich ein Client-Microservice bei Eureka registriert, stellt er Metadaten wie Host-, Post- und Zustandsindikatoren zur Verfügung, damit andere Microservices ihn finden können. Der Discovery-Server erwartet von jeder Microservice-Instanz eine regelmäßige Heartbeat-Nachricht. Wenn eine Instanz anfängt, regelmäßig keinen Heartbeat zu senden, entfernt der Discovery-Server die Instanz aus seiner Registrierung. Auf diese Weise werden wir ein sehr stabiles Ökosystem von Microservices haben, die miteinander zusammenarbeiten. Außerdem müssen wir die Adresse anderer Microservices nicht manuell pflegen, was eine nahezu unmögliche Aufgabe ist, wenn die Skalierung sehr häufig ist und wir einen virtuellen Host für die Dienste verwenden, insbesondere in einer Cloud-Umgebung.
Um einen Eureka-Server zu erstellen, müssen wir die Eureka-Server-Abhängigkeit hinzufügen und die Hauptklasse von Spring Boot mit @EnableEurekaServer annotieren .
In diesem Fall ist hier kein Dienst registriert, was zu erwarten ist. Sobald wir die Client-Dienste in Betrieb nehmen, wird dieser Server mit den Details der Client-Dienste aktualisiert. Wenn wir eine neue Service-Instanz beim Eureka-Server registrieren wollen, müssen wir eine Eureka-Discovery-Client-Abhängigkeit haben und die Hauptklasse von Spring Boot mit @EnableEurekaClient annotieren.
Edge-Server – Netflix Zuul
Zuul ist die Eingangstür für alle Anfragen von Geräten und Websites an das Backend. Zuul ist eine Edge-Service-Anwendung, die dynamisches Routing, Überwachung, Ausfallsicherheit und Sicherheit ermöglicht. Das Routing ist ein wichtiger Bestandteil einer Microservice-Architektur.
Um einen Eureka-Server zu erstellen, müssen wir die Eureka-Server-Abhängigkeit hinzufügen und die Hauptklasse von Spring Boot mit @EnableEurekaServer annotieren .
Zuul bietet auch einen bekannten Einstiegspunkt zu den Microservices im System. Die Verwendung dynamisch zugewiesener Ports ist praktisch, um Portkonflikte zu vermeiden und den Verwaltungsaufwand zu minimieren, macht es aber für jeden einzelnen Dienstnutzer schwieriger.
Um ein Zuul-Gateway zu erstellen, muss der Microservice, der die Benutzeroberfläche verwaltet, mit zuul config aktiviert werden. Wir müssen die Abhängigkeit spring-cloud-starter-zuul hinzufügen und sie in der Hauptklasse von Spring Boot mit der Annotation @EnableZuulProxy aktivieren. Der Vorteil dieser Art von Design ist, dass die gemeinsamen Aspekte wie CORS, Authentifizierung und Sicherheit in einen zentralisierten Dienst integriert werden können, so dass alle gemeinsamen Aspekte auf jede Anfrage angewendet werden. Außerdem können wir mit Zuul beliebige Routing-Regeln oder Filter implementieren.
Zuul verfügt hauptsächlich über vier Arten von Filtern, die es uns ermöglichen, den Datenverkehr in verschiedenen Zeitabschnitten der Anfrageverarbeitung für eine bestimmte Transaktion abzufangen. Wir können eine beliebige Anzahl von Filtern für ein bestimmtes URL-Muster hinzufügen.
- Vorfilter werden aufgerufen, bevor die Anfrage weitergeleitet wird
- Postfilter werden aufgerufen, nachdem die Anfrage weitergeleitet wurde
- Routenfilter werden verwendet, um die Anfrage weiterzuleiten
- Fehlerfilter werden aufgerufen, wenn bei der Bearbeitung der Anfrage ein Fehler auftritt
Schlussfolgerung – Teil 1
Das Hauptziel der Microservices-Implementierung besteht darin , die Anwendung in einen separaten Dienst für jede Kern- und API-Dienstfunktionalität aufzuteilen. In Teil 1 haben wir die Microservices-Architektur und das Spring Cloud-Projekt vorgestellt. Außerdem haben wir über zwei wichtige Komponenten des Spring Cloud-Projekts gesprochen – Eureka Service Discovery und Zuul Edge Server.
Aber das ist noch nicht alles, in
Teil 2
werden wir unseren Vortrag über Microservices fortsetzen und die anderen drei Komponenten vorstellen.