Articles

Spring Cloud Service Discovery with Netflix Eureka

Ismerje meg, hogyan hozhat létre microservice-t a Spring cloud alapján a Netflix Eureka registry server-en, és hogy más mikroszolgáltatások (Eureka kliensek) hogyan használják azt a szolgáltatások regisztrálásához és felfedezéséhez az API-k hívásához.

A Spring Boot alapú Spring Cloud API-t fogjuk használni. A Netflix Eureka server-t fogjuk használni a service registry server és az Eureka ügyfelek felépítéséhez, amelyek regisztrálják magukat, és más szolgáltatásokat fedeznek fel a REST API-k hívásához.

áttekintés

három mikroszolgáltatást hozunk létre ehhez a Netflix Eureka példához.

  1. Eureka Service Registry Server – Ez a mikroszolgáltatás biztosítja a service registry és discovery server szolgáltatást.
  2. Student Microservice – amely bizonyos funkciókat biztosít a hallgatói entitáson alapulva. Ez egy rest alapú szolgáltatás lesz, és ami a legfontosabb, egy eureka ügyfélszolgálat lesz, amely az eureka szolgáltatással fog beszélni, hogy regisztrálja magát a szolgáltatás nyilvántartásában.
  3. School Microservice-ugyanolyan típusú, mint a Student service-csak hozzáadott funkció az, hogy meghívja a Student service szolgáltatást a service look up mechanizmussal. Nem használjuk a hallgatói szolgáltatás abszolút URL-jét az adott szolgáltatással való interakcióhoz.

itt található a fent felsorolt három szolgáltatás közötti interakciós diagram.

komponensek kölcsönhatása egymással

Tech Stack and Runtime

  • Java 1.8
  • Eclipse IDE
  • Spring cloud
  • Spring Boot
  • Spring Rest
  • 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

mi az a Netflix Eureka szerver és kliens?

mint tudjuk, ezekben a napokban, van egy csomó lendület körül mikroszolgáltatások. A Monolitról a mikroszolgáltatás alapú architektúrára való áttérés számos előnnyel jár a jövőben a karbantarthatóság, a skálázhatóság, a magas rendelkezésre állás stb. Ugyanakkor a migráció során is sok kihívás van. Az egyik az egyedi mikroszolgáltatási címek fenntartása. Ez a feladat rendkívül összetett lehet-A szolgáltatások számától és dinamikus jellegétől függően. Ha a teljes infrastruktúra elosztva van, és van némi replikáció is, akkor a szolgáltatási címek fenntartása nehezebbé válik.

ennek megoldására az elosztott számítástechnikában létezik egy ‘Service registration and discovery’ nevű koncepció, ahol egy dedikált szerver felelős az összes telepített és eltávolított mikroszolgáltatás nyilvántartásának fenntartásáért. Ez úgy fog működni, mint az összes többi alkalmazás/mikroszolgáltatás telefonkönyve.

gondoljon rá úgy, mint egy keresési szolgáltatásra, ahol a mikroszolgáltatások (ügyfelek) regisztrálhatják magukat, és felfedezhetnek más regisztrált mikroszolgáltatásokat. Amikor egy ügyfél mikroszolgáltatás regisztrál az Eureka – nál, metaadatokat biztosít, például gazdagépet, portot és állapotjelzőt, így lehetővé teszi más mikroszolgáltatások számára annak felfedezését. A felderítőszerver rendszeres szívverési üzenetet vár minden mikroszolgáltatási példánytól. Ha egy példány folyamatosan nem küld szívverést, a felderítő kiszolgáló eltávolítja a példányt a rendszerleíró adatbázisából. Így egy nagyon stabil, egymással együttműködő mikroszolgáltatások ökoszisztémája lesz, ráadásul nem kell manuálisan karbantartanunk más mikroszolgáltatások címét, ami szinte lehetetlen feladat, ha a skála fel/le nagyon gyakori, igény szerint, és virtuális gazdagépet használunk a szolgáltatások speciálisan felhő környezetben történő üzemeltetésére.

Eureka Service Registry Server

kövesse az alábbi lépéseket az Eureka server létrehozásához és futtatásához.

Eureka Server létrehozása

Hozzon létre egy Spring boot projektet a Spring Boot initializer portálról két függőséggel, pl. Eureka serverés Actuator. Adjon meg más Maven gav koordinátákat, és töltse le a projektet.

Eureka Server Service Project Generation

csomagolja ki és importálja a projektet az Eclipse-be, mint meglévő maven projektet. Ebben a lépésben az összes szükséges függőség letöltésre kerül a maven repository-ból.

most nyissa meg aSpringEurekaServerApplication osztályt, amelyet a spring már létrehozott a letöltött projektben, és adja hozzá a@EnableEurekaServermegjegyzést az osztályhoz.

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); }}

Építsd meg újra a projektet. Ezzel a megjegyzéssel ez a műtermék úgy fog működni, mint a microservice registry és a discovery server.

szerver konfiguráció

Hozzon létre egyapplication.ymlnevű fájlt asrc\main\resources könyvtárban. Adja hozzá ezeket a tulajdonságokat –

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

Hozzon létre egy másik fájlt, amelynek neve bootstrap.yml a src\main\resources könyvtárban. Adja hozzá ezeket a tulajdonságokat –

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

tesztelje az Eureka szervert

indítsa el az alkalmazást tavaszi rendszerindító alkalmazásként. Nyissa meg a böngészőt, és lépjen a oldalra, látnia kell az eureka server kezdőlapját, amely alább néz ki.

Eureka konzol kliens nélkül

kérjük, vegye figyelembe, hogy ezen a ponton nincs regisztrálva olyan szolgáltatás, amely várható lenne, és amint felpörgetjük az ügyfélszolgálatot, ez a szerver automatikusan frissül a az ügyfél szolgáltatások.

Eureka Client – Student Service

kövesse ezeket a lépéseket az Eureka client running student service létrehozásához és futtatásához.

Eureka kliens projekt létrehozása

Hozzon létre egy tavaszi rendszerindító projektet az inicializáló portálról négy függőséggel, azaz ActuatorWebRest RepositoriesEureka Discovery. Adjon meg más Maven gav koordinátákat, és töltse le a projektet.

Client Project Generation –
Student Microservice

csomagolja ki és importálja a projektet az Eclipse-be meglévő maven projektként.

most adja hozzá a@EnableEurekaClientmegjegyzést a tavaszi rendszerindító alkalmazás osztályhoz, amely asrc mappában található. Ezzel a megjegyzéssel ez a műtermék úgy fog viselkedni, mint egy tavaszi felfedező kliens, és regisztrálja magát a szolgáltatáshoz csatolt eureka szerveren.

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); }}

Ügyfélkonfiguráció

Hozzon létre egy application.ymlnevű fájlt a src\main\resources könyvtárban, majd adja hozzá a sorok alá.

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

Add hozzá a REST API-t

most adj hozzá egy RestController és tegyél közzé egy rest végpontot az adott iskola összes diákadatának lekéréséhez. Itt a /getStudentDetailsForSchool/{schoolname} végpontot tárjuk fel az üzleti cél érdekében. Az egyszerűség kedvéért keményen kódoljuk a hallgatói részleteket.

Student osztály egy egyszerű POJO.

tesztelje az Eureka klienst

indítsa el ezt a projektet tavaszi rendszerindító alkalmazásként. Most ellenőrizze, hogy ezt a szolgáltatást automatikusan regisztrálták-e az Eureka szerveren. LÉPJEN az Eureka service console oldalra, és frissítse az oldalt. Most, ha minden jól megy, egy bejegyzést fogunk látni a hallgatói szolgáltatásról az eureka szervizkonzolban. Ez azt jelzi, hogy mind az Eureka szerver, mind az ügyfél tisztában van egymással.

Eureka konzol regisztrált hallgatói szolgáltatással

most ellenőrizzük, hogy a /getStudentDetailsForSchool/{schoolname} végpont készen állunk. Menj a böngészőbe, és menj a , megadja a tanuló adatait egy adott iskolához abcschool.

Student Service response

Eureka Client – School Service

most létrehozunk egy iskolai szolgáltatást, amely regisztrálja magát az eureka szerveren – és felfedezi és hívja student-szolgáltatás nélkül kódolt URL elérési utat.

kövesse a pontos lépéseket a hallgatói szolgáltatás létrehozásához, az Eureka client running school szolgáltatás létrehozásához és futtatásához.

Eureka kliens projekt létrehozása

Hozzon létre egy tavaszi rendszerindító projektet az inicializáló portálról négy függőséggel, azaz ActuatorWebRest RepositoriesEureka Discovery. Adjon meg más Maven gav koordinátákat, és töltse le a projektet.

csomagolja ki és importálja a projektet az Eclipse-be meglévő maven projektként.

most adja hozzá a@EnableEurekaClientmegjegyzést a tavaszi rendszerindító alkalmazás osztályhoz, amely asrc mappában található. Ezzel a megjegyzéssel ez a műtermék úgy fog viselkedni, mint egy tavaszi felfedező kliens, és regisztrálja magát a szolgáltatáshoz csatolt eureka szerveren.

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);}}

Ügyfélkonfiguráció

Hozzon létre egy application.ymlnevű fájlt a src\main\resources könyvtárban, majd adja hozzá a sorok alá. Ezek a konfigurációk nagyon hasonlítanak a hallgatói szolgáltatáshoz, kivéve a port számát és a szolgáltatás nevét.

Add REST API, amely fogyaszt student service REST API

most adjunk hozzá egyRestController és ki egy rest végpont szerzés iskola adatait. Ez a végpont a szolgáltatáskeresési stílus URL-jét fogja használni az alkalmazás nevével, ehelyett a teljes URL-t a host:port segítségével.

ily módon megszabadulhatunk a konkrét szolgáltatáskonfigurációtól, és a szolgáltatás look up felelősségét az itt megadott eureka szerverre és rest sablonra bízhatjuk. Terheléselosztást is alkalmazhatunk (lásd @LoadBalanced kommentár) itt, ha több példány fut ugyanazon szolgáltatáshoz.

az általunk használt URL a következő: . Nyilvánvaló, hogy csak a szolgáltatás nevét használjuk student-servicea host:port helyett. Ezt belsőleg a spring framework, az eureka server és a rest template fogja kezelni.

Demo szolgáltatás felfedezése és hívás

most indítsa el az iskolai szolgáltatást is. Mindhárom szolgáltatás elindult. Ellenőrizze az eureka szerver konzolt. A hallgatói és iskolai szolgáltatásokat ott kell regisztrálni.

Eureka konzol mindkét szolgáltatással regisztrálva

menj a böngészőbe, és menj a http://localhost:9098//getSchoolDetails/abcschool, ez megadja az iskola részleteit egy adott iskola abcschool részleteiről. Belsőleg igénybe vettük a hallgatói szolgáltatást. A válasz úgy néz ki, mint a böngészőben:

iskolai szolgáltatási válasz

A hibák ellenőrzése

  1. Megjegyzések @EnableEurekaServer és @EnableEurekaClient az alkalmazás ökoszisztéma szíve. E két dolog nélkül egyáltalán nem fog működni.
  2. győződjön meg arról, hogy a config client service indításakor az eureka server szolgáltatás már fut, különben eltarthat egy ideig a regisztráció, ami zavart okozhat a tesztelés során.

összefoglaló

láttuk, hogy milyen könnyen lehet telepíteni service registry és discovery server, valamint az ügyfelek hatékonyan. A tavaszi keretrendszer sok dolgot tart fenn belsőleg. Itt csak néhány kommentárt és nagyon minimális konfigurációt használunk az egész dolgok gyors eléréséhez.