Ответ
Netflix Eureka — это реализация паттерна Service Discovery (Обнаружение сервисов) для микросервисной архитектуры.
Проблема, которую решает паттерн: В динамической среде микросервисов инстансы могут запускаться, останавливаться или менять адреса. Жесткая привязка клиентов к конкретным хостам (через конфигурационные файлы) становится неэффективной и ненадежной.
Как работает Eureka:
- Регистрация (Eureka Client): При запуске каждый микросервис (клиент) регистрирует себя в Eureka Server, отправляя свой сетевой адрес и метаданные.
- Обновление состояния (Heartbeat): Клиент периодически отправляет сигналы "сердцебиения", чтобы подтвердить свою доступность. Если сигналы прекращаются, сервер исключает инстанс из реестра.
- Запрос (Eureka Client): Когда сервису-потребителю (например, API Gateway) нужно вызвать другой сервис, он запрашивает у Eureka Server список доступных инстансов.
- Балансировка нагрузки: Клиентская библиотека (например, Spring Cloud LoadBalancer) может выбрать один инстанс из списка, реализуя клиентскую балансировку нагрузки (часто round-robin).
Пример конфигурации клиента в Spring Boot:
// application.yml
spring:
application:
name: order-service
eureka:
client:
service-url:
defaultZone: http://eureka-server:8761/eureka/
Ключевые преимущества:
- Отказоустойчивость: Автоматическое удаление нерабочих инстансов.
- Гибкость: Легкое добавление или масштабирование сервисов без изменения конфигурации потребителей.
- Децентрализованная балансировка: Нагрузка распределяется на стороне клиента.
Альтернативы: HashiCorp Consul, Apache ZooKeeper, встроенный механизм Kubernetes Services.