注册中心集群是两个项目,方便查看。
【1】注册中心配置
第一个注册中心配置application.yml
#注册中心1端口号
server:
port: 8000
#服务别名,集群时name名称必须和其他的注册中心的一致
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
service-url:
#注册中心地址,将自己注册到另一个注册中心去
defaultZone: http://${eureka.instance.hostname}:8001/eureka/
#是否将自己注册到注册中心,(集群的时候需要)
register-with-eureka: true
#是否检索服务信息
fetch-registry: true
第二个注册中心配置application.yml
#注册中心2端口号
server:
port: 8001
#服务别名,集群时name名称必须和其他的注册中心的一致
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
service-url:
#注册中心地址,将自己注册到另一个注册中心去
defaultZone: http://${eureka.instance.hostname}:8000/eureka/
#是否将自己注册到注册中心,(集群的时候需要)
register-with-eureka: true
#是否检索服务信息
fetch-registry: true
【2】会员服务配置application.yml
server:
port: 8020 #memberServer端口号
#服务别名
spring:
application:
name: member-server
eureka:
client:
registry-fetch-interval-seconds: 10 #拉取服务注册信息间隔(缺省为30s)
serviceUrl:
#将两个注册中心都写上
defaultZone: http://localhost:8000/eureka/,http://localhost:8001/eureka/
register-with-eureka: true
fetch-registry: true
订单服务的配置与会员服务的一致。只需添加注册中心地址即可。
启动两个注册中心和会员服务,订单服务。效果是:
8001端口注册中心的内容:
8000端口注册中心的内容:
可以发现,只有一个8001注册中心里的注册的服务是‘完整的’,而8000端口里面的没有会员服务与订单服务。这里要说明一下。注册中心是集群的情况下,一般只有一个注册中心是‘主注册中心’,而另外一个是‘辅注册中心’ (我有时会遇到两个注册中心都有完整的注册服务)。只有当主注册中心宕掉的时候,服务才会切换到辅注册中心去。
下面测试一下,关闭8001的服务。看下8000下面有没有完整的服务:
可以看出8001由于服务被关闭了,服务不可用。所有注册的服务转移到了8000上。这就是注册中心集群的效果