Eureka详解(架构原理及功能流程)

Eureka详解(架构原理及功能流程)-mikechen

Eureka定义

Eureka 作为 Spring Cloud 框架的注册中心,与之对应的是 Dubbo 框架的Zookeeper。

 

Eureka的作用

Eureka的主要作用:就是解决服务注册,以及服务发现这两大核心功能。

首先服务注册:就是服务提供者(Provider) 向注册中心注册自己的地址。

其次服务发现:就是消费者(Consumer)从注册中心发现其他服务。

所有的服务都可以注册到Eureka上面,只需要提供服务名称,服务消费者可以从Eureka上获取到服务提供者的真实地址然后进行调用。

 

Eureka基本架构

Eureka详解(架构原理及功能流程)-mikechen

上图简要描述了Eureka的基本架构,由3个角色组成:

1.Service Provider: 暴露服务的服务提供方。

2)Service Consumer:调用远程服务的服务消费方。

3)EureKa Server: 服务注册中心和服务发现中心。

 

Eureka运行原理

1.注册实例

当服务提供者启动时,会向注册中心发送请求,在注册中心注册实例。

 

2.拉取服务

消费者会把注册中心的整个注册表都全部拉取过来缓存到本地,当需要调用某一个服务时,根据缓存的注册信息直接调用服务。

 

3.定期更新

消费者每隔一段时间向注册中心发送心跳,注册中心会保存实例和地址的映射关系。

Eureka消费者会每隔30秒拉取一次注册表,更新注册信息,将获取到的信息缓存到本地。

 

4.自我保护

特殊情况,由于网络不稳定15秒内85%服务器出现心跳异常,一次收不到就算心跳一次。

会保护所有的注册信息不删除,就算3次没有收到心跳的情况也不会删除,网络恢复后可以自动退出保护模式。

 

Eureka工作流程

Eureka详解(架构原理及功能流程)-mikechen

Eureka的完整工作流程,大致分为如下10步:

1、Eureka Server 启动成功,等待服务端注册,在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表;

2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务;

3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常;

4、当 Eureka Server 90s 内没有收到 Eureka Client 的心跳,注册中心则认为该节点失效,会注销该实例;

5、单位时间内 Eureka Server 统计到有大量的 Eureka Client 没有上送心跳(15秒内85%服务器出现心跳异常),则认为可能为网络异常,进入自我保护机制;

6、当 Eureka Client 心跳请求恢复正常之后,Eureka Server 自动退出自我保护模式;

7、Eureka Client 定时全量或者增量从注册中心获取服务注册表,并且将获取到的信息缓存到本地;

8、服务调用时,Eureka Client 会先从本地缓存找寻调取的服务,如果获取不到,先从注册中心刷新注册表,再同步到本地缓存;

9、Eureka Client 获取到目标服务器信息,发起服务调用;

10、Eureka Client 程序关闭时向 Eureka Server 发送取消请求,Eureka Server 将实例从注册表中删除。

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法