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 小时前
Spring Cloud服务注册与发现(一):手把手搭建Eureka Server,详解高可用配置
spring·spring cloud·eureka
AI架构全栈开发实战笔记2 小时前
Eureka 在大数据环境中的性能优化技巧
大数据·ai·eureka·性能优化
大厂资深架构师2 小时前
Spring Cloud Eureka在后端系统中的服务剔除策略
spring·spring cloud·ai·eureka
AI架构全栈开发实战笔记2 小时前
Eureka 对大数据领域服务依赖关系的梳理
大数据·ai·云原生·eureka
岁岁种桃花儿3 小时前
SpringCloud从入门到上天:Nacos做微服务注册中心(二)
java·spring cloud·微服务
7哥♡ۣۖᝰꫛꫀꪝۣℋ7 小时前
微服务负载均衡
spring·微服务
MrSYJ10 小时前
Redis 做分布式 Session
后端·spring cloud·微服务
喵叔哟11 小时前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
岁岁种桃花儿12 小时前
注册中心宕机后,RPC调用还能成功吗?主流框架实测级分析
zookeeper·eureka·rpc