服务注册到Eureka,须要提供服务自身的元信息(如:主机,端口等),Eureka经过一个服务从各个实例接受心跳信息。若是心跳接受失败或超过配置时间,实例会从注册中心移除。git
@Configuration @ComponentScan @EnableAutoConfiguration @EnableEurekaClient @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); } }
@EnableEurekaClient 声明一个注册实例,@EnableDiscoveryClient能够将实例在Eureka上生效。github
application.ymlweb
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
defaultZone 将注册中心链接提供给客户端,能够理解为一个心跳url。spring
服务元信息:缓存
监控的目的是当服务提供者不可用时,服务会从注册中心下掉。当服务可用时可进行注册提供服务;springboot
服务提供者配置:app
spring.application.name=compute-service server.port=9001 eureka.client.serviceUrl.defaultZone=http://localhost:5000/eureka/ eureka.client.healthcheck.enabled=true //表明开放服务健康检查功能 eureka.instance.statusPageUrlPath=/info eureka.instance.healthCheckUrlPath=/health
同时须要引用actuator模块,此模块在涉及到健康健康,状态信息都须要引用依赖。spring-boot
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
注册中心配置:fetch
server.port=5000 eureka.client.registerWithEureka=false eureka.client.fetchRegistry=false eureka.server.enableSelfPreservation=false //不开放自身缓存,开放的话,会将服务列表在本地缓存 eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
Eureka服务端没有后台存储,但注册的服务实例都须要发送心跳,保持自身在注册中心可用(可在内存存储状态),客户端一样保持一份备份,没必要每次请求都获取。ui
Eureka自己仍是太新了,在真实项目中服务发现自己是一个很是重要的组件模块,市面上也少见商用的文档,建议仍是实用比较传统的,有更好保证的解决方案。推荐使用Zookeeper。