写点什么

Eureka 框架的原理

作者:阿泽🧸
  • 2022-11-09
    北京
  • 本文字数:921 字

    阅读完需:约 3 分钟

Eureka框架的原理

Eureka 是 Spring Cloud“全家桶”中非常重要的一个组件,主要实现服务的注册和发现。Eureka 做到了 CAP 理论[分布式数据库中的一种弱一致性理论,即系统最多只能同时满足一致性(Consistency)、可用性(Availability)、容忍网络分割(Partition Tolerance)等 3 个需求中的 2 个]中的 AP,强调服务的高可用性,实现中分 Eureka 服务端和 Eureka 客户端两部分。


Eureka 客户端会向 Eureka 注册中心注册服务,并通过心跳来更新它的服务租约。同时 Eureka 客户端可以从 Eureka 服务端查询当前注册的服务信息,把它们缓存到本地并周期性地刷新服务状态。若服务集群出现分区故障,Eureka 会进入自动保护模式,允许分区故障的节点继续提供服务;若分区故障恢复,集群中的其他分区会再次同步它们的状态。


Eureka 是 Netflix 开发的服务发现框架,Spring Cloud 将它集成在自己的子项目 Spring Cloud Netflix 中,以实现 Spring Cloud 的服务发现功能。Eureka 的基本架构由 3 个角色组成:提供服务注册和发现 Eureka 服务端服务提供者(Service Provider)将自身服务注册到 Eureka,从而使服务消费者能够找到服务消费者(Service Consumer)从 Eureka 获取注册服务列表,从而能够消费服务


Application 服务端相当于服务提供者,Application 客户端相当于服务消费者;远程调用可以简单理解为调用 RESTful API。


Eureka 包含两个组件:Eureka 服务端和 Eureka 客户端,它们的作用如下。

  • Eureka 客户端是一个 Java 客户端,用于简化与 Eureka 服务端的交互。

  • Eureka 服务端提供服务发现的能力,各个微服务启动时,会通过 Eureka 客户端向 Eureka 服务端注册自己的信息(如网络信息),Eureka 服务端会存储该服务的信息。


微服务启动后,会周期性地向 Eureka 服务端发送心跳(默认周期为 30s)以续约自己的信息。如果 Eureka 服务端在一定时间(默认为 90s)内没有接收到某个微服务节点的心跳,将会注销该微服务节点。


每个 Eureka 服务端同时也是 Eureka 客户端,多个 Eureka 服务端之间通过复制(Replicate)的方式完成服务注册表的同步。


Eureka 客户端会缓存 Eureka 服务端中的信息。即使所有的 Eureka 服务端节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。


总结一下,Eureka 通过心跳检测、健康检查和客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性。


发布于: 刚刚阅读数: 4
用户头像

阿泽🧸

关注

还未添加个人签名 2020-11-12 加入

还未添加个人简介

评论

发布
暂无评论
Eureka框架的原理_Eureka_阿泽🧸_InfoQ写作社区