Eureka Metadata for Instances and Clients
eureka:
instance:
metadata-map:
zone: ABC # eureka可以理解的元数据,因为eureka中有这个zone的名字
mmzs: BBC # 不会影响客户端行为,因为eureka中没有mmzs这个名字,eureka不能理解这个元数据
不要在@PostConstruct方法或@Scheduled方法中使用EurekaClient(或任何可能尚未启动ApplicationContext的地方)。
官网文档:http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_why_is_it_so_slow_to_register_a_service
作为一个实例,还会涉及到一个默认的持续时间为30秒的注册表(通过客户端的Service URL)的周期性心跳。
直到实例、服务端和客户端在本地缓存中都具有相同的元数据(因此它可能会花费3个心跳周期),客户端才可发现服务。您可以通过设置eureka.instance.leaseRenewalIntervalInSeconds来改变周期时间;将其设置为小于30秒,加快客户端连接到其他服务端的过程。在生产中,最好是坚持使用默认,因为在服务器内部有一些计算,它们会对租赁续订期做出一些假设。
优先级:2>0>1
0、默认是读取配置
spring:
application:
# 建议大家都是用小写
name: microservice-provider-user
1、如该配置没有,那么就是unknown
2、还可以通过下面的配置:
# 这种配置和swagger没有冲突,而第0种配置可能会有冲突
eureka
instance
appname: USER-SERVICE-MMZS
当出现以下语句时:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
表明Eureka已经开启自我保护。
# 设为false,关闭自我保护主要
eureka.server.enable-self-preservation
# 清理间隔(单位毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms
# 开启健康检查(需要spring-boot-starter-actuator依赖)
eureka.client.healthcheck.enabled = true
# 租期更新时间间隔(默认30秒)
eureka.instance.lease-renewal-interval-in-seconds =10
# 租期到期时间(默认90秒)
eureka.instance.lease-expiration-duration-in-seconds =30
eureka:
server:
enableSelfPreservation: false
evictionIntervalTimerInMs: 4000
eureka:
instance:
leaseRenewalIntervalInSeconds: 10
leaseExpirationDurationInSeconds: 30
注: 在生产中,更改Eureka更新频率将打破服务器的自我保护功能,所以最好坚持使用默认值,因为在服务器内部有一些计算,他们对续约做出假设。
参考文档:https://github.com/spring-cloud/spring-cloud-netflix/issues/373
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ip-address}:${server.port}
注: 如果只是配置了eureka.instance.prefer-ip-address=true,而不配置eureka.instance.instance-id,那还是显示localhost,但ip地址是可以访问得了。
# 指定此实例的ip
eureka.instance.ip-address = 127.0.0.1
# 注册时使用ip而不是主机名
eureka.instance.prefer-ip-address = true
eureka.environment: 字符串
参考文档:
https://github.com/Netflix/eureka/wiki/Configuring-Eureka
2. Eureka DataCenter的配置
eureka.datacenter: cloud
参考文档:https://github.com/Netflix/eureka/wiki/Configuring-Eureka
这边说:配置-Deureka.datacenter=cloud,这样eureka将会知道是在AWS云上
3. 示例:
eureka:
datacenter: cloud
environment: product
参考文档:
https://github.com/spring-cloud/spring-cloud-netflix/issues/203