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 实现动态路由。
相关推荐
宠友信息8 小时前
一套基于uniapp+springboot完整社区系统是如何实现的?友猫社区源码级功能解析
java·spring boot·后端·微服务·微信·uni-app
全栈开发圈9 小时前
新书速览|从零开始学Spring Cloud微服务架构
spring cloud·微服务·架构
亚历克斯神9 小时前
Spring Cloud 2026 架构演进
java·spring·微服务
沃尔威武12 小时前
微服务架构下:如何用gRPC实现跨语言高效通信
微服务·云原生·架构
indexsunny13 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的深度探讨
java·数据库·spring boot·安全·微服务·监控·面试实战
却话巴山夜雨时i14 小时前
互联网大厂Java面试:从Spring到微服务
spring cloud·微服务·oauth2·java面试·stream api
豆豆15 小时前
政务服务平台站群一体化解决方案
大数据·分布式·微服务·cms·政务·网站管理系统·站群cms
昵称暂无115 小时前
分布式事务难题:Seata框架在微服务中的落地实践
分布式·微服务·架构
宠友信息16 小时前
社交软件源码哪个渠道好
java·微服务·架构·社交电子·springboot·uniapp
marsh02061 天前
31 openclaw微服务架构实践:构建分布式系统
微服务·ai·云原生·架构·编程·技术