Eureka定义
Eureka 作为 Spring Cloud 框架的注册中心,与之对应的是 Dubbo 框架的Zookeeper。
Eureka的作用
Eureka的主要作用:就是解决服务注册,以及服务发现这两大核心功能。
首先服务注册:就是服务提供者(Provider) 向注册中心注册自己的地址。
其次服务发现:就是消费者(Consumer)从注册中心发现其他服务。
所有的服务都可以注册到Eureka上面,只需要提供服务名称,服务消费者可以从Eureka上获取到服务提供者的真实地址然后进行调用。
Eureka基本架构
上图简要描述了Eureka的基本架构,由3个角色组成:
1.Service Provider: 暴露服务的服务提供方。
2)Service Consumer:调用远程服务的服务消费方。
3)EureKa Server: 服务注册中心和服务发现中心。
Eureka运行原理
1.注册实例
当服务提供者启动时,会向注册中心发送请求,在注册中心注册实例。
2.拉取服务
消费者会把注册中心的整个注册表都全部拉取过来缓存到本地,当需要调用某一个服务时,根据缓存的注册信息直接调用服务。
3.定期更新
消费者每隔一段时间向注册中心发送心跳,注册中心会保存实例和地址的映射关系。
Eureka消费者会每隔30秒拉取一次注册表,更新注册信息,将获取到的信息缓存到本地。
4.自我保护
特殊情况,由于网络不稳定15秒内85%服务器出现心跳异常,一次收不到就算心跳一次。
会保护所有的注册信息不删除,就算3次没有收到心跳的情况也不会删除,网络恢复后可以自动退出保护模式。
Eureka工作流程
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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》