
Eureka是Spring Cloud的注册中心,也是微服务的核心组件,下面我就全面来详解Eureka@mikechen
Eureka定义
Eureka是 Spring Cloud 的服务治理框架,用于实现分布式系统中的服务注册与发现,与之对应的是 Dubbo 框架的Zookeeper。
Eureka的作用
Eureka的主要作用就是解决服务注册与发现,允许服务在启动时向 Eureka 服务器注册自己的信息。
比如:包括服务名称、网络地址等,其他服务可以通过查询 Eureka 服务器获取可用服务的信息。
Eureka架构
Eureka 架构主要包括:Eureka Server 和 Eureka Client 等组件,如下图所示:

Eureka Server 作为服务注册中心,接收来自服务提供方的注册请求,并维护所有注册的服务实例信息。
同时,Eureka Server 也作为服务发现中心,允许服务消费方查询和发现其他服务的地址信息。
Service Consumer 负责调用远程服务,并处理返回结果,以完成自身的业务逻辑。
Service Consumer 通过 Eureka Server 发现并获取其他服务的地址信息,然后通过网络调用这些服务。
Service Provider 将自己的服务注册到 Eureka Server 上,以便其他服务能够发现和调用它。
Service Provider 负责实现服务逻辑,并通过网络暴露服务接口,使得其他服务可以访问它提供的功能。
这三个角色协同工作,构成了 Eureka 的基本架构,实现了服务注册与发现的功能。
Eureka原理
Eureka的完整工作流程,大致分为如下10步:

- 启动 Eureka Server:首先,启动 Eureka Server 作为服务注册中心。
- Service Provider 启动:服务提供方启动时,其内部的 Eureka Client 向 Eureka Server 发送注册请求。
- 注册服务信息:Eureka Client 将服务的信息(如服务名称、网络地址等)发送给 Eureka Server。
- 服务注册成功:Eureka Server 收到注册请求后,在自己的注册表中记录下该服务的信息。
- Service Consumer 启动:服务消费方启动时,其内部的 Eureka Client 向 Eureka Server 发送查询请求。
- 获取可用服务列表:Eureka Client 查询 Eureka Server 上注册的服务列表,获取可用的服务信息。
- 选择合适的服务实例:根据负载均衡策略,服务消费方选择合适的服务实例进行调用。
- 调用服务:服务消费方使用获取到的服务实例的地址信息,通过网络调用服务提供方的接口。
- 定期心跳续约:注册成功的服务定期向 Eureka Server 发送心跳请求,以更新自身状态信息。
- 健康状态检查与失效剔除:Eureka Server 定期检查服务实例的健康状态,若发现不健康的实例,则标记并移除。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》