Articles

Spring Cloud Service Discovery med Netflix Eureka

Lær å lage microservice, basert På Spring cloud, På Netflix Eureka registry server og hvordan andre microservices (Eureka klienter) bruker den til å registrere og oppdage tjenester for å ringe Sine Api-Er.

Vi skal bruke Våren Boot basert Våren Sky API. Vi vil bruke Netflix Eureka server for å bygge tjenesten register server og Eureka klienter som vil registrere seg og oppdage andre tjenester for å ringe REST Apier.

Oversikt

Vi vil lage tre microservices for Denne Netflix Eureka eksempel.

  1. Eureka Service Registry Server – denne microservice vil gi tjenesten registret og discovery server.
  2. Student Microservice-Som vil gi noen funksjonalitet basert På Student enhet. Det vil være en hvilebasert tjeneste, og viktigst av alt vil det være en eureka client service, som vil snakke med eureka service for å registrere seg i serviceregisteret.
  3. Skole Microservice-Samme type Som Student service – bare ekstra funksjon er at Det vil påberope Student service med service slå opp mekanisme. Vi vil ikke bruke absolutt NETTADRESSE for studenttjenesten til å samhandle med den tjenesten.

Her er interaksjonsdiagrammet mellom ovennevnte tre tjenester.

Komponentinteraksjon med hverandre

Teknisk Stabel og Runtime

  • Java 1.8
  • Eclipse IDE
  • Våren sky
  • våren boot
  • Våren Resten
  • Maven
Table of ContentsWhat is Netflix Eureka Server and Clients?Eureka Service Registry ServerEureka Client - Student ServiceEureka Client - School ServiceDemo of Service Discovery and CallingThings to check if facing any errorSummary

Hva Er Netflix Eureka Server og Klienter?

som vi vet i disse dager, er Det mye fart rundt Microservices. Overgangen Fra Monolittisk Til Mikroservicebasert arkitektur gir mange fordeler for fremtiden når det gjelder vedlikehold, skalerbarhet, høy tilgjengelighet etc. Men samtidig er det mange utfordringer også mens du gjør denne migrasjonen. En av dem er å opprettholde individuelle Mikrotjenesteadresser. Denne oppgaven kan være svært kompleks-avhengig av antall tjenester og deres dynamiske natur. Hvis hele infrastrukturen distribueres og det også er noen replikering, blir det vanskeligere å opprettholde denne tjenesteadressene.

for å løse dette, i distribuert databehandling er det et konsept kalt ‘Service registration and discovery’ hvor en dedikert server er ansvarlig for å opprettholde registret over Alle Mikrotjenestene som er distribuert og fjernet. Dette vil fungere som en telefonbok for alle andre programmer/mikrotjenester.

Tenk på det som en oppslagstjeneste der mikrotjenester (klienter) kan registrere seg og oppdage andre registrerte mikrotjenester. Når en klient microservice registrerer Med Eureka det gir metadata som vert, port, og helseindikator dermed åpner for andre microservices å oppdage det. Discovery-serveren forventer en vanlig heartbeat-melding fra hver microservice-forekomst. Hvis en forekomst begynner å konsekvent mislykkes i å sende et hjerteslag, fjerner discovery-serveren forekomsten fra registret. På denne måten vil Vi ha et veldig stabilt økosystem Av Mikrotjenester som samarbeider mellom hverandre, og på toppen av det trenger vi ikke å manuelt opprettholde adressen til andre Mikrotjenester, noe som er en nesten umulig oppgave hvis skalaen opp / ned er svært hyppig, på forespørsel, og vi bruker virtuell vert for å være vert for tjenestene spesielt i skymiljøet.

Eureka Service Registry Server

Følg disse trinnene for å opprette Og kjøre Eureka server.

Opprett Eureka Server

Opprett Et Spring boot-prosjekt Fra Spring Boot initializer portal med to avhengigheter, dvs. Eureka serverogActuator. Gi andre maven GAV koordinater og last ned prosjektet.

Eureka Server Service Project Generation

Pakk ut og importer prosjektet til Eclipse som eksisterende maven-prosjekt. I dette trinnet vil alle nødvendige avhengigheter lastes ned fra maven-depotet.

åpne nå SpringEurekaServerApplication klasse som våren allerede har generert i det nedlastede prosjektet og legg til@EnableEurekaServerannotasjon på klassen.

package com.example.howtodoinjava.springeurekaserver; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer@SpringBootApplicationpublic class SpringEurekaServerApplication { public static void main(String args) { SpringApplication.run(SpringEurekaServerApplication.class, args); }}

Bygg prosjektet igjen. Med denne merknaden vil denne artefakten fungere som microservice registry og discovery server.

Serverkonfigurasjon

Opprett en fil som heterapplication.yml isrc\main\resources katalogen. Legg til disse egenskapene-

server: port: ${PORT:8761} # Indicate the default PORT where this service will be startedeureka: client: registerWithEureka: false#telling the server not to register himself in the service registry fetchRegistry: false server: waitTimeInMsWhenSyncEmpty: 0#wait time for subsequent sync

Opprett en annen fil som heterbootstrap.yml isrc\main\resources katalogen. Legg til disse egenskapene-

spring: application: name: eureka cloud: config: uri: ${CONFIG_SERVER_URL:http://localhost:8888}

Test Eureka Server

Start programmet som spring boot program. Åpne nettleseren og gå til , bør du se eureka server hjemmeside som ser ut som nedenfor.

Eureka Konsoll Uten Klient

Vær oppmerksom på at på dette punktet ingen tjeneste er registrert her som er forventet, og når vi vil spinne opp klienttjenestene, vil denne serveren automatisk oppdatert med detaljer om klienttjenestene.

Eureka Client-Student Service

Følg disse trinnene for å opprette Og kjøre Eureka client running student service.

Opprett Eureka Client Project

Opprett Et spring boot prosjekt fra initializer portal med fire avhengigheter dvs.ActuatorWebRest RepositoriesEureka Discovery. Gi andre maven GAV koordinater og last ned prosjektet.

Klientprosjektgenerering –
Student Microservice

Pakk ut og importer prosjektet til Eclipse som eksisterende maven-prosjekt.

legg nå til@EnableEurekaClient annotasjon På Spring boot application class til stede isrc mappen. Med denne merknaden vil denne artefakten fungere som en spring discovery-klient og vil registrere seg i eureka-serveren som er knyttet til denne tjenesten.

package com.example.howtodoinjava.springeurekaclientstudentservice; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication@EnableEurekaClientpublic class SpringEurekaClientStudentServiceApplication { public static void main(String args) { SpringApplication.run(SpringEurekaClientStudentServiceApplication.class, args); }}

Klientkonfigurasjon

Opprett en fil som heterapplication.yml isrc\main\resources katalogen og legg til under linjer.

server: port: 8098#default port where the service will be startedeureka:#tells about the Eureka server details and its refresh time instance: leaseRenewalIntervalInSeconds: 1 leaseExpirationDurationInSeconds: 2 client: serviceUrl: defaultZone: http://127.0.0.1:8761/eureka/ healthcheck: enabled: true lease: duration: 5spring: application: name: student-service #current service name to be used by the eureka server management: security: enabled: false#disable the spring security on the management endpoints like /env, /refresh etc. logging: level: com.example.howtodoinjava: DEBUG

Legg TIL REST API

legg nå til en RestController og utsett ett restendepunkt for å få alle studentdetaljer for en bestemt skole. Her utsetter vi /getStudentDetailsForSchool/{schoolname} endepunkt for å tjene forretningsformålet. For enkelhet, vi er vanskelig koding student detaljer.

Student klassen er en enkel POJO.

Test Eureka Client

Start dette prosjektet som spring boot program. Kontroller nå at denne tjenesten er registrert i Eureka server automatisk. Gå til Eureka service console og oppdater siden. Nå hvis alt går bra, vil vi se en oppføring for student-service i eureka service console. Dette indikerer at Både Eureka server og klient er klar over hverandre.

Eureka konsoll med Student tjeneste registrert

vi vil nå bekrefte at /getStudentDetailsForSchool/{schoolname} endepunkt er oppe og løper. Gå til nettleseren og gå til , det vil gi Studentens detaljer for en bestemt skole abcschool.

Student service response

Eureka Client – School Service

nå vil vi opprette skoletjeneste som vil registrere seg hos eureka server – og det vil oppdage og oppdage invoke student-tjeneste uten hardkodet url banen.

Følg nøyaktige trinn for å opprette student service, for å opprette Og kjøre Eureka client running school service også.

Opprett Eureka Client Project

Opprett Et spring boot prosjekt fra initializer portal med fire avhengigheter dvs.ActuatorWebRest RepositoriesEureka Discovery. Gi andre maven GAV koordinater og last ned prosjektet.

Pakk ut og importer prosjektet til Eclipse som eksisterende maven-prosjekt.

legg nå til@EnableEurekaClient annotasjon På Spring boot application class til stede isrc mappen. Med denne merknaden vil denne artefakten fungere som en spring discovery-klient og vil registrere seg i eureka-serveren som er knyttet til denne tjenesten.

package com.example.howtodoinjava.springeurekaclientschoolservice;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class SpringEurekaClientSchoolServiceApplication {public static void main(String args) {SpringApplication.run(SpringEurekaClientSchoolServiceApplication.class, args);}}

Klientkonfigurasjon

Opprett en fil som heterapplication.yml isrc\main\resources katalogen og legg til under linjer. Disse konfigurasjonene er svært lik student tjeneste unntatt portnummer og tjenestenavn.

Legg TIL REST API som bruker studenttjenestens REST API

legg nå til en RestController og utsett ett rest endepunkt for å få skoledetaljer. Dette endepunktet vil bruke url-adressen for tjenesteoppdagingsstil ved hjelp av programnavnet, i stedet full URL med host: port.

På Denne måten kan vi kvitte seg med spesifikk tjenestekonfigurasjon, og vi kan gi tjenesten slå opp ansvar til eureka server og rest mal gitt her. Vi kan også bruke lastbalansering (se @LoadBalanced annotasjon) her hvis flere forekomster kjører for samme tjeneste.

NETTADRESSEN vi har brukt er . Klart bruker vi bare tjenestenavn student-service i stedet for host:port. Dette vil bli håndtert internt av spring framework, eureka server og rest mal sammen.

Demo Av Tjenesten Oppdagelse og Ringer

nå starte skoletjenesten også. Alle tre tjenestene er startet. Sjekk eureka server-konsollen. Bothe student og skoletjenester må være registrert der.

Eureka konsoll med begge tjenester registrert

gå til nettleser og gå tilhttp://localhost:9098//getSchoolDetails/abcschool, det vil gi skolens detaljer for en bestemt skole abcschool detaljer. Vi har påberopt studenttjenesten internt. Svaret vil se ut i nettleseren:

Skoleservicerespons

Ting å sjekke om du står overfor noen feil

  1. Merknader @EnableEurekaServer og @EnableEurekaClient er hjertet i applikasjonsøkosystemet. Uten disse to tingene vil ikke fungere i det hele tatt.
  2. Pass på at eureka server-tjenesten kjører allerede når du starter config client service, ellers kan det ta litt tid å registrere, noe som kan skape forvirring under testing.

Oppsummering

Vi så hvor lett man kan distribuere service register og discovery server samt klienter effektivt. Spring framework opprettholder mange ting internt. Her bruker vi bare par merknader og svært minimal konfigurasjon for å oppnå hele tingene raskt.