Articles

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

luomme kolme mikropalvelua tähän Netflix Eureka-esimerkkiin.

  1. Eureka Service Registry Server – tämä microservice tarjoaa palvelurekisterin ja discovery Serverin.
  2. 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.
  3. 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.

komponenttien vuorovaikutus keskenään

Tech Stack and Runtime

  • Java 1.8
  • Eclipse IDE
  • evätpilvievättalkoot evättalkoot

  • kevä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.

Eureka Server Service Project Generation

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 @EnableEurekaServerhuomautus 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.ymlsrc\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.ymlsrc\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.

Eureka Console Without any Client

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 ActuatorWebRest RepositoriesEureka Discovery. Anna muille Maven gav-koordinaateille ja lataa projekti.

Client Project Generation –
Student Microservice

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.ymlsrc\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.

Eureka console with Student service registered

nyt varmistamme, että /getStudentDetailsForSchool/{schoolname} päätepiste on valmiina. Siirry selaimeen ja mene , se antaa oppilaalle tiedot tietystä koulusta abcschool.

Student Service response

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 ActuatorWebRest RepositoriesEureka 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.ymlsrc\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-servicehost: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ä.

Eureka-konsoli, jossa molemmat palvelut on rekisteröity

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:

Koulupalvelun vastaus

asioita, jotka kannattaa tarkistaa, jos kohtaa virheen

  1. Annotations @EnableEurekaServer ja @EnableEurekaClient ovat sovellusekosysteemin sydän. Ilman näitä kahta asiaa ei tule toimimaan ollenkaan.
  2. 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.