本节讲解基于Eureka的服务发现。
Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务,包含Server和Client两部分,Spring Cloud将它集成在子项目Spring Cloud Netflix中。
拓展阅读
理解跟我学Spring Cloud(Finchley版)-04-服务注册与服务发现-原理剖析后,我们来编写基于Eureka的服务发现——首先编写一个Eureka Server,然后将前文的微服务都注册到Eureka Server上。
1 加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
2 加注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
3 写配置
server:
port: 8761
eureka:
client:
# 是否要注册到其他Eureka Server实例
register-with-eureka: false
# 是否要从其他Eureka Server实例获取数据
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka/
TIPS
这里,大家可先不去探究 registerWithEureka
以及 fetchRegistry
究竟是什么鬼,笔者将在下一节为大家揭晓。
1 加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2 加注解
@SpringBootApplication
public class ProviderUserApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderUserApplication.class, args);
}
}
注意:早期的版本(Dalston及更早版本)还需在启动类上添加注解 @EnableDiscoveryClient
或 @EnableEurekaClient
,从Edgware开始,该注解可省略。
3 添加配置:
spring:
application:
# 指定注册到eureka server上的服务名称,对于电影微服务,本系列将名称设为microservice-consumer-movie
name: microservice-provider-user
eureka:
client:
service-url:
# 指定eureka server通信地址,注意/eureka/小尾巴不能少
defaultZone: http://localhost:8761/eureka/
instance:
# 是否注册IP到eureka server,如不指定或设为false,那就会注册主机名到eureka server
prefer-ip-address: true
1 依次启动Eureka Server以及用户微服务、电影微服务;
2 访问 http://localhost:8761
可观察到类似如下界面:
3 将用户微服务停止,可看到Eureka Server首页变成类似如下界面: