跳到主要内容
版本:3.10.x

服务发现

API7 网关中的服务发现使用动态端点解析替代静态节点列表。无需手动更新上游服务的 IP 地址,你可以配置数据面查询服务注册中心并自动发现后端节点。

服务发现的工作原理

使用服务发现时,需要在上游配置中指定服务名称发现类型,而不是使用静态 nodes 数组。

  1. 查询注册中心:数据面(DP)定期查询配置的服务注册中心,例如 Kubernetes API、Nacos 服务器或 Consul Agent。
  2. 获取端点:注册中心返回所请求服务的健康 IP 地址和端口列表。
  3. 本地缓存:数据面将这些端点缓存在内存中,以实现高性能路由。
  4. 更新节点:数据面根据获取的端点更新上游节点列表。
  5. 负载均衡:网关负载均衡器将传入请求分发到发现的节点。

支持的发现类型

API7 网关控制面支持将服务连接到以下服务注册中心:

  • Kubernetes:直接查询 API 服务器,解析 Kubernetes Service 的端点。
  • Nacos:与阿里巴巴 Nacos 注册中心集成,实现动态服务发现。
  • Consul:与 HashiCorp Consul Catalog 集成,实现动态服务发现。

静态节点与服务发现对比

特性静态节点服务发现
配置手动(IP/端口)自动(服务名称)
维护高(节点变更时必须更新)低(自动更新)
可扩展性扩缩容时需要手动更新支持即时扩缩容
环境物理机、旧应用Kubernetes、微服务

配置字段

使用服务发现配置上游时,通常需要提供:

  • 服务名称:服务在注册中心登记的名称,例如 user-service.default.svc.cluster.local
  • 发现类型:注册中心类型(kubernetesnacosconsul)。
  • 命名空间选择器:对于 Kubernetes,用于筛选网关应监视的命名空间。
  • 默认权重:注册中心未提供权重时,分配给已发现节点的权重。

后续步骤