как обработать запрос от шлюза к нужному микросервису в реестре jhipster? - PullRequest
2 голосов
/ 02 февраля 2020

мы использовали микросервисную архитектуру jhipster и сгенерировали три приложения uaa, microservice, gateway. затем запустите реестр uaa и jhipster на сервере, также у нас есть несколько разработчиков полного стека, которые хотят одновременно разрабатывать и шлюз, и микросервис.

затем они развертывают свой микросервис и шлюз на jhipsterRegistery, который расположен на удаленном сервере. Из-за того же названия микросервисов jhipsterregistery не может обрабатывать запросы от шлюза к нужному микросервису

как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

У нас была та же проблема, и мы решили эту проблему, используя переменную в качестве имени приложения микросервиса. Затем изменил все остальные URL в шлюзе с помощью этой переменной. Поэтому каждому разработчику просто нужно изменить имя приложения в application.yml в micro так же, как и переменную в app.constants.ts в шлюзе.

0 голосов
/ 02 февраля 2020

Совместное использование реестра и шлюза, вероятно, плохая идея. Разработчики полного стека должны запускать шлюз и реестр локально на своем P C, предоставляйте общий доступ к UAA, только если вы действительно хотите поделиться чем-то.

Если вы все еще хотите это сделать, вас может вдохновить управление несколькими версиями веб-API на шлюзе. В конце концов, в вашем случае каждый разработчик хочет использовать свою собственную версию API.

  • Со стороны клиента это можно сделать через URL или через заголовок HTTP. Это означает, что вы можете настроить клиентский код так, чтобы ему требовалась указанная c версия.
  • Эта дополнительная информация в запросе затем использовалась бы шлюзом для маршрутизации в службу, которая соответствует запрошенной версии.
  • Это работает только в том случае, если прокси-сервер Zuul в шлюзе знает, какая версия поддерживается каким экземпляром службы. Это означает, что каждый экземпляр должен добавить эту информацию о версии в свою регистрацию Eureka.

Вот две идеи, которые вы можете попробовать:

  1. версия в URL: определите профиль пружины (например, user) и используйте его для установки другого имени приложения. в bootstrap-user.yml
  2. версия в заголовке: добавьте некоторое свойство в карту метаданных Eureka (eureka.instance.metadataMap в bootstrap.yml) и измените шлюз, чтобы он использовал эту информацию для маршрутизации.

Ознакомьтесь с Документами по серверу Spring Cloud Eureka , чтобы получить хорошее представление о том, как это работает, и у вас могут быть еще лучшие идеи.

Вот статья о версиях API, которая может вдохновить Вы тоже: https://tech.asimio.net/2017/03/06/Multi-version-Service-Discovery-using-Spring-Cloud-Netflix-Eureka-and-Ribbon.html

...