我读到过Eureka Clients的实例ID必须是唯一的,当我们想要运行多个相同Eureka Client的实例时,我们需要添加此属性:
eureka.instance.instance-id==${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${random.value}}
实例 ID 的意义是什么?上面的行与其有何关系?
我读到过Eureka Clients的实例ID必须是唯一的,当我们想要运行多个相同Eureka Client的实例时,我们需要添加此属性:
eureka.instance.instance-id==${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${random.value}}
实例 ID 的意义是什么?上面的行与其有何关系?
eureka.instance.instance-id==${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${random.value}}
在我的下面的示例中,实例ID的格式为- <主机名>:<应用程序ID>:<端口>
。
下面显示的Eureka REST操作将更改具有应用程序ID为AUTHOR
和实例ID为10.16.6.76:author:8766
的Eureka客户端的状态为OUT_OF_SERVICE
。localhost:8761/eureka/apps/AUTHOR/10.16.6.76:author:8766/status?value=OUT_OF_SERVICE
如果你注意到了,Eureka Server可以通过提供应用ID和实例ID来唯一地标识客户端。
它用于唯一标识多个服务的单个实例。例如,如果您部署了相同的Spring Boot应用程序的两个实例,则实例ID用于区分它们。
有关使用Instance ID和PCF、AWS的其他用例可以在文档中找到。
https://cloud.spring.io/spring-cloud-netflix/multi/multi__service_discovery_eureka_clients.html
上述属性只是将其他属性组合起来。唯一需要注意的是,如果在环境中找不到spring.application_instance_id
,则会使用random.value
。您可以随意覆盖,但应该是唯一的。