sping cloud 中eureka高可用注册中心配置理解–为什么注册中心要互相注册
注册中心peer1:
spring.application.name=spring-cloud-eureka
server.port=1111
# 表示是否将自己注册到Eureka Server,默认为true。
# eureka.client.register-with-eureka=false
# 表示是否从Eureka Server获取注册信息,默认为true。
# eureka.client.fetch-registry=false
# 设置与Eureka Server交互的地址
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
注册中心peer2:
spring.application.name=spring-cloud-eureka
server.port=1112
# 表示是否将自己注册到Eureka Server,默认为true。
# eureka.client.register-with-eureka=false
# 表示是否从Eureka Server获取注册信息,默认为true。
# eureka.client.fetch-registry=false
# 设置与Eureka Server交互的地址
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
服务提供者:
server.port=8081
spring.application.name=hs
eureka.instance.prefer-ip-address=true
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
服务消费者:
server.port=9000
spring.application.name=ribbon-customer
# 表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=false
# 表示是否从Eureka Server获取注册信息,默认为true。
#eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
看服务提供者的配置,感觉服务提供者已经分别注册到peer1、peer2中了,为什么注册中心peer1,peer2还要互相注册呢?其实应该这样理解,服务提供者只是注册到了peer1中,peer2是从peer1中复制的,只有peer1挂了以后,服务才会直接注册到 peer2中。
服务消费者也同理,先从peer1拉取服务,当peer1挂了后,从peer2拉取。
总结:服务提供者与消费者中的配置eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/ 是有优先顺序的,当第一个正常时就不会使用第二个。只有注册中心互相注册,服务列表才会在各注册中心同步。