W nagłówku zobaczyliśmy trzy buzzwords:
- Microservices
- Netflix Eureka
- Discovery (Registry)
Co to jest mikroserwis?
W prostych słowach, mikroserwis(y) są klastrami małych aplikacji, które współpracują ze sobą w koordynacji, aby zapewnić kompletne rozwiązanie.
Gdy mówimy o wielu małych aplikacjach działających niezależnie razem, wtedy wszystkie będą miały swoje własne adresy URL i porty. W tym scenariuszu byłoby bardzo kłopotliwe, aby utrzymać wszystkie te mikroserwisy, aby działać w synchronizacji, a co ważniejsze, z monitorowaniem. Ten problem zwiększy się wielokrotnie, gdy zaczniemy wdrażać load balancery.
Aby rozwiązać ten problem, potrzebujemy narzędzia, które będzie monitorować i utrzymywać rejestr wszystkich mikroserwisów w ekosystemie.
Czym jest Netflix Eureka?
Jest to narzędzie dostarczone przez Netflix, aby zapewnić rozwiązanie powyższego problemu. Składa się ono z serwera Eureka i klientów Eureka. Serwer Eureka jest sam w sobie mikroserwisem, do którego rejestrują się wszystkie inne mikroserwisy. Klienci Eureka są niezależnymi mikroserwisami. Zobaczymy, jak to skonfigurować w ekosystemie mikroserwisów.
Będę używał Spring Boot do stworzenia kilku mikroserwisów, które będą działać jako klienci Eureka, oraz serwera Discovery, który będzie serwerem Eureka. Oto kompletna struktura projektu:
Let’s Discuss the Eureka Discovery Server
To jest serwer Eureka, a do tego musimy dołączyć do projektu zależność Eureka. Poniżej znajduje się pom.xml dla Eureka Discovery Server.
Musimy również zaktualizować plik właściwości dla tego projektu, aby wskazać, że jest to serwer odkrywania, a nie klient.
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Aby powiązać aplikację odkrywania z konkretnym portem i nadać jej nazwę, musimy również dodać następujące elementy:
server.port=8000spring.application.name=DiscoveryServer
Jedną z ostatnich rzeczy do zrobienia jest dodanie adnotacji do aplikacji Spring Boot, aby umożliwić jej działanie jako serwer Eureka. Aby to zrobić, musimy dodać @EnableEurekaServer
.
Po uruchomieniu aplikacji zobaczymy UI dostarczony przez Eureka, aby wyświetlić listę wszystkich serwerów, które zostały zarejestrowane. Ale w tym momencie nie mamy żadnego!
Dodajmy teraz kilka mikroserwisów do ekosystemu i zarejestrujmy je na serwerze odkrywania. W tym celu musimy również dodać zależności wymagane w każdej usłudze i zarejestrować je na serwerze. Zobaczymy jak w szczegółach poniżej.
Utworzyłem trzy proste mikroserwisy (mikroserwis1, mikroserwis2, mikroserwis3) za pomocą Spring Boot i każdy z nich działa na swoim własnym porcie (8002, 8003 i 8004).
Jako klient powinien zarejestrować się do serwera, a dzieje się to w pliku właściwości, jak poniżej.
Główna aplikacja będzie miała adnotację @EnableEurekaClient
w każdej mikroserwisie.
Uruchom tę aplikację, aby działała na porcie 8004, a ona automatycznie zarejestruje się do serwera odkrywania. W podobny sposób utworzyłem dwie kolejne mikroserwisy i zarejestrowałem je na serwerze odkrywania.
Widzimy, że w ekosystemie działają trzy serwery i możemy monitorować stan tych serwerów.
Ułatwia to monitorowanie wszystkich serwerów i ich replik w przypadku, gdy używamy load balancera.
Mam nadzieję, że pomoże to w rozpoczęciu korzystania z serwera Discovery i klientów Eureka.