当前位置: 首页 > news >正文

Spring Cloud Eureka 的实现原理 - 实践

Eureka 是 Netflix 开源的服务发现组件,Spring Cloud 将其集成,提供了基于 Java 的微服务体系中客户端服务发现的能力。它的核心思想是“注册与发现”

一、核心架构图

下图清晰地展示了 Eureka 的核心架构和组件交互:

二、核心角色

从架构图中可以看出,Eureka 囊括三个核心角色:

  1. Eureka Server(服务端)

    • 作用:服务注册中心,一个独立的部署单元,通常以集群模式部署。

    • 功能

      • 提供服务注册功能,接收来自 Eureka Client 的注册信息。

      • 存储和管理所有可用的服务实例信息,即服务注册表(Registry)

      • 提供心跳监控,剔除故障的实例。

      • 提供服务查询接口,供消费者获取服务列表。

  1. Eureka Client(客户端 - 服务提供者)

    • 作用:将自己的服务注册到 Eureka Server,并使自身服务信息对消费者可用。

    • 功能

      • 在应用启动时,向 Eureka Server注册自身信息(如服务名、IP、端口等)。

      • 定期向 Eureka Server发送心跳(默认30秒一次)以续约,表明自己“健康存活”。

      • 当服务关闭时,向 Eureka Server发送取消注册请求,从注册列表中移除自己。

  1. Eureka Client(客户端 - 服务消费者)

    • 作用:从 Eureka Server 获取服务提供者列表,并基于该列表发起远程调用。

    • 功能

      • 在应用启动时或需要时,从 Eureka Server拉取(Fetch)服务注册表,并缓存在本地。

      • 定期(默认30秒一次)从 Eureka Server增量更新本地缓存的服务列表。

      • 结合客户端负载均衡器(如 Ribbon),从本地服务列表中选择一个实例进行调用。

三、核心完成原理与工作机制

1. 服务注册(Register)
  • 流程

    1. 服务提供者(Eureka Client)在启动时,读取配置的 eureka.client.service-url.defaultZone,找到 Eureka Server 的地址。

    2. 向 Eureka Server 发送POST 请求,携带自身的元数据信息(如 appNameinstanceIdipAddrport 等)。

    3. Eureka Server 接收到注册请求后,将实例信息存储在一个双层的 ConcurrentHashMap 结构中(第一层 key 是服务名 appName,第二层 key 是实例ID instanceId)。

  • 核心数据结构:服务注册表 Registry

2. 心跳续约与健康检查(Renew)
  • 流程

    1. 服务提供者注册成功后,会启动一个定时任务,每隔30秒(默认)向 Eureka Server 发送一次PUT请求,即“心跳”。

    2. Eureka Server 接收到心跳后,会更新该实例的“最后续约时间”(lastUpdateTimestamp)。

    1. 如果 Eureka Server在90秒(默认)内没有收到某个实例的心跳,它会认为该实例已经故障,会将其从注册表中剔除(Evict)。这个机制称为服务剔除

  • 可配置参数

    • eureka.instance.lease-renewal-interval-in-seconds:客户端心跳间隔,默认30s。

    • eureka.instance.lease-expiration-duration-in-seconds:服务端等待心跳的超时时间,默认90s。

3. 服务获取与缓存(Fetch Registry)
  • 全量获取

    • 服务消费者(Eureka Client)在启动时,会第一次从 Eureka Server全量拉取所有服务注册信息,并缓存到本地。

  • 增量获取

    • 之后,客户端会每隔30秒(默认)向 Eureka Server 发起一次增量获取请求,只获取发生变化(新增、下线)的注册信息,来更新本地缓存。

    • 这种设计极大地减少了网络传输的数据量,提升了效率。

  • 优点:消费者直接从本地缓存获取服务列表进行调用,即使 Eureka Server 集群全部宕机,短时间内仍能基于本地缓存进行服务间通信,保证了环境的高可用性。

服务下线(Cancel)
  • 流程

    1. 当服务提供者正常关闭(如执行 SpringApplication.exit())时,会向 Eureka Server 发送一个 DELETE 请求。

    2. Eureka Server 接收到请求后,会立即将该实例从注册表中移除。

  • 作用:保证服务列表的实时性,避免消费者调用到已下线的实例。

5. 自我保护机制(Self Preservation)

这是 Eureka 一个非常核心且独特的特性。

服务下线(Cancel)
  • 流程

    1. 当服务提供者正常关闭(如执行 SpringApplication.exit())时,会向 Eureka Server 发送一个 DELETE 请求。

    2. Eureka Server 接收到请求后,会立即将该实例从注册表中移除。

  • 作用:保证服务列表的实时性,避免消费者调用到已下线的实例。

5. 自我保护机制(Self Preservation)

这是 Eureka 一个非常重要且独特的特性。

、Eureka Server 集群的工作原理

Eureka Server 利用互相注册的方式组成集群,以实现高可用。

  • 对等复制(Peer to Peer Replication)

    1. 每个 Eureka Server 都是对等的节点,没有主从之分。

    2. 当某个 Eureka Client 向其中一个 Eureka Server 节点注册时,该节点会将这个注册请求转发(Replicate)到集群中的其他所有节点。

    3. 同样,心跳、下线等操作也会被同步复制。

  • 最终一致性:Eureka 集群的数据同步是异步的,这意味着在某个时刻,集群中各节点的数据可能不是严格一致的,但最终会达成一致。这种弱一致性模型牺牲了强一致性,换来了高可用性和分区容错性(符合 CAP 理论中的 AP)。

总结

特性实现机制设计目标
服务注册客户端启动时向 Server 发送 POST 请求中心化服务信息管理
服务发现客户端拉取并缓存 Server 的注册表快速、低延迟的本地调用
健康监控客户端定时发送心跳,Server 超时剔除自动感知和处理故障实例
高可用Server 组成集群,借助 P2P 复制内容消除单点故障
容错性自我保护机制防止网络波动导致的服务列表清空,保证 AP

Eureka 经过其简便的客户端心跳、服务端缓存和独特的自我保护机制,给予了一个非常健壮和容错的服务发现解决方案,特有适合部署在可能发生网络不稳定的云环境中。

http://www.gsyq.cn/news/51090.html

相关文章:

  • 2025年热门的智算中心展供应链
  • 2025年口碑好的中心供氧汇流排最新TOP厂家排名
  • Elasticsearch面试精讲 Day 29:故障排查与疑问诊断
  • 2025年评价高的纸箱珍珠棉TOP品牌厂家排行榜
  • 2025年评价高的自动伸缩门杭州品质装修
  • Reqable 工具报错 Netbare Code Error Unknown
  • 2025年比较好的电动搅拌压力桶最新TOP品牌厂家排行
  • 2025年国内知名的矿用设备安全检测检验厂家
  • 2025年国内矿用设备设施安全检测检验公司权威排行榜TOP10
  • 2025年水煤气钢管十大品牌权威排名:江苏华力钢管领军行业
  • 2025年冷弯型钢厂家十大品牌权威推荐:江苏华力钢管领跑行业
  • 2025年光伏支架钢管品牌前十排名:江苏华力钢管有限公司领军行业
  • 2025年网架品牌前十强排名:江苏华力钢管有限公司领衔行业标杆
  • 2025年质量好的厚薄门通用缓冲铰链厂家推荐及采购参考
  • 2025年正规的汽车改装厂家推荐及选择参考
  • 002 vue3-admin项目的目录及文件说明之vite.config.ts文件
  • 2025年知名的粉料包装机用户口碑最好的厂家榜
  • 键批量编程 + 特征自动识别,Mastercam 2025 让 CNC 加工更省心安装
  • 2025年耐用的陶瓷过滤机TOP实力厂家推荐榜
  • 2025年11月国内异味治理服务商排行:专业机构助力健康呼吸环境
  • 2025年出口桉木单板烘干机TOP品牌厂家排行榜
  • 2025年诚信的针电极最新TOP品牌厂家排行
  • C语言中的声明与定义的区别
  • 【完整源码+数据集+部署教程】【零售和消费品&存货】价格标签检测系统源码&数据集全套:改进yolo11-RFAConv - 教程
  • 基于容器适配器模式的 Stack 与 Queue 建立:复用底层容器的优雅设计
  • 2025年热门的单螺杆挤出机厂家选购指南与推荐
  • 题集 (5) - AT ARC084B Small Multiple
  • 2025年石棉橡胶板厂家联系电话推荐:品质认证售后无忧
  • 2025年评价高的高端衣物护理机厂家推荐及选购指南
  • 【解决 Codex 修改文件后中文乱码疑问:根源在终端编码,不在 VS Code】