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

架构

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

解耦架构

控制面与数据面通过安全通道通信,因此可以将两者部署在不同的环境或地域中。

控制面(CP)

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

  • Dashboard 和 Admin API:提供基于 Web 的界面和 RESTful API,用于管理所有网关配置。默认端口为 7443(HTTPS)。
  • PostgreSQL 数据库:存储所有持久化配置,包括服务、路由、消费者和审计日志。PostgreSQL 是主要且推荐的存储后端;控制面也支持 MySQL 和 Microsoft SQL Server 作为替代后端,详情请参阅支持的版本和互操作性
  • DP Manager:在 7943 端口上通过 mTLS 暴露兼容 etcd v3 的 API,供数据面节点连接。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),负责与控制面通信、管理服务发现数据的共享字典,以及合并配置更新。

健康检查与可观测性

  • 健康检查端点:每个数据面节点在 7085 端口提供 /status(存活状态)和 /status/ready(就绪状态)端点。
  • Prometheus 指标:指标在 9091 端口的 /apisix/prometheus/metrics 路径暴露。

控制面与数据面通信

API7 网关使用与开源 Apache APISIX 相同的 拉取/监听模型同步配置。每个数据面节点运行标准 APISIX etcd 客户端,通过 mTLS 连接到 7943 端口上的 DP Manager。连接建立后,数据面会监听兼容 etcd 的键空间获取配置变更,并在变更到达后立即应用到内存缓存中。

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

安全通信

每个数据面节点与 DP Manager 之间的连接均通过双向 TLS(mTLS)保护。数据面会提供由 API7 内部 CA 签发的客户端证书;DP Manager 会在提供任何配置数据之前验证客户端证书,同时数据面也会验证 DP Manager 的服务器证书。这可以确保只有经过授权的数据面能够读取配置,并且只有经过授权的控制面能够提供配置。

容错

由于数据面会在内存中保存最新配置(也可以选择保存到磁盘),即使控制面无法访问,数据面仍能继续处理流量。只有创建路由、添加消费者或轮换证书等管理任务会被阻塞,直到控制面恢复。为了增强弹性,你还可以配置回退配置提供方,让数据面在控制面长时间中断期间继续运行。

开源版与企业版对比

特性开源 Apache APISIXAPI7 企业版
主要存储独立的 etcd 集群PostgreSQL(通过 kine etcd shim)
向数据面暴露的配置 API原生 etcd v3兼容 etcd v3(由 PostgreSQL 提供后端支持)
配置同步模型拉取/监听拉取/监听(语义一致)
控制面与数据面传输通过 gRPC 或 HTTP 传输的普通 etcd 客户端7943 端口上的 mTLS
管理界面Admin APIDashboard + Admin API + ADC
扩展方式独立扩展 etcd 集群和数据面独立扩展 PostgreSQL、控制面和数据面

后续步骤