我读到Eureka客户端的实例ID必须是唯一的,当我们希望运行同一个Eureka客户端的多个实例时,我们就添加了这个属性:
N
实例Id的意义是什么?上述内容如何重要?
答案 0 :(得分:7)
Eureka客户端具有应用ID 和实例ID 。 Ť的他 app ID是应用程序的名称,而实例ID是与客户端实例关联的唯一ID 。
这有助于 Eureka Server 在同一应用程序的不同客户端实例之间进行区分。在您的示例中,下面显示的行为您的应用程序设置了一个唯一的实例ID,格式为:<client host name>:<client app name>:<some random number>
eureka.instance.instance-id==${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${random.value}}
在下面显示的示例中,实例ID的格式为 - <host name>:<app id>:<port>
。
下面显示的Eureka REST操作将更改eureka客户端的状态,其应用ID为AUTHOR
,实例ID为10.16.6.76:author:8766
为OUT_OF_SERVICE
。
localhost:8761/eureka/apps/AUTHOR/10.16.6.76:author:8766/status?value=OUT_OF_SERVICE
如果您注意到,如果同时提供应用程序ID和实例ID,Eureka Server可以唯一地标识客户端。
答案 1 :(得分:2)
它用于唯一地标识多个服务的单个实例。如果您部署了同一个Spring引导应用程序的2x实例,则使用实例ID来区分它们。
可以在文档中找到PCF和AWS w / Instance ID的一些其他用例。
https://cloud.spring.io/spring-cloud-netflix/multi/multi__service_discovery_eureka_clients.html
上述属性只需要其他属性,将它们组合在一起。上面唯一的问题是如果在环境中找不到spring.application_instance_id
,它将使用random.value
代替。您可以根据自己的喜好进行覆盖,但它应该是唯一的。