服务发现
API7 网关中的服务发现使用动态端点解析替代静态节点列表。无需手动更新上游服务的 IP 地址,你可以配置数据面查询服务注册中心并自动发现后端节点。
服务发现的工作原理
使用服务发现时,需要在上游配置中指定服务名称和发现类型,而不是使用静态 nodes 数组。
- 查询注册中心:数据面(DP)定期查询配置的服务注册中心,例如 Kubernetes API、Nacos 服务器或 Consul Agent。
- 获取端点:注册中心返回所请求服务的健康 IP 地址和端口列表。
- 本地缓存:数据面将这些端点缓存在内存中,以实现高性能路由。
- 更新节点:数据面根据获取的端点更新上游节点列表。
- 负载均衡:网关负载均衡器将传入请求分发到发现的节点。
支持的发 现类型
API7 网关控制面支持将服务连接到以下服务注册中心:
- Kubernetes:直接查询 API 服务器,解析 Kubernetes Service 的端点。
- Nacos:与阿里巴巴 Nacos 注册中心集成,实现动态服务发现。
- Consul:与 HashiCorp Consul Catalog 集成,实现动态服务发现。
静态节点与服务发现对比
| 特性 | 静态节点 | 服务发现 |
|---|---|---|
| 配置 | 手动(IP/端口) | 自动(服务名称) |
| 维护 | 高(节点变更时必须更新) | 低(自动更新) |
| 可扩展性 | 扩缩容时需要手动更新 | 支持即时扩缩容 |
| 环境 | 物理机、旧应用 | Kubernetes、微服务 |