V titulku jsme viděli tři módní slova:
- Mikroslužby
- Netflix Eureka
- Discovery (Registry)
Co je to mikroslužba?
Zjednodušeně řečeno, mikroslužba (mikroslužby) jsou shluky malých aplikací, které spolupracují koordinovaně a poskytují kompletní řešení.
Když řekneme spousta malých aplikací běžících nezávisle na sobě, pak budou mít všechny své vlastní adresy URL a porty. V takovém případě by bylo velmi těžkopádné udržovat všechny tyto mikroslužby, aby běžely synchronizovaně, a co je důležitější, s monitorováním. Tento problém se mnohonásobně zvětší, když začneme implementovat load balancery.
Pro vyřešení tohoto problému potřebujeme nástroj, který bude monitorovat a udržovat registr všech mikroslužeb v ekosystému.
Co je Netflix Eureka?
Jedná se o nástroj poskytovaný společností Netflix, který má poskytnout řešení výše uvedeného problému. Skládá se ze serveru Eureka a klientů Eureka. Server Eureka je sám o sobě mikroslužbou, ke které se registrují všechny ostatní mikroslužby. Klienti Eureka jsou nezávislé mikroslužby. Uvidíme, jak to nakonfigurovat v ekosystému mikroslužeb.
Pomocí Spring Boot vytvořím několik mikroslužeb, které budou fungovat jako Eureka Clients, a Discovery Server, který bude Eureka Server. Zde je kompletní struktura projektu:
Podiskutujme o Eureka Discovery Serveru
Jedná se o Eureka Server, a proto musíme do projektu zahrnout závislost Eureka. Níže je uveden soubor pom.xml pro Eureka Discovery Server.
Také musíme aktualizovat soubor vlastností tohoto projektu, aby bylo uvedeno, že se jedná o discovery server a ne o klienta.
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Abychom mohli aplikaci discovery svázat s konkrétním portem a pojmenovat ji, musíme také přidat následující:
server.port=8000spring.application.name=DiscoveryServer
Ještě je třeba provést anotaci aplikace Spring Boot, aby byla povolena jako server Eureka. K tomu musíme přidat @EnableEurekaServer
.
Po spuštění aplikace uvidíme uživatelské rozhraní poskytované Eurekou pro seznam všech serverů, které se registrují. V tuto chvíli však nemáme žádnou!
Nyní přidáme do ekosystému několik mikroslužeb a zaregistrujeme je na serveru discovery. K tomu musíme také přidat závislosti požadované v každé službě a zaregistrovat je na serveru. Jak na to, si ukážeme v podrobnostech níže.
Vytvořil jsem tři jednoduché mikroslužby (mikroslužba1, mikroslužba2, mikroslužba3) se systémem Spring Boot a každá z nich běží na vlastním portu (8002, 8003 a 8004).
Jako klient by se měla zaregistrovat na server, a to se děje v souboru vlastností, jak je uvedeno níže.
Hlavní aplikace bude mít v každé mikroslužbě anotaci @EnableEurekaClient
.
Začněte tuto aplikaci spouštět na portu 8004 a ona se automaticky zaregistruje k serveru discovery. Podobným způsobem jsem vytvořil další dvě mikroslužby a zaregistroval je na serveru discovery.
Vidíme, že v ekosystému běží tři servery a můžeme sledovat i jejich stav.
To usnadňuje sledování všech serverů a jejich replik v případě, že používáme load balancer.
Doufám, že vám to pomůže začít používat Discovery Server a klienty pomocí Eureka.