springcloud(四):Eureka的配置详解
在Eureka的服务治理体系中,主要分为服务端和客户端两个不同的⾓⾊,服务端为服务注册中⼼,客户端为提供各个接⼝的微服务应⽤,这⾥介绍⼀下Eureka的配置。
Eureka服务端配置
在实际应⽤中,我们所做的配置内容都是对客户端进⾏的操作,⽽Eureka服务端更像⼀个现成的产品,⼤多数情况下我们不需要修改它的配置。
如果你想了解的话,可以去这个类中查看org.springframework.cloudflix.eureka.server.EurekaServerConfigBean,服务端的属性都是以eureka.server为前缀。
Eureka客户端的主要配置
服务注册相关的配置信息,包括服务注册中⼼的地址,服务获取的间隔时间、可⽤区域等。
服务实例相关的配置信息,包括服务实例的名称、IP地址、端⼝号、健康检查路径等。
服务注册类配置
springcloud实例关于服务注册类的配置信息可⽤通过org.springframework.cloudflix.eureka.EurekaClientConfigBean查看,这些配置信息前缀都是eureka.client。
private Map<String, String> serviceUrl = new HashMap<>();
其他配置
这些配置都以eureka.client开头
服务实例类配置
关于服务实例类的配置信息可以在org.springframework.cloudflix.eureka.EurekaInstanceConfigBean类查看,这些配置信息的前缀都是eureka.instance。
元数据
在org.springframework.cloudflix.eureka.EurekaInstanceConfigBean中的配置信息中,有⼀⼤部分内容是对服务实例元数据的配置,元数据就是指Eureka客户端在向服务注册中⼼发送注册请求时,⽤来描述⾃⾝服务信息的对象,其中包含了⼀些标准化的元数据,⽐如服务名称、实例名称、实例IP、实⼒端⼝等。
在使⽤Spring Cloud Eureka时,所有的配置信息都通过org.springframework.cloudflix.eureka.EurekaInstanceConfigBean进⾏加载,但在真正进⾏服务注册时还是会包装成comflix.appinfo.InstanceInfo对象发送给Eureka客户端。这两个类定义⾮常相似,在
comflix.appinfo.InstanceInfo类中Map<String, String> metadata = new ConcurrentHashMap<String, String>()是⾃定义的元数据信息,⽽其他则是标准化的元数据信息。
我们可以通过eureka.instance.<properties>=<value>的格式对标准化的元数据信息直接进⾏配置,其中<properties>就是EurekaInstanceConfigBean对象中的成员变量名。⽽对于⾃定义元数据,可以通过adataMap.<key>=<value>的格式进⾏配置,⽐如:
=shanghai
实例名配置
它是区分同⼀服务不同实例的唯⼀标识。在Netflix Eureka的原⽣实现中,默认是以主机名作为默认值,这样的设置使得在同⼀主机上⽆法启动多个相同的服务实例。所以在Spring Cloud Eureka中针对同⼀主机启动多个实例的情况,对实例名的默认命名做了更合理的扩展,采⽤如下规则
${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}
我们可以通过eureka.instance.instanceId来配置实例名。当我们在本地做负载均衡调试时,采⽤的是指定多个端⼝来启动同⼀服务的多个实例,但这样你会发现实例名其实还是⼀样的只是端⼝不⼀样,我们可以这样设置指定不同的实例名
eureka.instance.instanceId=${spring.application.name}:${random.int}
这样就可以通过不指定端⼝就启动同⼀服务的多个实例。
端点配置
在org.springframework.cloudflix.eureka.EurekaInstanceConfigBean类中,有⼀些URL的配置信息,如homePageUrl、statusPageUrl、healthCheckUrl。其中状态页和健康检查的URL默认是使⽤actuator提供的info和health端点。我们必须保证客户端的health端点是⼀个可以被注册中⼼正确访问到的地址,否则注册中⼼不会根据应⽤的健康检查来改变应⽤状态(仅当开启了healthcheck功能时,以该端点信息作为健康检查标准⽽不是⼼跳)。如果info端点不能正常访问,则在Eureka⾯板单击服务时不能访问到服务实例提供的信息接⼝。⼀般情况下我们不需要配置这些信息,如果你修改了info端点和health端点的路径,那么就需要修改这个配置了,只需要和actuator的做同样修改即可,⽐如加上相同的前缀、改为同样的新路径等。
eureka.instance.statusPageUrlPath=info端点的路径
eureka.instance.healthCheckUrlPath=health端点的路径
上述配置是使⽤相对路径进⾏配置,如果客户端应⽤以HTTPS的⽅式⽽不是HTTP的⽅式来暴露服务和监控端点时,要使⽤绝对路径。
除了前三个可能会修改外,其余使⽤默认配置就可以。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。