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
- Teknisk Stabel og Runtime
- Hva Er Netflix Eureka Server og Klienter?
- Eureka Service Registry Server
- Opprett Eureka Server
- Serverkonfigurasjon
- Test Eureka Server
- Eureka Client-Student Service
- Opprett Eureka Client Project
- Klientkonfigurasjon
- Legg TIL REST API
- Test Eureka Client
- Eureka Client – School Service
- Opprett Eureka Client Project
- Klientkonfigurasjon
- Legg TIL REST API som bruker studenttjenestens REST API
- Demo Av Tjenesten Oppdagelse og Ringer
- Ting å sjekke om du står overfor noen feil
- Oppsummering
Oversikt
Vi vil lage tre microservices for Denne Netflix Eureka eksempel.
- Eureka Service Registry Server – denne microservice vil gi tjenesten registret og discovery server.
- 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.
- 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.
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 server
ogActuator
. Gi andre maven GAV koordinater og last ned prosjektet.
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@EnableEurekaServer
annotasjon 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.
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.Actuator
Web
Rest Repositories
Eureka 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.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.
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
.
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.Actuator
Web
Rest Repositories
Eureka 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.
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:
Ting å sjekke om du står overfor noen feil
- Merknader
@EnableEurekaServer
og@EnableEurekaClient
er hjertet i applikasjonsøkosystemet. Uten disse to tingene vil ikke fungere i det hele tatt. - 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.