Articles

Jarní Cloud Service Discovery s Netflix Eureka

Naučit vytvářet microservice, založené na Jaře cloud, na Netflix Eureka registru server a jak ostatní microservices (Eureka klienty) ji použít k zaregistrujte se a objevte služby volat své Api.

budeme používat Spring Boot založené Spring Cloud API. Budeme používat Netflix Eureka server pro vytváření serveru registru služeb a klientů Eureka, kteří se zaregistrují a objeví další služby pro volání REST API.

přehled

pro tento příklad Netflix Eureka vytvoříme tři mikroservisy.

  1. Eureka Service Registry Server-tato mikroservice bude poskytovat Služby registru a discovery server.
  2. Studentská Mikroservice – která poskytne některé funkce založené na entitě studenta. Bude to služba založená na odpočinku a co je nejdůležitější, bude to klientská služba eureka, která bude hovořit se službou eureka o registraci do registru služeb.
  3. školní Mikroservice-stejný typ jako studentská služba-pouze přidaná funkce je, že vyvolá studentskou službu s mechanismem vyhledávání služeb. K interakci s touto službou nebudeme používat absolutní adresu URL studentské služby.

zde je diagram interakce mezi výše uvedenými třemi službami.

Součást Interakce s ostatními

Tech Stack a Runtime

  • Java 1.8
  • Eclipse IDE
  • Jarní oblak
  • Jaro boot
  • Jarní Odpočinek
  • 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

Co je to Netflix Eureka Server a Klienty?

jak dnes víme, kolem Mikroservisů je spousta hybnosti. Přechod z Monolitického na Microservice architektura založená dává mnoho výhod pro budoucnost, pokud jde o udržovatelnost, škálovatelnost, vysoká dostupnost atd. Současně však existuje mnoho výzev i při této migraci. Jedním z nich je udržování jednotlivých adres mikroslužeb. Tento úkol může být nesmírně složitý – v závislosti na počtu služeb a jejich dynamické povaze. Pokud je distribuována celá infrastruktura a existuje také určitá replikace, pak se údržba těchto adres služeb stává obtížnější.

K vyřešení tohoto, v distribuované výpočty jsou tam je koncept s názvem ‚registraci Služby a discovery‘, kde jeden dedikovaný server je zodpovědný udržovat registr všech Microservice, že byl nasazen a odstraněny. To bude fungovat jako telefonní seznam všech ostatních aplikací / mikroslužeb.

Ber to jako vyhledávací službu, kde se mikroslužby (klienti) mohou zaregistrovat a objevit další registrované mikroslužby. Když klient microservice registrů s Eureka poskytuje metadata jako host, port a ukazatel zdraví, a tím umožňuje další microservices objevit. Server discovery očekává pravidelnou zprávu o tlukotu srdce z každé instance mikroservice. Pokud instance začne trvale selhávat při odesílání srdečního tepu, server discovery odstraní instanci ze svého registru. Tímto způsobem budeme mít velmi stabilní ekosystém Microservices spolupracovat mezi sebou, a na něj nebudeme muset udržovat ručně adresu jiných Microservice, což je skoro nemožný úkol, pokud měřítko nahoru/dolů je velmi časté, na vyžádání a my se používat virtuální hostitele na hostitele služby speciálně v prostředí cloudu.

Eureka Service Registry Server

pro vytvoření a spuštění serveru Eureka postupujte takto.

Create Heureka Server

Create Spring boot project from Spring Boot initializer portal with two dependences tj Eureka server a Actuator. Uveďte další souřadnice maven GAV a stáhněte si Projekt.

Eureka, Server, Služba, Projekt Generace

Rozbalte a importu projektu do Eclipse jako stávající maven projektu. V tomto kroku budou všechny potřebné závislosti staženy z úložiště maven.

otevřít SpringEurekaServerApplication třídu, která na jaře už má vytvořené ve stažených projektu a přidat do @EnableEurekaServeranotace na třídě.

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

Sestavte projekt znovu. S touto anotací bude tento artefakt fungovat jako registr microservice a discovery server.

Konfigurace Serveru

Vytvořit jeden soubor s názvem application.ymlsrc\main\resources adresář. Přidat tyto vlastnosti,

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

Vytvořit další soubor s názvem bootstrap.ymlsrc\main\resources adresář. Přidejte tyto vlastnosti –

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

Test Eureka Server

Spusťte aplikaci jako jarní spouštěcí aplikaci. Otevřete prohlížeč a přejděte na , měli byste vidět domovskou stránku serveru eureka, která vypadá níže.

Eureka Konzoli Bez Jakéhokoli Klienta

vezměte Prosím na vědomí, že v tuto chvíli žádné služby, je zde registrován, což se očekává, a jakmile budeme točit klienta služby, tento server bude automaticky aktualizovat s detaily klienta služby.

Eureka Client-Student Service

pro vytvoření a spuštění klienta Eureka se systémem student service postupujte takto.

Vytvořit Eureka Klienta Projektu

Vytvořit Jarní boot projekt z inicializátoru portál se čtyřmi závislostí, např. ActuatorWebRest RepositoriesEureka Discovery. Uveďte další souřadnice maven GAV a stáhněte si Projekt.

Klient Projektu Generace –
Student Microservice

Rozbalte a importu projektu do Eclipse jako stávající maven projektu.

přidat @EnableEurekaClient anotace na Spring boot aplikaci třídě přítomen v src složka. S touto anotací bude tento artefakt fungovat jako klient spring discovery a zaregistruje se na serveru eureka připojeném k této službě.

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

Konfigurace Klienta

Vytvořit jeden soubor s názvem application.ymlsrc\main\resources adresář a přidat pod řádky.

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

Přidat REST API

přidat jeden RestController a vystavit jeden koncový bod rest pro získání všech studentů podrobnosti pro konkrétní školu. Zde vystavujeme /getStudentDetailsForSchool/{schoolname} koncový bod, který slouží obchodnímu účelu. Pro jednoduchost, jsme tvrdě kódování podrobnosti studenta.

Student třída je jednoduché POJO.

Test klienta Eureka

spusťte tento projekt jako jarní spouštěcí aplikace. Nyní ověřte, zda byla tato služba automaticky zaregistrována na serveru Eureka. Přejděte na servisní konzoli Eureka a obnovte stránku. Nyní, pokud vše půjde dobře, uvidíme jednu položku pro studentskou službu v servisní konzoli eureka. To znamená, že jak Server Eureka, tak klient jsou si navzájem vědomi.

Eureka konzole s Studentské služby registrované

nyní Budeme ověřovat, že /getStudentDetailsForSchool/{schoolname} koncový bod je nahoru a běží. Přejděte do prohlížeče a přejděte na , poskytne podrobnosti o studentovi pro konkrétní školu abcschool.

Studentské Služby reakci

Eureka Klienta – Škola Služeb

Nyní budeme vytvářet školní službu, která bude registrovat sám s eureka server – a to se bude objevovat a uplatnit studentské-služby bez hardcoded cestu URL.

postupujte přesně podle kroků pro vytvoření studentské služby, pro vytvoření a spuštění klienta Eureka se systémem školní služby.

Vytvořit Eureka Klienta Projektu

Vytvořit Jarní boot projekt z inicializátoru portál se čtyřmi závislostí, např. ActuatorWebRest RepositoriesEureka Discovery. Uveďte další souřadnice maven GAV a stáhněte si Projekt.

Rozbalte a importujte Projekt do Eclipse jako existující projekt maven.

přidat @EnableEurekaClient anotace na Spring boot aplikaci třídě přítomen v src složka. S touto anotací bude tento artefakt fungovat jako klient spring discovery a zaregistruje se na serveru eureka připojeném k této službě.

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

Konfigurace Klienta

Vytvořit jeden soubor s názvem application.ymlsrc\main\resources adresář a přidat pod řádky. Tyto konfigurace jsou velmi podobné studentské službě kromě čísla portu a názvu služby.

Přidat REST API, které spotřebovávají studentské služby REST API

přidat jeden RestController a vystavit jeden koncový bod rest pro získání škole detaily. Tento koncový bod použije adresu URL ve stylu zjišťování služby pomocí názvu aplikace, místo toho úplnou adresu URL s host: port.

tímto způsobem se můžeme zbavit konkrétní konfigurace služby a můžeme dát službě Vyhledat odpovědnost vůči serveru eureka a rest šabloně zde uvedené. Můžeme také použít vyvažování zátěže (viz @LoadBalanced anotace) zde, pokud je pro stejnou službu spuštěno více instancí.

URL, které jsme použili, je . Jasně jsme pomocí pouze název služby student-service místo host:port. To bude řešeno interně spring framework, eureka server a rest template společně.

Demo vyhledávání a volání služby

Nyní spusťte také školní službu. Všechny tři služby jsou spuštěny. Zkontrolujte konzolu serveru eureka. Oběstudentské a školní služby musí být registrovány.

Eureka konzole s oběma služby registrované

Přejít na prohlížeč a přejděte na http://localhost:9098//getSchoolDetails/abcschool, bude to dát škole údaje pro konkrétní školní abcschool detaily. Interně jsme se dovolávali studentských služeb. Odpověď bude vypadat v prohlížeči:

Školní Služby Reakci

zkontrolujte, zda čelí chyba

  1. Anotace @EnableEurekaServer@EnableEurekaClient jsou srdcem aplikace ekosystém. Bez těchto dvou věcí nebude fungovat vůbec.
  2. ujistěte se, že v době spuštění služby config client je služba eureka server již spuštěna, jinak by registrace mohla nějakou dobu trvat, což by mohlo způsobit zmatek při testování.

shrnutí

viděli jsme, jak snadno lze efektivně nasadit registr služeb a discovery server i klienty. Spring framework udržuje spoustu věcí interně. Zde jsme jen pomocí pár anotací a velmi minimální konfiguraci k dosažení celé věci rychle.