SpringCloud 服务发现(Eureka)简介

Eureka 是 Netflix 开发的服务发现框架,SpringCloud 将它集成在自己的子项目 spring-cloud-netflix 中,实现 SpringCloud 的服务发现功能。
为什么要使用 Eureka,因为在一个完整的系统架构中,任何单点的服务都不能保证不会中断,因此我们需要服务发现机制,在某个节点中断后,其它的节点能够继续提供服务,从而保证整个系统是高可用的。
服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Erueka 采用的是客户端发现模式。

客户端服务发现的架构如图:

Eureka Server 会提供服务注册服务,各个服务节点启动后,会在 Eureka Server 中进行注册,这样 Eureka Server 中就有了所有服务节点的信息,并且 Eureka 有监控页面,可以在页面中直观的看到所有注册的服务的情况。同时 Eureka 有心跳机制,当某个节点服务在规定时间内没有发送心跳信号时,Eureka 会从服务注册表中把这个服务节点移除。Eureka 还提供了客户端缓存的机制,即使所有的 Eureka Server 都挂掉,客户端仍可以利用缓存中的信息调用服务节点的服务。Eureka 一般配合 Ribbon 进行使用,Ribbon 提供了客户端负载均衡的功能,Ribbon 利用从 Eureka 中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。
Eureka 通过心跳检测、健康检查、客户端缓存等机制,保证了系统具有高可用和灵活性。