2.1 KiB
Eureka
Service Discovery: Eureka Client
服务发现是基于微服务体系结构的关键之一。在微服务体系结构中,如果手动配置每个客户端,这将会很困难,并且很脆弱。
Eureka是Netflix的服务发现的client和server。通过配置和部署,Eureka server可以实现高可用,每个server节点会向其他server节点复制已注册service的状态。
将Eureka Client包含到项目中
如果想要将Eureka Client包含到项目中,可以在依赖中添加如下starter:
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
向Eureka中注册
当一个client向eureka server中注册时,其提供了关于其自身的元数据(例如host,port,判断health状态的url等)。eureka从一个service的所有实例接收心跳信息,如果一个实例心跳报接收超过特定的时间,那么该实例将会从注册中心移除。
如下显示了一个简单的Eureka Client:
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello world";
}
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
在上述client项目中,如果classpath中存在spring-cloud-starter-netflix-eureka-client依赖,那么client应用将会自动在注册到eureka server中。
eureka server的信息需要手动配置:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
在上述的配置中,defaultZone是一个默认的回退值,用于向client提供service url默认值。
将spring-cloud-starter-netflix-eureka-client依赖包含在classpath中,既会将应用注册为eureka的一个实例,也会将应用变为eureka的一个客户端(可以查询注册中心并且获取其他service的信息)。
eureka实例的行为将会由eureka.instance.*来进行配置,但是当项目制定了spring.application.name时,使用默认值来控制eureka实例行为即可