文章目录
- 前言
- 架构
- 注册中心 Eureka Server
- 服务提供者 Eureka Client
- 服务消费者 Eureka Client
- 总结
- 资源
前言
微服务(Microservices,一种软件架构风格)核心的组件包括注册中心,随着微服务的发展,出现了很多注册中心的解决方案,其中包括我们熟知的 Eureka。
Eureka 的设计原则是 AP,即可用性和分区容错性。在某一时刻各个节点的数据可能是不一致的,但最终会同步保持一致。
架构
上图是 Eureka 组件的调用关系。
注册中心 Eureka Server
注册中心启动后,将从其他节点(若有)获取(fetchRegistry
)服务注册信息,并且定时运行 evict
任务,剔除没有按时 renew
的服务(非正常停止和网络故障的服务)。运行过程中,接受服务提供者的注册(register
)、心跳(renew
)和下线(cancel
)请求,这些请求数据,也会同步到其他注册中心节点。
- DefaultEurekaServerContext#initialize:初始化同步节点注册信息
- AbstractInstanceRegistry#postInit:剔除定时任务,默认 60 秒
服务提供者 Eureka Client
服务提供者启动后,向注册中心发起 register
请求注册服务,并且启动定时任务向注册中心发送 renew
心跳,防止被注册中心驱除 evict
。当服务提供者关闭时,向注册中心发送下线 cancel
通知。
- DiscoveryClient#register:向注册中心注册当前服务
- DiscoveryClient#renew:定时向注册中心续租,默认 30 秒
- DiscoveryClient#shutdown:客户端关闭取消租约
服务消费者 Eureka Client
服务消费者启动后,向注册中心拉取 fetchRegistry
服务注册信息,并且启动定时任务定时更新注册列表。消费者根据需求向提供者发起请求。
- DiscoveryClient#fetchRegistry:获取服务注册列表
总结
Eureka 主打高可用,对数据一致性要求较低,可适用于云机房集群,跨越多机房部署的场景。
资源
微服务
Netflix/eureka
CAP 定理