Spring Cloud Service Discovery with Netflix Eureka
Opi luomaan Spring Cloudiin perustuva microservice Netflixin Eureka registry server-palvelimelle ja miten muut microservices (Eureka-asiakkaat) käyttävät sitä rekisteröityäkseen ja löytääkseen palveluita soittaakseen Sovellusliittymiinsä.
käytämme Spring Boot-pohjaista Spring Cloud API: a. Käytämme Netflixin Eureka-palvelinta palvelurekisteripalvelimen ja Eureka-asiakkaiden rakentamiseen, jotka rekisteröivät itsensä ja löytävät muita palveluita REST-sovellusliittymiä varten.
- yleiskatsaus
- Tech Stack and Runtime
- mikä on Netflixin Eureka-palvelin ja asiakkaat?
- Eureka Service Registry Server
- Create Eureka Server
- Palvelinkokoonpano
- Test Eureka Server
- Eureka Client – Student Service
- Create Eureka Client Project
- Asiakaskokoonpano
- lisää REST API
- Test Eureka Client
- Eureka Client – School Service
- Create Eureka Client Project
- Asiakaskokoonpano
- lisää REST API, jotka kuluttavat oppilashuollon REST API: n
- demot palvelun löytämisestä ja soittamisesta
- asioita, jotka kannattaa tarkistaa, jos kohtaa virheen
- Yhteenveto
yleiskatsaus
luomme kolme mikropalvelua tähän Netflix Eureka-esimerkkiin.
- Eureka Service Registry Server – tämä microservice tarjoaa palvelurekisterin ja discovery Serverin.
- Student Microservice – joka antaa jonkin verran toiminnallisuutta perustuen Opiskelijakokonaisuuteen. Se on lepopohjainen palvelu ja mikä tärkeintä, se on eureka-asiakaspalvelu, joka keskustelee eureka-palvelun kanssa rekisteröityäkseen palvelurekisteriin.
- School Microservice – samantyyppinen kuin opiskelijapalvelu – vain lisäominaisuus on, että se vetoaa Opiskelijapalveluun palvelun look up-mekanismilla. Emme käytä opiskelijapalvelun absoluuttista URL-osoitetta vuorovaikutuksessa kyseisen Palvelun kanssa.
tässä on yllä lueteltujen kolmen palvelun vuorovaikutuskaavio.
Tech Stack and Runtime
- Java 1.8
- Eclipse IDE
- kevättalkoot
evätpilvievättalkoot evättalkoot
aven
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
mikä on Netflixin Eureka-palvelin ja asiakkaat?
kuten tiedämme näinä päivinä, Mikropalveluiden ympärillä on paljon vauhtia. Siirtyminen monoliittisesta palvelupohjaiseen arkkitehtuuriin tarjoaa monia etuja tulevaisuuden kannalta ylläpidettävyyden, skaalautuvuuden, korkean käytettävyyden jne.kannalta. Samaan aikaan on kuitenkin monia haasteita myös tätä muuttoa tehdessä. Yksi niistä on ylläpitää yksittäisiä Mikropalvelujen osoitteita. Tämä tehtävä voi olla erittäin monimutkainen – riippuen palvelujen määrästä ja niiden dynaamisesta luonteesta. Jos koko infrastruktuuri jaetaan ja myös kopioidaan, tämän palveluosoitteen ylläpitäminen vaikeutuu.
tämän ratkaisemiseksi hajautetussa tietojenkäsittelyssä on olemassa käsite ”Service registration and discovery”, jossa yksi dedikoitu palvelin on vastuussa kaikkien käyttöön otettujen ja poistettujen Mikropalveluiden rekisterin ylläpidosta. Tämä toimii kuin puhelinluettelo kaikki muut sovellukset / mikropalvelut.
ajattele sitä hakupalveluna, jossa mikropalvelut (asiakkaat) voivat rekisteröityä ja löytää muita rekisteröityjä mikropalveluja. Kun asiakkaan microservice rekisteröityy Eurekaan, se tarjoaa metatietoja, kuten host -, port-ja health indicator-palvelun, jolloin muut mikroservut voivat löytää sen. Discovery server odottaa säännöllisesti syke viestin kunkin microservice instance. Jos instanssi alkaa jatkuvasti jättää lähettämättä sykettä, discovery server poistaa instanssin rekisteristään. Tällä tavoin meillä on erittäin vakaa ekosysteemi Microservices yhteistyötä keskenään, ja sen lisäksi meidän ei tarvitse manuaalisesti ylläpitää muiden Microservices, joka on lähes mahdoton tehtävä, jos mittakaava ylös/alas on hyvin usein, on demand ja käytämme virtual host isännöidä palveluja erityisesti pilviympäristössä.
Eureka Service Registry Server
seuraa näitä ohjeita luodaksesi ja suorittaaksesi Eureka Serverin.
Create Eureka Server
Create a Spring boot project from Spring Boot initializer portal with two dependencies so. Eureka server
ja Actuator
. Anna muille Maven gav-koordinaateille ja lataa projekti.
Pura ja tuo projekti Eclipse-projektiin olemassa olevana maven-projektina. Tässä vaiheessa kaikki tarvittavat riippuvuudet Ladataan Maven repositorysta.
nyt avataan SpringEurekaServerApplication
Luokka, jonka kevät on jo luonut ladatussa projektissa ja lisätään @EnableEurekaServer
huomautus luokalle.
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); }}
Rakenna projekti vielä kerran. Tämän huomautuksen, tämä esine toimii kuin microservice registry ja discovery server.
Palvelinkokoonpano
Luo application.yml
src\main\resources
hakemistoon. Lisää nämä ominaisuudet –
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
luo toinen tiedosto bootstrap.yml
src\main\resources
hakemistoon. Lisää nämä ominaisuudet –
spring: application: name: eureka cloud: config: uri: ${CONFIG_SERVER_URL:http://localhost:8888}
Test Eureka Server
Käynnistä sovellus jousenkäynnistyssovelluksena. Avaa selain ja mene , sinun pitäisi nähdä eureka-palvelimen kotisivu, joka näyttää alla.
huomaa, että tässä vaiheessa ei ole rekisteröity palvelua, jota odotetaan ja kun me pyöräytämme asiakaspalvelut, tämä palvelin päivittyy automaattisesti tiedot asiakaspalvelusta.
Eureka Client – Student Service
seuraa näitä ohjeita luodaksesi ja ajaaksesi Eureka client-palvelua.
Create Eureka Client Project
Create a Spring boot project from initializer portal with four dependencies eli Actuator
Web
Rest Repositories
Eureka Discovery
. Anna muille Maven gav-koordinaateille ja lataa projekti.
Pura ja tuo projekti Eclipseen olemassa olevana maven-projektina.
Lisää nyt @EnableEurekaClient
annotation on Spring boot application class present in src
folder. Tällä merkinnällä tämä esine toimii kuin spring discovery-asiakas ja rekisteröityy tähän palveluun liitetylle eureka-palvelimelle.
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); }}
Asiakaskokoonpano
Luo application.yml
src\main\resources
hakemistoon ja lisää rivien alle.
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
lisää REST API
Lisää nyt yksi RestController
ja paljasta yksi rest endpoint saadaksesi kaikki oppilastiedot tiettyyn kouluun. Tässä altistamme /getStudentDetailsForSchool/{schoolname}
päätepisteen palvelemaan liiketoiminnan tarkoitusta. Yksinkertaisuuden vuoksi olemme kovia koodaamaan opiskelijatietoja.
Student
Luokka on yksinkertainen POJO.
Test Eureka Client
aloita tämä projekti spring boot-sovelluksena. Varmista nyt, että tämä palvelu on rekisteröity Eureka-palvelimelle automaattisesti. Siirry Eureka – palvelukonsoliin ja päivitä sivu. Jos kaikki menee hyvin, näemme yhden merkinnän opiskelijapalveluun eureka – palvelukonsolissa. Tämä osoittaa, että sekä Eureka-palvelin että asiakas tuntevat toisensa.
nyt varmistamme, että /getStudentDetailsForSchool/{schoolname}
päätepiste on valmiina. Siirry selaimeen ja mene , se antaa oppilaalle tiedot tietystä koulusta
abcschool
.
Eureka Client – School Service
nyt luomme koulupalvelun, joka rekisteröityy eureka Serverille – ja se löytää ja vedota opiskelijapalveluun ilman koodattua url-polkua.
noudata tarkkoja ohjeita opiskelijapalvelun luomiseksi, jotta voit luoda ja ajaa myös Koulupalvelua pyörittävää Eureka client-palvelua.
Create Eureka Client Project
Create a Spring boot project from initializer portal with four dependencies eli Actuator
Web
Rest Repositories
Eureka Discovery
. Anna muille Maven gav-koordinaateille ja lataa projekti.
Pura ja tuo projekti Eclipseen olemassa olevana Maven-projektina.
Lisää nyt @EnableEurekaClient
annotation on Spring boot application class present in src
folder. Tällä merkinnällä tämä esine toimii kuin spring discovery-asiakas ja rekisteröityy tähän palveluun liitetylle eureka-palvelimelle.
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);}}
Asiakaskokoonpano
Luo application.yml
src\main\resources
hakemistoon ja lisää rivien alle. Nämä kokoonpanot ovat hyvin samanlaisia kuin opiskelijapalvelu paitsi portin numero ja palvelun nimi.
lisää REST API, jotka kuluttavat oppilashuollon REST API: n
Lisää nyt yksi RestController
ja paljasta yksi rest endpoint koulun tietojen saamiseksi. Tämä päätepiste käyttää palvelun löytämisen tyylistä URL-osoitetta sovelluksen nimen avulla, sen sijaan täyttä URL-osoitetta, jossa on isäntä: portti.
näin pääsemme eroon tietystä palvelukokonaisuudesta ja voimme antaa palvelun etsinnän vastuun täällä tarjotulle eureka-palvelimelle ja rest-mallille. Voimme myös soveltaa kuormantasausta (katso @LoadBalanced
huomautus) Tässä, jos useat esiintymät ovat käynnissä samassa palvelussa.
käyttämämme URL on . On selvää, että käytämme vain palvelunimeä
student-service
host:port
. Tämän hoitavat sisäisesti spring framework, eureka server ja rest template yhdessä.
demot palvelun löytämisestä ja soittamisesta
aloittavat nyt myös koulupalvelun. Kaikki kolme palvelua käynnistetään. Tarkista eureka – palvelinkonsoli. Opiskelija-ja koulupalvelut on rekisteröitävä siellä.
Siirry selaimeen ja siirry http://localhost:9098//getSchoolDetails/abcschool, se antaa koulun tiedot tietyn koulun abcschool tiedot. Olemme vedonneet opiskelijapalveluun sisäisesti. Vastaus näyttää samalta kuin selaimessa:
asioita, jotka kannattaa tarkistaa, jos kohtaa virheen
- Annotations
@EnableEurekaServer
ja@EnableEurekaClient
ovat sovellusekosysteemin sydän. Ilman näitä kahta asiaa ei tule toimimaan ollenkaan. - varmista config-asiakaspalvelun käynnistämisen aikaan, että Eureka-palvelinpalvelu on jo käynnissä, muuten rekisteröityminen voi kestää jonkin aikaa, mikä saattaa aiheuttaa sekaannusta testauksen aikana.
Yhteenveto
näimme, kuinka helposti palvelurekisterin ja discovery Serverin sekä asiakkaiden käyttöönotto onnistuu tehokkaasti. Kevään puitteet ylläpitävät monia asioita sisäisesti. Täällä olemme vain käyttämällä pari huomautusta ja hyvin minimaalinen kokoonpano saavuttaa koko asiat nopeasti.