Я разрабатываю микросервис, используя Spring Boot, который предоставляет конечную точку REST. Из-за масштабируемости мне приходится запускать несколько экземпляров этих служб на другом порту. Каковы будут конфигурации приложений, чтобы они могли регистрироваться в eureka, а запросы распределялись по нагрузке? Я использую облачную конфигурацию Spring, сервер Eureka и zuul.
Облако Spring, регистрирующее несколько экземпляров одной и той же службы
comment
Я думаю, что это должно работать с eureka, если вы запустите два экземпляра клиента eureka, что вам нужно сделать, это запустить его на разных портах. Eureka и Zuul достаточно умны, чтобы сбалансировать нагрузку. Также добавьте некоторый код, который вы пробовали, если он не работает. Этот вопрос слишком широк, чтобы ответить на него. Взгляните на этот stackoverflow.com/questions/36253363/
- person Grinish Nepal   schedule 02.06.2017
comment
но что, если мы хотим замаскировать несколько портов от клиентов? это означает, что мы хотим опубликовать наш сервис на одном порту и скрыть процедуру балансировки нагрузки от клиентов. но в серверной части входящие запросы распределяются между несколькими экземплярами на разных портах. как этого добиться?
- person mostafa.S   schedule 29.03.2019
Ответы (2)
Добавление следующих записей в файл свойств клиента поможет. Это для конфигурации Spring Cloud dalston
eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
person
Debopam
schedule
06.06.2017
но что, если мы хотим замаскировать несколько портов от клиентов? это означает, что мы хотим опубликовать наш сервис на одном порту и скрыть процедуру балансировки нагрузки от клиентов. но в серверной части входящие запросы распределяются между несколькими экземплярами на разных портах. как этого добиться?
- person mostafa.S; 29.03.2019
Клиент не будет взаимодействовать с сервисом напрямую. Клиент будет взаимодействовать через ZUUL или любой шлюз, который позаботится о балансировке нагрузки и маршрутизации. Шлюз ZUUL или API всегда будет работать на определенном порту, и клиент будет взаимодействовать со службами, используя этот конкретный порт.
- person Debopam; 30.03.2019
Я думаю, вы хотели зарегистрироваться на Eureka
вместо Config
сервера.
Чтобы зарегистрировать несколько экземпляров, которые могут работать на одном хосте, но прослушивать другой порт, вам нужно установить eureka.instance.metadataMap.instanceId
в уникальное значение, возможно, используя:
eureka.instance.metadataMap.instanceId=${spring.application.name}:${random.int}
person
ootero
schedule
02.06.2017
Но после добавления этого он по-прежнему показывает только последний зарегистрированный экземпляр в Eureka.
- person Debopam; 06.06.2017
Решение найдено eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
- person Debopam; 06.06.2017