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
- Tech Stack a Runtime
- Co je to Netflix Eureka Server a Klienty?
- Eureka Service Registry Server
- Create Heureka Server
- Konfigurace Serveru
- Test Eureka Server
- Eureka Client-Student Service
- Vytvořit Eureka Klienta Projektu
- Konfigurace Klienta
- Přidat REST API
- Test klienta Eureka
- Eureka Klienta – Škola Služeb
- Vytvořit Eureka Klienta Projektu
- Konfigurace Klienta
- Přidat REST API, které spotřebovávají studentské služby REST API
- Demo vyhledávání a volání služby
- zkontrolujte, zda čelí chyba
- shrnutí
přehled
pro tento příklad Netflix Eureka vytvoříme tři mikroservisy.
- Eureka Service Registry Server-tato mikroservice bude poskytovat Služby registru a discovery server.
- 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.
- š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.
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.
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 @EnableEurekaServer
anotace 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.yml
src\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.yml
src\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.
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ř. Actuator
Web
Rest Repositories
Eureka Discovery
. Uveďte další souřadnice maven GAV a stáhněte si Projekt.
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.yml
src\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.
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
.
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ř. Actuator
Web
Rest Repositories
Eureka 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.yml
src\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.
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:
zkontrolujte, zda čelí chyba
- Anotace
@EnableEurekaServer
@EnableEurekaClient
jsou srdcem aplikace ekosystém. Bez těchto dvou věcí nebude fungovat vůbec. - 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.