服务发现是基于微服务的体系结构的关键原则之一。手动配置每个客户端或某种形式的约定可能非常困难,而且非常脆弱。Eureka是Netflix服务发现服务器和客户端。可以将服务器配置和部署为高可用性,每个服务器将注册服务的状态复制到其他服务器。
如何引入Eureka客户
要在项目中包含Eureka客户端,请使用starter和group org.springframework.cloud 和artifact id spring-cloud-starter-netflix-eureka-client。有关使用当前的Spring Cloud发布系列设置构建系统的详细信息,请参阅Spring Cloud项目页面。
Eureka注册
当客户端向Eureka注册时,它提供关于自身的元数据,如主机和端口、健康指示器URL、主页等。Eureka从属于服务的每个实例接收心跳消息。如果心跳在可配置的时间表上失败,实例通常会从注册表中删除。
@Configuration
@ComponentScan
@EnableAutoConfiguration
@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);
}
}
(即完全正常的Spring引导应用程序)。通过在类路径中使用spring-cloud-starter-netflix-eureka-client,应用程序将自动注册到Eureka服务器。定位Eureka服务器需要配置。例子:
application.yml.
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
其中“defaultZone”是一个神奇的字符串回退值,它为任何不表示首选项(即它是一个有用的默认值)的客户机提供服务URL。
从环境中获取的默认应用程序名称(service ID)、虚拟主机和非安全端口是${spring.application.name}、${spring.application.name}和${server.port}。如果类路径上有spring-cloud-starter-netflix-eureka-client,应用程序就会同时成为Eureka“实例”(即它注册了自己)和“客户端”(即它可以查询注册表来定位其他服务)。实例行为由eureka.instance驱动。*配置键,但是如果您确保您的应用程序具有spring.application.name(这是Eureka服务ID或VIP的缺省值),那么缺省值是可以接受的。
有关可配置选项的更多细节,请参见EurekaInstanceConfigBean和