Облако Spring, регистрирующее несколько экземпляров одной и той же службы

Я разрабатываю микросервис, используя Spring Boot, который предоставляет конечную точку REST. Из-за масштабируемости мне приходится запускать несколько экземпляров этих служб на другом порту. Каковы будут конфигурации приложений, чтобы они могли регистрироваться в eureka, а запросы распределялись по нагрузке? Я использую облачную конфигурацию Spring, сервер Eureka и zuul.


person Debopam    schedule 01.06.2017    source источник
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}:${spri‌​ng.application.insta‌​nce_id:${random.valu‌​e}}
person Debopam    schedule 06.06.2017
comment
но что, если мы хотим замаскировать несколько портов от клиентов? это означает, что мы хотим опубликовать наш сервис на одном порту и скрыть процедуру балансировки нагрузки от клиентов. но в серверной части входящие запросы распределяются между несколькими экземплярами на разных портах. как этого добиться? - person mostafa.S; 29.03.2019
comment
Клиент не будет взаимодействовать с сервисом напрямую. Клиент будет взаимодействовать через 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
comment
Но после добавления этого он по-прежнему показывает только последний зарегистрированный экземпляр в Eureka. - person Debopam; 06.06.2017
comment
Решение найдено eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}} - person Debopam; 06.06.2017