程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从单个主机注册Spring Boot Eureka Client的多个实例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从单个主机注册Spring Boot Eureka Client的多个实例?

开发过程中遇到从单个主机注册Spring Boot Eureka Client的多个实例的问题如何解决?下面主要结合日常开发的经验,给出你关于从单个主机注册Spring Boot Eureka Client的多个实例的解决方法建议,希望对你解决从单个主机注册Spring Boot Eureka Client的多个实例有所启发或帮助;

对于本地部署,请尝试 (如果使用基于Spring Cloud的安装程序,请为正确的yaml文件 )。它深深植根于Eureka服务器计算应用程序列表并比较PeerAwareInstanceRegistryImpl的InstanceInfo的方式中- 当没有更多具体数据(例如:实例元数据可用)时,它们尝试从主机名获取ID。

不过,我不建议将其用于AWS部署,因为搞乱instancEID会给您带来麻烦,让您难以确定哪个机器托管特定服务- 另一方面,我怀疑您是否会在一台计算机上托管两个相同的服务,对吗?

解决方法

更新

在自述这个回购已更新,以证明接受的答案的解决方案。

@H_618_16@

我正在根据此指南使用Spring Boot Eureka服务注册和发现的简单示例。

如果我启动一个客户端实例,它会正确注册,并且可以通过看到自己DiscoveryClient。如果我使用另一个名称启动另一个实例,它也可以正常工作。

但是,如果我启动两个具有相同名称的实例,则仪表板仅显示正在运行的一个实例,而DiscoveryClient仅显示第二个实例。

当我杀死第二个实例时,第一个实例可以通过仪表板和发现客户端再次看到。

以下是有关我正在执行的步骤以及所看到的内容的更多详细信息:

尤里卡服务器

启动服务器

cd eureka-server
mvn spring-boot:run

访问http://
localhost:8761的Eureka仪表板

请注意,还没有注册“实例”

尤里卡客户

启动客户端

cd eureka-client
mvn spring-boot:run

直接通过http:// localhost:8080
/访问客户端

/whoami终端将展示其应用程序名称和端口的客户端的自知之明

{
  "springApplicationName":"eureka-client","serverPort":"8080"
}

/instances端点将需要长达一分钟更新,但最终应该会显示所有的情况下,eureka-client已登记的尤里卡发现客户端。

[   
    {
      "host":"hostname","port":8080,"servicEID":"EUREKA-CLIENT","uri":"http://hostname:8080","secure":false   
    } 
]

您现在也可以再次访问Eureka dashoboard,并在其中列出。

启动另一个使用不同名称的客户

您可以通过执行以下操作看到另一个客户端将被注册:

cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081

/whoami终端将显示名称foo和端口8081

一分钟左右,/instances端点也将显示有关此foo实例的信息。

现在,在Eureka仪表板上,将注册两个客户。

自旋向上的另一端用 同样的 名字

现在尝试eureka-client通过仅重写port参数来生成另一个实例:

cd eureka-client
mvn spring-boot:run -Dserver.port=8082

/whoami端点http://localhost:8082显示了我们的期望。

一分钟左右,/instances端点现在还显示了在端口8082上运行的实例,但是由于某种原因,它没有显示在端口8080上运行的实例。

而且,如果我们检查/instances端点,http://localhost:8080我们现在也只会看到在8082上运行的实例(即使很明显,在8080上的实例也正在运行,因为这正是我们所要的。

Eureka仪表板仅显示1个eureka-client正在运行的实例。

这里发生了什么?

让我们尝试杀死运行在8082上的实例,看看会发生什么。

当我们/instances在8080上查询时,它仍然只在8082上显示实例。

但是一分钟后,这种情况消失了,我们再次在8080上看到了该实例。

问题是,为什么我们都看不到eureka-client它们都在运行的两个实例?

大佬总结

以上是大佬教程为你收集整理的从单个主机注册Spring Boot Eureka Client的多个实例全部内容,希望文章能够帮你解决从单个主机注册Spring Boot Eureka Client的多个实例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。