小编mcw*_*bly的帖子

从单个主机注册Spring Boot Eureka Client的多个实例

UPDATE

此repo中的README 已更新,以在接受的答案中演示解决方案.


我正在使用基于本指南的Spring Boot Eureka服务注册和发现的简单示例.

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

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

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

以下是我正在采取的步骤以及我所看到的步骤的更多细节:

尤里卡服务器

启动服务器

cd eureka-server
mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)

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

请注意,尚未注册"实例"

尤里卡客户

启动客户端

cd eureka-client
mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)

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

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

{
  "springApplicationName":"eureka-client",
  "serverPort":"8080"
}
Run Code Online (Sandbox Code Playgroud)

/instances端点将需要长达一分钟更新,但最终应显示的所有实例eureka-client已与尤里卡发现客户端注册.

[   
    {
      "host":"hostname",
      "port":8080,
      "serviceId":"EUREKA-CLIENT",
      "uri":"http://hostname:8080",
      "secure":false   
    } 
]
Run Code Online (Sandbox Code Playgroud)

您现在也可以再次访问Eureka dashoboard,并在那里看到它.

使用其他名称启动另一个客户端

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

cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081
Run Code Online (Sandbox Code Playgroud)

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

在一分钟左右,/instances端点也将显示有关此foo …

java spring spring-boot netflix-eureka

8
推荐指数
2
解决办法
1万
查看次数

当你重新定义一个方法时它什么时候应该工作?

Ruby Koans中,about_open_classes.rb最后的测试是这样的:

class ::Integer
  def even?
    (self % 2) == 0
  end
end

def test_even_existing_built_in_classes_can_be_reopened
  assert_equal true, 1.even?
  assert_equal false, 2.even?
end
Run Code Online (Sandbox Code Playgroud)

似乎def even?没有做任何事情; 如果我改变方法,它似乎不起作用:

class ::Integer
  def even?
    (self % 2) != 0
  end
end
Run Code Online (Sandbox Code Playgroud)

测试仍然成功.

我认为这是因为even已经在Ruby中定义了.那是对的吗?为什么会这样?

ruby

2
推荐指数
1
解决办法
61
查看次数

标签 统计

java ×1

netflix-eureka ×1

ruby ×1

spring ×1

spring-boot ×1