Балансировка нагрузки микроуслуг с использованием Spring Cloud Netflix OSS

У меня есть микросервис, созданный с использованием Spring Boot и Netflix OSS. Я использовал центральный сервер конфигурации, Eureka и Zuul. Из-за масштабируемости несколько экземпляров сервисов работают на разных портах. Все экземпляры зарегистрированы в Eureka, но запросы поступают только на последний зарегистрированный сервер.

Как загрузить баланс услуг. Должен ли я использовать ленту в Zuul для баланса нагрузки? Пожалуйста, дайте мне знать, как добиться балансировки нагрузки в одной и той же службе, работающей в нескольких экземплярах.

Если есть фрагмент кода, требующий фрагмента кода, пожалуйста, опубликуйте также фрагмент кода.

Конфигурация приложения

spring.application.name=book-service
server.port=0

eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5
eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:10082/eureka/

#eureka.instance.metadataMap.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
eureka.instance.leaseRenewalIntervalInSeconds=5
eureka.instance.leaseExpirationDurationInSeconds=5

Эврика Конфиг

spring.application.name=discovery
server.port=10082

eureka.instance.hostname=localhost

eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:10082/eureka/
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

spring.session.store-type=hash-map

ZUUL Config

spring.application.name=gateway
server.port=10080

eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5

management.security.sessions=always

zuul.routes.book-service.path=/book-service/**
zuul.routes.book-service.sensitive-headers=Set-Cookie,Authorization
hystrix.command.book-service.execution.isolation.thread.timeoutInMilliseconds=600000

#zuul.routes.rating-service.path=/rating-service/**
#zuul.routes.rating-service.sensitive-headers=Set-Cookie,Authorization
#hystrix.command.rating-service.execution.isolation.thread.timeoutInMilliseconds=600000

zuul.routes.discovery.path=/discovery/**
zuul.routes.discovery.sensitive-headers=Set-Cookie,Authorization
zuul.routes.discovery.url=http://localhost:8082
hystrix.command.discovery.execution.isolation.thread.timeoutInMilliseconds=600000

logging.level.org.springframework.web.=debug
logging.level.org.springframework.security=debug
logging.level.org.springframework.cloud.netflix.zuul=debug

spring.session.store-type=hash-map

1 ответ

Правильная регистрация приложения в Eureka поможет.

Ниже записи будут однозначно зарегистрировать услуги с Eureka.

#eureka.instance.metadataMap.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
Другие вопросы по тегам