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

架构

API7 企业版是一套 API 管理组件,包含作为流量处理层的 API7 网关。API7 网关采用解耦架构,将管理逻辑(控制面)与请求处理逻辑(数据面)分离。这种设计可确保高可用性、安全隔离以及独立扩展能力。

解耦架构​

控制台生成的数据面部署通过 mTLS 连接控制面的 7943 端口。为保持兼容,DP Manager 也在 7900 端口接受未经传输加密的 HTTP 连接,因此应将该通道限制在可信网络中。解耦架构允许控制面和数据面运行在不同环境或地域。

控制面(CP)​

控制面是 API7 网关的管理中枢。这是一项基于 Go 的服务,提供以下组件:

  • 控制台和 Admin API:提供基于 Web 的界面和 RESTful API,用于管理所有网关配置。默认端口为 7443(HTTPS)。
  • PostgreSQL 数据库:存储所有持久化配置,包括服务、路由、消费者和审计日志。PostgreSQL 是主要且推荐的存储后端;控制面也支持 MySQL 和 Microsoft SQL Server 作为替代后端,详情请参阅支持的版本和互操作性。
  • DP Manager:在 7943 端口上通过 mTLS 暴露兼容 etcd v3 的 API。为保持兼容,也在 7900 端口接受 HTTP 连接,并使用实例 Token 认证。DP Manager 内部通过嵌入式 kine shim,使用控制面数据库作为后端来提供此 API,因此数据面节点可以使用标准 Apache APISIX etcd 客户端监听配置,而不需要实际的 etcd 集群。

数据面(DP)​

数据面是处理传入 API 请求的高性能代理引擎,基于 OpenResty 和 Lua 构建。

核心组件​

  • 代理引擎:处理 HTTP、HTTPS、gRPC 和 TCP/UDP 流量。默认端口为 9080(HTTP)和 9443(HTTPS)。
  • 无状态运行:数据面节点是无状态的。它们从控制面接收配置,并将配置存储在内存中以实现快速访问。
  • EE Agent:专用组件(agent/hook.lua),负责与控制面通信、管理服务发现数据的共享字典,以及合并配置更新。

健康检查与可观测性​

  • 健康检查端点:启用状态监听后,每个数据面节点才会在配置的地址和端口提供 /status(存活)和 /status/ready(就绪)端点。网关 Helm Chart 通过 api7ee.status_endpoint.enabled 启用此监听,api7ee.status_endpoint.port 用于选择端口,默认值为 7085。状态监听默认禁用。
  • Prometheus 指标:指标在 9091 端口的 /apisix/prometheus/metrics 路径暴露。

控制面与数据面通信​

API7 网关使用与开源 Apache APISIX 相同的拉取/监听模型同步配置。每个数据面节点运行标准 APISIX etcd 客户端,主动连接 DP Manager。控制台生成的部署通过 mTLS 使用 7943 端口。DP Manager 也在 7900 端口接受使用实例 Token 认证的 HTTP 连接,但这些连接未经加密。连接建立后,数据面会监听兼容 etcd 的键空间获取配置变更,并在变更到达后立即应用到内存缓存中。

与上游 APISIX 的唯一差异在于存储后端:DP Manager 不使用实际的 etcd 集群,而是使用 kine 将 etcd v3 API 转换为 PostgreSQL 的读写操作。从数据面的角度看,DP Manager 的行为与 etcd 集群完全一致。

安全通信​

在 7943 端口上,数据面提供由 API7 内部 CA 签发的客户端证书。DP Manager 在提供配置数据前验证该证书,数据面则使用配置的 CA 验证服务器证书。生产部署应使用此 mTLS 监听。通过防火墙规则或网络策略限制对 HTTP 端口 7900 的访问,切勿将其暴露到公网。

容错​

控制面不可访问时,正在运行的网关节点可以继续使用最后已知的配置处理流量。配置更新和发布路由等管理操作会暂停,直到连接恢复。如果请求需要通过控制面查找消费者或开发者,而相应结果尚未缓存,该请求仍可能失败。备用存储可让网关在中断期间必须重启时,从保存的快照启动。

开源版与企业版对比​

特性开源 Apache APISIXAPI7 企业版
主要存储独立的 etcd 集群PostgreSQL(通过 kine etcd shim)
向数据面暴露的配置 API原生 etcd v3兼容 etcd v3(由 PostgreSQL 提供后端支持)
配置同步模型拉取/监听拉取/监听(语义一致)
控制面与数据面传输通过 gRPC 或 HTTP 传输的普通 etcd 客户端控制台生成的部署在 7943 端口使用 mTLS。7900 端口接受使用实例 Token 认证的 HTTP 连接,应限制在可信网络中
管理界面Admin API控制台 + Admin API + ADC
扩展方式独立扩展 etcd 集群和数据面独立扩展 PostgreSQL、控制面和数据面

后续步骤​