如何在jhipster注册表上处理从网关到右微服务的请求?

如何在jhipster注册表上处理从网关到右微服务的请求?,jhipster,netflix-eureka,netflix-zuul,gateway,spring-cloud-netflix,Jhipster,Netflix Eureka,Netflix Zuul,Gateway,Spring Cloud Netflix,我们使用jhipster的微服务架构并生成了三个应用程序 uaa, 微服务, 网关。 然后在服务器上运行uaa和jhipster注册表,我们还有一些全栈开发人员 他们想同时开发网关和微服务 然后,他们将微服务和网关部署到位于远程服务器上的JHIPSterRegistry上。 由于微服务的名称相同,JHIPSTERRegistry无法处理从网关到服务器的请求 右微服务 如何管理此问题?共享注册表和网关可能是个坏主意。全栈开发人员应该在他们的PC上本地运行网关和注册表,如果你真的想共享一些东西,只共

我们使用jhipster的微服务架构并生成了三个应用程序 uaa, 微服务, 网关。 然后在服务器上运行uaa和jhipster注册表,我们还有一些全栈开发人员 他们想同时开发网关和微服务

然后,他们将微服务和网关部署到位于远程服务器上的JHIPSterRegistry上。 由于微服务的名称相同,JHIPSTERRegistry无法处理从网关到服务器的请求 右微服务


如何管理此问题?

共享注册表和网关可能是个坏主意。全栈开发人员应该在他们的PC上本地运行网关和注册表,如果你真的想共享一些东西,只共享UAA

如果您仍然想这样做,您可以从如何在网关上管理web API的多个版本中得到启发。 毕竟,在您的情况下,每个开发人员都希望使用自己的API版本

  • 在客户端,这可以通过URL或HTTP头来完成。这意味着您可以将客户端代码配置为需要特定版本
  • 然后,网关将使用请求中的这些额外信息来路由到与请求的版本匹配的服务
  • 只有当网关中的Zuul代理知道哪个服务实例支持哪个版本时,这才有效。这意味着每个实例必须将此版本信息添加到其Eureka注册表中
以下是您可以尝试的两个想法:

  • URL中的版本:定义spring配置文件(例如,
    user
    ),并使用它在
    bootstrap user.yml
  • 标题中的版本:向Eureka元数据映射添加一些属性(
    bootstrap.yml
    中的
    Eureka.instance.metadataMap
    ),并修改网关,使其使用此信息进行路由
  • 看一看,了解一下这是如何工作的,你会有更好的想法


    下面是一篇关于API版本控制的文章,它也可以启发您:

    我们也遇到了同样的问题,并通过使用变量作为微服务应用程序名称解决了我们的问题。然后使用此变量更改网关中的所有rest URL。 因此,每个开发人员只需将micro中application.yml中的appname更改为网关中app.constants.ts中的变量。

    感谢您的回答,运行4个应用程序(registry、uaa、microservice、gateway)会在开发人员的PC上占用更多资源。因此,我们在服务器上运行registry和uaa,在他们的PC上只运行microservice和gateway。我将尝试您建议的解决方案。如果您正确设置了应用程序的JVM内存选项,资源消耗不应该成为问题。若你们的电脑并没有太多的资源,那个么为什么要选择微服务体系结构呢?Jhipster提供了在服务器上运行注册表和uaa并从本地连接到服务器的能力。此外,与分布式系统相关的知识,我们认为这个解决方案更合理。谢谢,它也适用于我。我希望jhipster团队在微服务架构上做出这一改变。