JHipster mit einer Microservice-Architektur

JHipster mit einer Microservice-Architektur

1. Einführung

In diesem Artikel untersuchen wir ein interessantes Beispiel mitJHipster - den Aufbau einer einfachen Microservices-Architektur. Wir werden zeigen, wie alle erforderlichen Teile erstellt und bereitgestellt werden, und am Ende wird eine vollständige Microservice-Anwendung zum Laufen gebracht.

Wenn Sie JHipster noch nicht kennen, überprüfen Sie bitteour introductory article, bevor Sie fortfahren, um die Grundlagen dieses Tools zur Projektgenerierung zu verstehen.

2. Monolithisch vs. Microservice

In unserem ersten Artikel haben wir gezeigt, wie eine monolithische Anwendung erstellt und gebootet wird, die relativ einfach zu warten ist.

Unser Mikroservice-System hingegen wird das Front-End vom Back-End trennen, das wiederum in mehrere kleine Anwendungen aufgeteilt werden kann, von denen jede eine Teilmenge der gesamten Anwendungsdomäne abdeckt. Wie bei allen Mikrodienstimplementierungen werden hierdurch natürlich einige Probleme gelöst, es entsteht jedoch auch eine gewisse Komplexität, z. B. im Zusammenhang mit der Registrierung von Komponenten und der Sicherheit.

JHipster wird die meisten Schwierigkeiten bei der Verwaltung der Microservice-Anwendungen mithilfe moderner Open-Source-Tools wieEureka Servervon Netflix undConsulvon Hashicorp lösen.

Natürlich gibt es hier einige Dinge zu beachten, z. B. wie groß oder kompliziert unsere Domain ist, wie kritisch unsere Anwendung ist und wie hoch die Verfügbarkeit sein soll, damit wir unsere Dienste auf verschiedenen Servern und Standorten hosten können , etc. Das Ziel dieser Tools ist es natürlich, diese Permutationen zu ermöglichen und einfach zu verwalten.

2.1. JHipster Microservice-Komponenten

Wenn Sie mit JHipster an einer Microservice-Architektur arbeiten, müssen Sie mindestens drei verschiedene Projekte erstellen und bereitstellen: eine JHipster-Registrierung, ein Microservice-Gateway und mindestens eine Microservice-Anwendung.

The JHipster Registry ist ein wesentlicher Bestandteil der Microservice-Architektur. Es bindet alle anderen Komponenten zusammen und ermöglicht es ihnen, miteinander zu kommunizieren.

The Microservice Application enthält den Backend-Code. Nach der Ausführung wird die API für die betreffende Domäne verfügbar gemacht. Eine Microservice-Architektur kann aus vielen Microservice-Anwendungen bestehen, die jeweils einige verwandte Entitäten und Geschäftsregeln enthalten.

And the Microservice Gateway verfügt über den gesamten Front-End-Code (Angular) und verwendet die API, die von der gesamten Gruppe von Mikrodienstanwendungen erstellt wurde:

image

3. Installation

Alle Details zum Installationsprozess finden Sie in unserenintroductory article on JHipster.

4. Erstellen eines Microservice-Projekts

Installieren wir nun die drei Kernkomponenten unseres Microservice-Projekts.

4.1. Installieren der JHipster-Registrierung

Da die JHipster-Registrierung ein Standard-JHipster ist, müssen wir sie nur herunterladen und ausführen. Es besteht keine Notwendigkeit, dies zu ändern:

git clone https://github.com/jhipster/jhipster-registry
cd jhipster-registry && ./mvnw

Dadurch wird dasjhipster-registry-Projekt von GitHub geklont und die Anwendung gestartet. Nach dem erfolgreichen Start können wirhttp://localhost:8761/ besuchen und uns mit Benutzeradmin und Passwortadmin anmelden:

image

 

4.2. Installieren einer Microservice-Anwendung

Hier fangen wir an, die eigentlichen Funktionen unseres Projekts zu erstellen. In diesem Beispiel erstellen wir eine einfache Microservice-Anwendung, die Autos verwaltet. Zuerst erstellen wir die Anwendung und fügen dann eine Entität hinzu:

# create a directory for the app and cd to it
mkdir car-app && cd car-app
# run the jhipster wizard
yo jhipster

Befolgen Sie nach dem Start des Assistenten die Anweisungen zum Erstellen einer Microservice-Anwendung mit dem Namencarapp. Einige andere relevante Parameter sind:

  • Port: 8081

  • Paket:com.car.app

  • Authentifizierung: JWT

  • Serviceerkennung: JHipster Registry

Der Screenshot unten zeigt die vollständigen Optionen:

image

Jetzt fügen wir unserer Anwendung einecar-Entität hinzu:

# runs entity creation wizard
yo jhipster:entity car

Der Assistent zum Erstellen von Entitäten wird gestartet. Wir sollten den Anweisungen folgen, um eine Entität mit dem Namencar mit drei Feldern zu erstellen:make,model undprice.

Sobald dies abgeschlossen ist, ist unsere erste Microservice-Anwendung abgeschlossen. Wenn wir uns den generierten Code ansehen, werden wir feststellen, dass es kein Javascript, HTML, CSS oder Front-End-Code gibt. Diese werden alle erstellt, sobald das Microservice Gateway erstellt wurde. Lesen Sie auch die README-Datei, um wichtige Informationen zum Projekt und nützliche Befehle zu erhalten.

Lassen Sie uns zum Abschluss unsere neu erstellte Komponente ausführen:

./mvnw

Bevor Sie den obigen Befehl ausführen, sollten Sie sicherstellen, dass die Komponentejhipster-registryaktiv ist. Andernfalls wird eine Fehlermeldung angezeigt.

Wenn alles nach Plan lief, würden unserecar-app starten und dasjhipster-registry-Protokoll zeigt an, dass die App erfolgreich registriert wurde:

Registered instance CARAPP/carapp:746e7525dffa737747dcdcee55ab43f8
  with status UP (replication=true)

4.3. Installieren eines Microservice Gateways

Nun das Frontend-Bit. Wir erstellen ein Microservice Gateway und geben an, dass wir eine Entität für eine vorhandene Komponente haben, für die wir den Front-End-Code erstellen möchten:

# Create a directory for our gateway app
mkdir gateway-app && cd gateway-app
# Runs the JHipster wizard
yo jhipster

Befolgen Sie die Anweisungen zum Erstellen einer Anwendung vom Typ Microservice-Gateway. Wir benennen die Anwendunggateway und wählen die folgenden Optionen für die anderen Parameter aus:

  • Port: 8080

  • Paket:com.gateway

  • auth: JWT

  • Serviceerkennung: JHipster Registry

Hier ist eine Zusammenfassung des gesamten Parametersatzes:

image

Fahren wir mit der Erstellung von Entitäten fort:

# Runs entity creation wizard
yo jhipster:entity car

Wenn Sie gefragt werden, ob wir aus einem vorhandenen Microservice generieren möchten, wählen SieYes, und geben Sie den relativen Pfad zum Stammverzeichnis voncar-appein (Beispiel: ../car-app). Wenn Sie gefragt werden, ob wir die Entität aktualisieren möchten, wählen Sie schließlichYes, regenerate the entity.

JHipster findet dieCar.json-Datei, die Teil der vorhandenen Microservice-Anwendung ist, die wir zuvor erstellt haben, und verwendet die in dieser Datei enthaltenen Metadaten, um den gesamten erforderlichen UI-Code für diese Entität zu erstellen:

Found the .jhipster/Car.json configuration file, entity can be automatically generated!

Zeit, diegateway-app auszuführen und zu testen, ob alles funktioniert:

# Starts up the gateway-app component
./mvnw

Navigieren wir nun zuhttp://localhost:8080/ und melden uns mit Benutzeradmin und Kennwortadmin an. Im oberen Menü sollte ein ElementCar angezeigt werden, das uns zur Seite mit der Fahrzeugliste führt. Alles gut!

image image

4.4. Erstellen einer zweiten Microservice-Anwendung

Als nächstes gehen wir noch einen Schritt weiter undcreate a second component of type Microservice Application. Diese neue Komponente verwaltet Autohändler, daher fügen wir eine Entität mit dem Namendealerhinzu.

Erstellen Sie ein neues Verzeichnis, navigieren Sie zu diesem Verzeichnis und führen Sie den Befehlyo jhipsteraus:

mkdir dealer-app && cd dealer-app
yo jhipster

Danach geben wirdealerapp als Anwendungsnamen ein und wählen Port8082 für die Ausführung aus (es ist wichtig, dass dies ein anderer Port ist als der, den wir fürjhipster-registryverwenden. s undcar-app).

Für die anderen Parameter können wir eine beliebige Option auswählen. Denken Sie daran, dass dies ein separater Mikrodienst ist, damit andere Datenbanktypen, Cache-Strategien und Tests als diecar-app-Komponente verwendet werden können.

Fügen wir unsererdealer-Entität einige Felder hinzu. Zum Beispielname undaddress:

# Runs the create entity wizard
yo jhipster:entity dealer

Wir sollten nicht vergessen, zugateway-app zu navigieren und den Front-End-Code für die Entitätdealerzu generieren:

# Navigate to the gateway-app root directory
cd ../gateway-app
# Runs the create entity wizard
yo jhipster:entity dealer

Führen Sie abschließend./mvnw im Stammverzeichnis vondealer-appaus, um diese Komponente zu starten.

Als Nächstes können wir unsere Gateway-Anwendung unterhttp://localhost:8080 aufrufen und die Seite aktualisieren, um den neu erstellten Menüpunkt für die Dealer-Entität anzuzeigen.

Bevor wir zum Abschluss kommen, werfen wir noch einmal einen Blick auf die Anwendung vonjhipster-registryunterhttp://localhost:8761/. Klicken Sie auf den Menüpunkt Anwendungen, um zu überprüfen, ob alle drei Komponenten erfolgreich identifiziert und registriert wurden:imageimage Das war's! Wir haben eine ausgefeilte Architektur erstellt, die aus einer Gateway-App besteht, bei der der gesamte Front-End-Code innerhalb weniger Minuten von zwei Microservices unterstützt wird.

5. Fazit

Das Starten eines Microservice Architecture-Projekts mit JHipster ist recht einfach. Wir müssen nur so viele Microservice-Anwendungen wie nötig und ein Microservice-Gateway erstellen und sind einsatzbereit.

Sie können das Framework weiter unten beiofficial JHipster website erkunden.

Wie immer ist die Codebasis für unsere Auto-App, Händler-App und Gateway-App inover on GitHub verfügbar.