In der Überschrift haben wir drei Schlagworte gesehen:
- Microservices
- Netflix Eureka
- Discovery (Registry)
Was ist ein Microservice?
Microservice(s) sind in einfachen Worten Cluster von kleinen Anwendungen, die koordiniert zusammenarbeiten, um eine vollständige Lösung bereitzustellen.
Wenn wir sagen, dass viele kleine Anwendungen unabhängig voneinander zusammen laufen, dann haben sie alle ihre eigenen URLs und Ports. In diesem Szenario wäre es sehr mühsam, all diese Microservices zu pflegen, damit sie synchron laufen, und noch wichtiger, mit Monitoring. Dieses Problem wird sich noch vervielfachen, wenn wir mit der Implementierung von Load Balancern beginnen.
Um dieses Problem zu lösen, benötigen wir ein Tool, das die Registrierung aller Microservices im Ökosystem überwacht und pflegt.
Was ist Netflix Eureka?
Dies ist ein Tool, das von Netflix zur Verfügung gestellt wird, um eine Lösung für das oben genannte Problem zu bieten. Es besteht aus dem Eureka Server und den Eureka Clients. Eureka Server ist an sich ein Microservice, an dem sich alle anderen Microservices anmelden. Die Eureka-Clients sind die unabhängigen Microservices. Wir werden sehen, wie man dies in einem Microservice-Ökosystem konfiguriert.
Ich werde Spring Boot verwenden, um ein paar Microservices zu erstellen, die als Eureka-Clients fungieren, und einen Discovery-Server, der ein Eureka-Server sein wird. Hier ist die komplette Projektstruktur:
Lassen Sie uns den Eureka Discovery Server besprechen
Dies ist der Eureka Server, und dafür müssen wir eine Eureka-Abhängigkeit in das Projekt aufnehmen. Unten ist die pom.xml für den Eureka Discovery Server.
Außerdem müssen wir die Eigenschaftendatei für dieses Projekt aktualisieren, um anzugeben, dass es sich um einen Discovery Server und nicht um einen Client handelt.
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Um die Discovery-Anwendung an einen bestimmten Port zu binden und der Anwendung einen Namen zu geben, müssen wir außerdem Folgendes hinzufügen:
server.port=8000spring.application.name=DiscoveryServer
Eine letzte Sache, die wir tun müssen, ist, die Spring Boot-Anwendung zu annotieren, um sie als Eureka-Server zu aktivieren. Dazu müssen wir @EnableEurekaServer
.
Beim Booten der Anwendung werden wir ein von Eureka bereitgestelltes UI sehen, das alle registrierten Server auflistet. Aber zu diesem Zeitpunkt haben wir keinen!
Nun fügen wir dem Ökosystem ein paar Microservices hinzu und registrieren sie beim Discovery Server. Dazu müssen wir auch die für jeden Dienst erforderlichen Abhängigkeiten hinzufügen und sie beim Server registrieren. Wir werden im Folgenden sehen, wie das geht.
Ich habe drei einfache Microservices (microservice1, microservice2, microservice3) mit Spring Boot erstellt, und jeder läuft auf seinem eigenen Port (8002, 8003 und 8004).
Als Client sollte er sich beim Server registrieren, und das geschieht in der Property-Datei, wie unten.
Die Hauptanwendung wird in jedem Microservice mit @EnableEurekaClient
annotiert.
Booten Sie diese Anwendung, damit sie auf Port 8004 läuft, und sie wird sich automatisch beim Discovery-Server registrieren. Auf ähnliche Weise habe ich zwei weitere Microservices erstellt und sie auf dem Discovery Server registriert.
Wir sehen, dass drei Server im Ökosystem laufen und wir können den Status dieser Server auch überwachen.
Dies erleichtert die Überwachung aller Server und ihrer Replikate, falls wir einen Load Balancer verwenden.
Ich hoffe, dies hilft Ihnen bei den ersten Schritten mit Discovery Server und Clients mit Eureka.