Spring-Boot服务注册与发现
关于Eureka服务注册与发现的示例可以参见:http://blog.didispace.com/springcloud1/
服务注册管理器原理如下图所示:
1、建立eureka服务器
@EnableEurekaServer注解就可以让应用变为Eureka服务器,为其它微服务提供一个服务注册中心;
@SpringBootApplication @EnableEurekaServer public class EurekaServer { public static void main(String[] args) { SpringApplication.run(EurekaServer.class, args); } }
在application.properties配置文件中使用如下配置:
server.port=8761 eureka.instance.hostname=localhost eureka.client.registerWithEureka=false eureka.client.fetchRegistry=false eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
其中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注解.
eureka.client.serviceUrl.defaultZone=http\://localhost\:8761/eureka/ spring.application.name=simple-service
其中defaultZone是指定eureka服务器的地址,无论是注册还是发现服务都需要这个地址。application.name是指定进行服务注册时该服务的名称。这个名称就是后面调用服务时的服务标识符。
Eureka服务器间的心跳可以参见:http://www.dongcoder.com/detail-15233.html和http://www.jianshu.com/p/1eaa7b16a82d