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 实现动态路由。
相关推荐
菜鸟的日志2 小时前
【软件架构风格】面向服务架构(SOA)及其微服务演进
微服务·云原生·架构
亚历克斯神2 小时前
Java 开发者 2026 成长路线图:从初级到架构师
java·spring·微服务
亚历克斯神2 小时前
Java 代码质量保障:静态分析与代码审查实践
java·spring·微服务
twc8293 小时前
【无标题】
软件测试·微服务·链路追踪
番茄去哪了3 小时前
单体转微服务:正确的拆分思路与实战原则(上)
java·微服务·架构
rKWP8gKv714 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
aXin_ya16 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务
该昵称用户已存在19 小时前
以开源筑基,架构先行——深度拆解 MyEMS 微服务能源管理系统的技术内核
微服务·架构·开源
身如柳絮随风扬21 小时前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务