Eureka Server та Eureka Client у Spring Boot
Eureka Server та Eureka Client є основними компонентами стека Netflix OSS, який широко використовується для реалізації виявлення сервісів у мікросервісних архітектурах. Вони є частиною Spring Cloud Netflix і засновані на реєстрі сервісів Eureka.
Що таке Eureka Server?
- Eureka Server є реєстром сервісів (service registry), де всі сервіси в екосистемі мікросервісів реєструють себе.
- Він зберігає метадані про кожен зареєстрований екземпляр сервісу, такі як хост, порт та статус здоров'я.
- Інші сервіси (Eureka Clients) можуть запитувати реєстр для динамічного пошуку та зв'язку з іншими сервісами.
Що таке Eureka Client?
- Eureka Client — це додаток на Spring Boot, який реєструється в Eureka Server.
- Він використовує Eureka Server для динамічного пошуку інших зареєстрованих сервісів.
- Клієнти також можуть отримувати інформацію про сервіси для забезпечення балансування навантаження, відмовостійкості та масштабування.
Як це працює
- Реєстрація сервісу:
- Кожен мікросервіс (Eureka Client) реєструє себе в Eureka Server, вказуючи ім’я додатку та метадані.
- Виявлення сервісу:
- Eureka Clients запитують Eureka Server для пошуку інших сервісів за їх іменами.
- Eureka Server відповідає списком екземплярів сервісів, які відповідають запитаному імені.
- Механізм "серцебиття" (Heartbeat Mechanism):
- Eureka Clients періодично надсилають "серцебиття" до Eureka Server, щоб підтвердити, що вони живі.
- Якщо сервіс не надсилає "серцебиття" протягом певного часу, він позначається як недоступний і видаляється з реєстру.
Додавання Eureka Server та Eureka Client до Spring Boot додатку
1. Налаштування Eureka Server
- Додайте залежність Eureka Server у ваш
pom.xml
абоbuild.gradle
.
Maven:
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
Gradle:
gradle
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
- Увімкніть Eureka Client у додатку, додавши анотацію
@EnableEurekaClient
до головного класу додатку
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
Налаштування файлу `application.yml` для Eureka Client
spring:
application:
name: my-client-service
```
eureka:
client:
service-url:
defaultZone: [http://localhost:8761/eureka/](http://localhost:8761/eureka/) # URL Eureka Server
Основні особливості Eureka
- Динамічне масштабування:
- Сервіси можуть реєструватися або видалятися з реєстру в залежності від доступності.
- Стійкість:
- Eureka Server розроблений для високої доступності з режимом самозбереження.
- Балансування навантаження:
- Eureka Clients можуть отримувати всі екземпляри сервісу та розподіляти запити серед них.
- Моніторинг здоров'я:
- Eureka періодично перевіряє здоров'я зареєстрованих сервісів.
Використання
- Архітектура мікросервісів:
- Динамічно виявляти та підключати сервіси без хардкодингу URL-адрес.
- Балансування навантаження:
- Використовувати Eureka разом із Ribbon або Spring Cloud LoadBalancer для балансування навантаження на стороні клієнта.
- Толерантність до помилок:
- Обробляти відмови сервісів шляхом перенаправлення запитів на здорові екземпляри.
Висновок
У додатку на Spring Boot Eureka Server виступає як центральний реєстр сервісів, тоді як Eureka Clients реєструють себе в ньому та динамічно виявляють інші сервіси. Така архітектура сприяє динамічному масштабуванню, стійкості до помилок і легкості обслуговування в середовищах мікросервісів.
Перекладено з: What is Eureka Server and Client in Spring boot Microservices??