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 实现动态路由。
相关推荐
海宇服务6 小时前
零信任架构实战:基于海宇天远入职背调报告构建自动化微服务准入网关
人工智能·微服务·架构·自动化
陈皮波比茶6 小时前
SpringCloudAlibaba
java·spring cloud·微服务
ly76898 小时前
Spring 事件机制在微服务中实现最终一致性的设计
java·spring·微服务·异步处理·最终一致性·spring事件·事务事件
2601_962218479 小时前
万象生鲜系统订单全生命周期追踪实现生鲜企业订单业务数字化可视
大数据·运维·微服务·云原生·架构
敲代码的嘎仔1 天前
自己设计了一个兑换码算法:自增ID + Base32转码 + 按位加权签名 + 异或混淆,面试被追问细节时终于不用慌了
java·数据库·mysql·算法·微服务·面试·职场和发展
梅梅绵绵冰1 天前
Docker容器化平台
docker·容器·eureka
jiao糖瓜子1 天前
Docker 完全指南:从镜像容器到生产部署
docker·容器·eureka·镜像·仓库
程序员清风1 天前
从单体应用到微服务:后端系统拆分的基本方法
微服务·架构·wpf
萝卜鱼蛋1 天前
微服务环境下如何避免孤儿数据:结合递归,墓碑标记与事件流
微服务
Joolun商城源码_Java1 天前
Java 商城技术栈怎么选:单体、微服务还是前后端分离多端?
java·开发语言·微服务