Що таке Eureka Server та Eureka Client у мікросервісах на Spring Boot?

pic

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 для динамічного пошуку інших зареєстрованих сервісів.
  • Клієнти також можуть отримувати інформацію про сервіси для забезпечення балансування навантаження, відмовостійкості та масштабування.

Як це працює

  1. Реєстрація сервісу:
  • Кожен мікросервіс (Eureka Client) реєструє себе в Eureka Server, вказуючи ім’я додатку та метадані.
  1. Виявлення сервісу:
  • Eureka Clients запитують Eureka Server для пошуку інших сервісів за їх іменами.
  • Eureka Server відповідає списком екземплярів сервісів, які відповідають запитаному імені.
  1. Механізм "серцебиття" (Heartbeat Mechanism):
  • Eureka Clients періодично надсилають "серцебиття" до Eureka Server, щоб підтвердити, що вони живі.
  • Якщо сервіс не надсилає "серцебиття" протягом певного часу, він позначається як недоступний і видаляється з реєстру.

Додавання Eureka Server та Eureka Client до Spring Boot додатку

1. Налаштування Eureka Server

  1. Додайте залежність 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'
  1. Увімкніть 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

  1. Динамічне масштабування:
  • Сервіси можуть реєструватися або видалятися з реєстру в залежності від доступності.
  1. Стійкість:
  • Eureka Server розроблений для високої доступності з режимом самозбереження.
  1. Балансування навантаження:
  • Eureka Clients можуть отримувати всі екземпляри сервісу та розподіляти запити серед них.
  1. Моніторинг здоров'я:
  • Eureka періодично перевіряє здоров'я зареєстрованих сервісів.

Використання

  • Архітектура мікросервісів:
  • Динамічно виявляти та підключати сервіси без хардкодингу URL-адрес.
  • Балансування навантаження:
  • Використовувати Eureka разом із Ribbon або Spring Cloud LoadBalancer для балансування навантаження на стороні клієнта.
  • Толерантність до помилок:
  • Обробляти відмови сервісів шляхом перенаправлення запитів на здорові екземпляри.

Висновок

У додатку на Spring Boot Eureka Server виступає як центральний реєстр сервісів, тоді як Eureka Clients реєструють себе в ньому та динамічно виявляють інші сервіси. Така архітектура сприяє динамічному масштабуванню, стійкості до помилок і легкості обслуговування в середовищах мікросервісів.

Перекладено з: What is Eureka Server and Client in Spring boot Microservices??

Leave a Reply

Your email address will not be published. Required fields are marked *