服务发现
- 梗概:可把它直观理解为内网中的 域名解析,但更加强调“动态感知 + 健康检查 + 元数据 + 负载均衡”。
核心组件
-
服务注册中心(Service Registry)
- 作用:集中存储服务实例实时信息(IP、端口、健康状态、元数据)。
- 常见实现:
- 独立组件:Consul / Eureka / ZooKeeper / Nacos
- Kubernetes 内置:
Service+Endpoints - 云服务商:AWS Cloud Map / Azure Service Fabric
-
服务注册(Service Registration)
- 启动时:实例启动后向注册中心注册(SDK 或 Sidecar)。
- 健康检查:注册中心探测并自动剔除故障实例。
- 示例:
订单服务启动 → 向 Consul 注册 → Consul 存储并开始健康检查
-
服务发现(Service Discovery)
- 消费者查询:网关或下游服务从注册中心查询可用实例列表。
- 动态更新:实例增删变更会被实时/近实时推送或拉取到客户端。
与传统 DNS 的区别
| 特性 | 传统内网 DNS | 服务发现 |
|---|---|---|
| 主要目标 | 静态名称解析 | 动态服务实例定位 |
| 地址变化 | 更新慢(TTL 缓存) | 近实时更新(实例上线/下线秒级感知) |
| 健康检查 | 通常无 | 核心功能(自动剔除故障实例) |
| 负载均衡 | 基础 RR DNS | 内置智能 LB(轮询、加权、最少连接等) |
| 返回结果 | 单个 IP 或 IP 列表 | 实例对象列表(含端口/元数据/健康状态) |
| 元数据 | 有限 | 丰富(版本、区域、标签等) |
| 典型场景 | 主机/虚拟机/固定服务 | 容器/微服务(动态伸缩) |