JHipster med en Microservice-arkitektur

1. Introduktion

I denne opskrivning udforsker vi et interessant eksempel med JHipster - opbygning af en simpel mikrotjenestearkitektur. Vi viser, hvordan man bygger og implementerer alle de nødvendige stykker, og til sidst har vi en fuldt blæst mikroserviceapplikation i gang.

Hvis du er ny hos JHipster, skal du tjekke vores indledende artikel, inden du fortsætter med at få en god forståelse af det grundlæggende i dette projektgenereringsværktøj.

2. Monolitisk vs. mikroservice

I vores første artikel illustrerede vi, hvordan man opretter og bootstrap en monolitisk applikation, der er relativt let at vedligeholde.

Vores mikroservicesystem adskiller derimod frontend-back-enden, som igen også kan opdeles i flere små applikationer, der hver især har at gøre med en delmængde af det fulde applikationsdomæne. Naturligvis, som med alle mikroserviceimplementeringer, løser dette nogle problemer, men indfører også en vis kompleksitet, såsom at håndtere komponentregistrering og sikkerhed.

JHipster tager sig af de fleste vanskeligheder ved styring af mikroserviceapplikationer ved hjælp af moderne open source-værktøjer som Netflix's Eureka Server og Hashicorps konsul.

Der er selvfølgelig nogle ting at overveje her, som hvor stort eller kompliceret vores domæne er, hvor kritisk er vores applikation, og hvilke niveauer af tilgængelighed, vi ønsker at have, skal vi være vært for vores tjenester på forskellige servere og placeringer osv. Målet med disse værktøjer er naturligvis, at disse permutationer er mulige og lette at administrere.

2.1. JHipster Microservice-komponenter

Når vi arbejder på en Microservice-arkitektur med JHipster, bliver vi nødt til at opbygge og implementere mindst tre forskellige projekter: et JHipster Registry, en Microservice Gateway og mindst en Microservice-applikation.

JHipster-registreringsdatabasen er et væsentligt stykke af mikroservicearkitekturen. Det binder alle de andre komponenter sammen og gør det muligt for dem at kommunikere med hinanden.

Microservice-applikationen indeholder back-end-koden. Når det er kørt, afslører det API for det domæne, det er beskæftiget med. En mikroservicearkitektur kan være sammensat af mange mikroserviceapplikationer, der hver indeholder et par relaterede enheder og forretningsregler.

Og Microservice Gateway har al front-end (vinklet) kode og vil forbruge API oprettet af hele gruppen af ​​mikrotjeneste applikationer:

3. Installation

For alle detaljer om installationsprocessen, se vores indledende artikel om JHipster.

4. Oprettelse af et mikroserviceprojekt

Lad os nu installere de tre kernekomponenter i vores mikroserviceprojekt.

4.1. Installation af JHipster Registry

Da JHipster Registry er en standard JHipster, er vi bare nødt til at downloade og køre det. Der er ingen grund til at ændre det:

git klon //github.com/jhipster/jhipster-registry cd jhipster-registry && ./mvnw

Dette vil klone jhipster-registrering projekt fra GitHub og start applikationen. Når det er startet med succes, kan vi besøge // localhost: 8761 / og logge ind med brugeren admin og adgangskode admin:

4.2. Installation af et Microservice-program

Her begynder vi at opbygge de faktiske funktioner i vores projekt. I dette eksempel opretter vi en simpel Microservice-applikation, der administrerer biler. Så først opretter vi applikationen, og derefter tilføjer vi en enhed til den:

# opret en mappe til appen og cd til den mkdir bil-app && cd bil-app # kør jhipster-guiden yo jhipster

Når guiden starter, lad os følge instruktionerne for at oprette et Microservice-type-program med navnet carapp. Nogle andre relevante parametre er:

  • havn: 8081
  • pakke: com.car.app
  • godkendelse: JWT
  • service opdagelse: JHipster Registry

Skærmbilledet nedenfor viser det komplette sæt af muligheder:

Nu tilføjer vi en bil enhed til vores ansøgning:

# kører guiden til oprettelse af enhed yo jhipster: enhedsbil

Guiden til oprettelse af enheden starter. Vi skal følge instruktionerne for at oprette en enhed, der hedder bil med tre felter: lave, modelog pris.

Når det er færdigt, er vores første Microservice-applikation færdig. Hvis vi ser på den genererede kode, bemærker vi, at der ikke er nogen javascript, HTML, CSS eller nogen front-end-kode. Disse vil alle blive produceret, når Microservice Gateway er oprettet. Tjek også README-filen for vigtige oplysninger om projektet og nyttige kommandoer.

For at afslutte, lad os køre vores nyoprettede komponent:

./mvnw

Inden du kører ovenstående kommando, skal vi sikre os, at jhipster-registry komponenten er i gang. Ellers får vi en fejl.

Hvis alt gik efter planen, vores bil-app ville starte, og jhipster-registry log fortæller os, at appen blev registreret med succes:

Registreret forekomst CARAPP / carapp: 746e7525dffa737747dcdcee55ab43f8 med status OP (replikering = sand)

4.3. Installation af en Microservice Gateway

Nu frontend-bit. Vi opretter en Microservice Gateway og angiver, at vi har en enhed på en eksisterende komponent, som vi vil oprette front-end-koden for:

# Opret en mappe til vores gateway-app mkdir gateway-app && cd gateway-app # Kører JHipster-guiden yo jhipster

Lad os følge instruktionerne for at oprette en applikation af typen Microservice gateway. Vi navngiver ansøgningen gateway, og vælg følgende indstillinger for de andre parametre:

  • havn: 8080
  • pakke: com. vej
  • auth: JWT
  • service opdagelse: JHipster Registry

Her er et resumé af det komplette sæt af parametre:

Lad os gå videre til oprettelse af enheder:

# Kører guiden til oprettelse af enhed yo jhipster: enhedsbil

Når du bliver spurgt, om vi vil generere fra en eksisterende mikroservice, skal du vælge Ja, skriv derefter den relative sti til bil-app rodmappe (f.eks .: ../bilapp). Endelig, når du bliver spurgt, om vi vil opdatere enheden, skal du vælge Ja, gendan enheden.

JHipster finder Bil.json fil, der er en del af det eksisterende Microservice-program, vi har oprettet tidligere, og vil bruge metadataene i filen til at oprette al den nødvendige UI-kode til den enhed:

Fundet .jhipster / Car.json-konfigurationsfilen, enhed kan automatisk genereres!

Tid til at køre gateway-app og test om alt fungerer:

# Starter gateway-app-komponenten ./mvnw

Lad os nu navigere til // localhost: 8080 / og logge ind med brugeren admin og adgangskode admin. I topmenuen skal vi se et element Bil der fører os til siden med bilisten. Alt godt!

4.4. Oprettelse af et andet mikroserviceapplikation

Lad os derefter tage vores system et skridt videre og Opret en anden komponent af typen Microservice Application. Denne nye komponent administrerer bilforhandlere, så vi tilføjer en enhed kaldet forhandler til det.

Lad os oprette en ny mappe, navigere til den og køre yo jhipster kommando:

mkdir forhandler-app && cd forhandler-app yo jhipster

Derefter skriver vi ind dealerapp som programmets navn, og vælg port 8082 for at den kører (det er afgørende, at dette er en anden port end dem, vi bruger til jhipster-register og bil-app).

For de andre parametre kan vi vælge den valgmulighed, vi ønsker. Husk, at dette er en separat mikroservice, så den kan bruge forskellige databasetyper, cachestrategi og tests end bil-app komponent.

Lad os tilføje et par felter til vores forhandler enhed. For eksempel navn og adresse:

# Kører guiden Opret enhed yo jhipster: enhedsforhandler

Vi bør ikke glemme at navigere til gateway-app og fortæl det at generere frontend-koden til forhandler enhed:

# Naviger til gateway-appens rodmappe cd ../gateway-app # Kører guiden Opret enhed yo jhipster: enhedsforhandler

Endelig løb ./mvnw på den forhandler-app rodmappe for at starte komponenten.

Dernæst kan vi besøge vores gatewayapplikation på // localhost: 8080 og opdatere siden for at se det nyoprettede menupunkt for forhandlerenheden.

Lad os tage et kig på, inden vi afslutter jhipster-registry ansøgning igen på // localhost: 8761 /. Klik på menupunktet Applikationer for at kontrollere, at alle vores tre komponenter blev identificeret og registreret med succes:

Det er det! Vi har oprettet en sofistikeret arkitektur bestående af en Gateway-app med al front-end-koden understøttet af to mikroservices på få minutter.

5. Konklusion

At starte et Microservice Architecture-projekt med JHipster er ret let; vi behøver kun at oprette så mange Microservice-applikationer, som vi har brug for, og en Microservice Gateway, og vi er klar til at gå.

Du kan udforske rammerne videre på det officielle JHipster-websted.

Som altid er kodebasen til vores bil-app, forhandler-app og gateway-app tilgængelig på GitHub.