Eureka 核心概念

Eureka 核心概念

Eureka 是 Netflix 开源的服务发现框架,用于构建分布式系统中的服务注册与发现机制。其核心角色分为 Eureka Server (服务端)和 Eureka Client(客户端)。

  • Eureka Server:注册中心,管理所有服务的注册信息,提供心跳检测、负载均衡等功能。
  • Eureka Client:微服务实例,通过注册到 Eureka Server 实现服务的暴露与发现。

Eureka 服务注册流程

  1. 服务启动注册

    微服务启动时,Eureka Client 向 Eureka Server 发送 REST 请求,包含自身元数据(如服务名、IP、端口、健康状态等)。

    Eureka Server 将注册信息存储到双层结构的注册表中(内存缓存 + 持久层)。

  2. 心跳维持

    Eureka Client 默认每 30 秒向 Eureka Server 发送心跳(renew)。若 90 秒未收到心跳,Server 将该实例标记为不可用。

  3. 注册表同步

    Eureka Server 集群间通过异步复制机制同步注册表数据,保证最终一致性。


Eureka 服务发现流程

  1. 拉取注册表

    Eureka Client 定时(默认 30 秒)从 Eureka Server 拉取全量服务注册表,缓存在本地。

  2. 服务调用

    客户端通过本地缓存的注册表获取目标服务的实例列表,结合负载均衡策略(如 Ribbon)发起调用。

  3. 自我保护机制

    当网络分区故障导致大量实例心跳失败时,Eureka Server 进入自我保护模式,保留过期实例信息,避免误删健康实例。


服务注册与发现流程图

Eureka Client Eureka Server 1. 启动注册 (/register) 响应注册成功 2. 定时心跳 (/renew) loop 心跳维持 3. 拉取注册表 (/fetch) 返回服务列表 4. 本地缓存 & 负载均衡 Eureka Client Eureka Server

  1. 注册阶段:Client 向 Server 发送注册请求。
  2. 心跳阶段:Client 定期续约。
  3. 发现阶段:Client 拉取服务列表并缓存。
  4. 调用阶段:Client 根据列表发起服务调用。

关键配置参数

Eureka Server 配置
yaml 复制代码
eureka:
  server:
    enable-self-preservation: true  # 是否开启自我保护
    eviction-interval-timer-in-ms: 60000  # 清理失效实例间隔
Eureka Client 配置
yaml 复制代码
eureka:
  client:
    fetch-registry: true  # 是否拉取注册表
    register-with-eureka: true  # 是否注册到Eureka
    service-url:
      defaultZone: http://eureka-server1:8761/eureka/
  instance:
    lease-renewal-interval-in-seconds: 30  # 心跳间隔
    lease-expiration-duration-in-seconds: 90  # 心跳超时时间

与其他组件的协作

  • Ribbon:通过 Eureka 获取服务列表后实现客户端负载均衡。
  • Feign:基于 Eureka 的服务发现声明式 REST 调用。
  • Spring Cloud Gateway:结合 Eureka 实现动态路由。
相关推荐
苏渡苇16 小时前
强强联合:OpenFeign 整合 Sentinel
spring boot·spring cloud·微服务·sentinel·openfeign
未若君雅裁20 小时前
Kafka 顺序消费:分区、消费者组、Key与业务有序性
分布式·微服务·kafka
woniu_buhui_fei21 小时前
Sentinel实现限流
微服务·sentinel
该昵称用户已存在21 小时前
2026 园区能源数字化:MyEMS 微服务拆分与时序数据库选型的落地经验
微服务·能源·时序数据库
天下·第二21 小时前
如何在【x86】服务器上打包构建【arm】镜像
服务器·arm开发·eureka
苏渡苇1 天前
微服务间的远程接口调用:OpenFeign 的使用
spring cloud·微服务·架构·springboot·openfeign·sca
未若君雅裁1 天前
Kafka 消息可靠性:发送确认、acks、副本保存与Offset手动提交
分布式·微服务·kafka
梵得儿SHI1 天前
SpringCloud 进阶拓展:性能优化指南(缓存三大问题 + 分库分表入门)
spring cloud·缓存·微服务·性能优化·高并发·分库分表·数据库优化
还在忙碌的吴小二1 天前
Spring Cloud Alibaba 微服务解决方案新手入门指南
微服务·云原生·架构
a23121212 天前
从零搭建Spring Ai多智能体后端应用
java·运维·微服务·多智能体·后端开发·spring ai