服务发现

  • 梗概:可把它直观理解为内网中的 域名解析,但更加强调“动态感知 + 健康检查 + 元数据 + 负载均衡”。

核心组件

  1. 服务注册中心(Service Registry)

    • 作用:集中存储服务实例实时信息(IP、端口、健康状态、元数据)。
    • 常见实现:
      • 独立组件:Consul / Eureka / ZooKeeper / Nacos
      • Kubernetes 内置:Service + Endpoints
      • 云服务商:AWS Cloud Map / Azure Service Fabric
  2. 服务注册(Service Registration)

    • 启动时:实例启动后向注册中心注册(SDK 或 Sidecar)。
    • 健康检查:注册中心探测并自动剔除故障实例。
    • 示例:订单服务启动 → 向 Consul 注册 → Consul 存储并开始健康检查
  3. 服务发现(Service Discovery)

    • 消费者查询:网关或下游服务从注册中心查询可用实例列表。
    • 动态更新:实例增删变更会被实时/近实时推送或拉取到客户端。

与传统 DNS 的区别

特性传统内网 DNS服务发现
主要目标静态名称解析动态服务实例定位
地址变化更新慢(TTL 缓存)近实时更新(实例上线/下线秒级感知)
健康检查通常无核心功能(自动剔除故障实例)
负载均衡基础 RR DNS内置智能 LB(轮询、加权、最少连接等)
返回结果单个 IP 或 IP 列表实例对象列表(含端口/元数据/健康状态)
元数据有限丰富(版本、区域、标签等)
典型场景主机/虚拟机/固定服务容器/微服务(动态伸缩)

相关