前言:
众所周知,在微服务里面,业务系统之间有复杂的调用关系,他们之间需要有一个注册中心来管理。也就是服务发现代理,它应该能起到如下作用:
普通服务能使用服务发现代理进行注册。
服务客户端能通过服务发现代理查找所需的服务信息。
多个服务发现代理间能共享服务的注册信息。
服务发现代理能检测服务的健康信息。
在Spring Cloud中,有多个组件可以起到服务发现代理的作用,但一般比较常用、较专业、可用性较高的是Eureka,Eureka分为Server和Client,Server是注册中心,Client是注册/调用方。
服务注册管理器原理如下图所示:
1、建立eureka服务器
@EnableEurekaServer注解就可以让应用变为Eureka服务器,为其它微服务提供一个服务注册中心;
在application.properties配置文件中使用如下配置:
其中server.port配置eureka服务器端口号;
Eureka的配置属性都在开源项目spring-cloud-netflix-master中定义,在这个项目中有两个类EurekaInstanceConfigBean 和EurekaClientConfigBean,分别含有eureka.instance和eureka.client相关属性的解释和定义。从中可以看到,registerWithEureka表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false。fetchRegistry表示是否从eureka服务器获取注册信息,同上,这里不需要。defaultZone就比较重要了,是设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
2、建立eureka服务器
让服务使用eureka服务器,只需添加@EnableDiscoveryClient注解就可以了。在main方法所在的Application类中,添加@EnableDiscoveryClient注解.
其中defaultZone是指定eureka服务器的地址,无论是注册还是发现服务都需要这个地址。application.name是指定进行服务注册时该服务的名称。这个名称就是后面调用服务时的服务标识符。
Eureka服务器间的心跳可以参见:http://www.dongcoder.com/detail-15233.html和http://www.jianshu.com/p/1eaa7b16a82d