问答题883/1053什么是 Eureka服务注册与发现?

难度:
2021-11-02 创建

参考答案:

Eureka 服务注册与发现

Eureka 是 Netflix 开源的一个服务注册与发现组件,它在微服务架构中扮演着关键角色,用于动态管理服务的注册和发现。以下是对 服务注册服务发现 的详细解释:


1. 服务注册

服务注册是指服务提供者(Service Provider)在启动时,将自己的信息(如服务名称、IP 地址、端口号、状态等)注册到 Eureka Server 中。

工作流程:

  1. 服务启动

    • 服务实例通过嵌入的 Eureka Client,与 Eureka Server 建立连接。
    • Eureka Client 会将服务实例的元数据信息发送给 Eureka Server。
  2. 注册信息存储

    • Eureka Server 将服务实例的信息存储在其注册表(Registry)中。
    • 注册表是一个映射表,存储服务名和对应服务实例的信息。
  3. 心跳续约

    • 服务实例定期向 Eureka Server 发送心跳请求,表明自己仍然在线。
    • 如果 Eureka Server 在一定时间内未接收到心跳,则会将该服务标记为失效。

作用:

  • 动态维护服务的可用性。
  • 使服务消费者能够通过 Eureka Server 查找到最新的服务实例信息。

2. 服务发现

服务发现是指服务消费者(Service Consumer)通过 Eureka Server 获取目标服务提供者的信息,从而完成服务调用。

工作流程:

  1. 服务查询

    • 服务消费者通过嵌入的 Eureka Client,向 Eureka Server 发起查询请求。
    • Eureka Server 返回目标服务的所有可用实例信息。
  2. 负载均衡

    • 服务消费者根据查询到的服务实例列表,选择其中一个进行调用。
    • 通常配合 Ribbon 等负载均衡组件使用。
  3. 缓存更新

    • Eureka Client 会定期拉取 Eureka Server 的注册表,并缓存下来。
    • 即使 Eureka Server 不可用,消费者仍可以从本地缓存中获取服务信息。

作用:

  • 动态获取目标服务的可用实例。
  • 避免硬编码服务地址,实现服务调用的灵活性和动态性。

服务注册与发现的核心特性

  1. 动态性

    • 服务实例可以随时上下线,Eureka 自动更新注册表,确保服务调用的实时性和正确性。
  2. 去中心化

    • Eureka 的设计支持多个 Eureka Server 节点互相同步注册信息,形成高可用集群。
  3. 自我保护机制

    • 在网络分区或大规模实例宕机时,Eureka Server 会进入自我保护模式,避免误删实例。
  4. 高可用性

    • 即使某些 Eureka Server 节点不可用,客户端可以通过其他节点查询服务。

服务注册与发现的应用场景

  1. 微服务架构

    • 在微服务架构中,服务数量多且分布动态变化,Eureka 提供了动态管理的能力。
  2. 弹性伸缩

    • 当服务实例因负载变化进行扩容或缩容时,Eureka 能自动更新注册信息,适配新的实例数量。
  3. 容器化与云原生环境

    • 容器服务通常动态分配 IP 和端口,Eureka 的动态注册功能特别适合这种场景。

最近更新时间:2024-12-09