Eureka的元数据有两种,分别是标准元数据和自定义元数据。
标准元数据指的是主机名、IP地址、端口号、状态页和健康检查等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用。自定义元数据可以使用eureka.instance.metadata-map配置,这些元数据可以在远程客户端中访问,但一般不会改变客户端的行为,除非客户端知道该元数据的含义。
下面笔者通过一个简单的示例,帮助大家更好地理解Eureka的元数据。
1.复制项目microservice-provider-user,将ArtifactId修改为microservice-provider-user-my-metadata。
2.修改application.yml,使用eureka.instance.metadata-map属性为该微服务添加应自定义的元数据,如下:
1.复制项目microservice-consumer-movie,将ArtifactId修改为microservice-consumermovie-understanding-metadata。
2.修改Controller:
使用DiscoveryClient.getInstances(serviceId),可查询指定微服务在Eureka上的实例列表。
测试
1.启动microservice-discovery-eureka。
2.启动microservice-provider-user-my-metadata。
3.启动microservice-consumer-movie-understanding-metadata。
4.访问 http://localhost:8761/eureka/apps 可查看Eureka的metadata。
5.访问 http://localhost:8010/user-instance ,可以返回类似如下的内容。
可以看到,使用DiscoveryClient的API获得了用户微服务的各种信息,其中包括了标准元数据和自定义元数据。例如IP、端口等信息都是标准元数据,用于服务之间的调用;同时,自定义的元数据my-metadata,也可通过客户端查询到,但是并不会改变客户端的行为。