2. Kong 部署模式:DB-less 模式、传统数据库模式、混合模式(控制面与数据面分离)的架构与适用场景

Kong Gateway 支持三种核心部署模式,分别对应不同的运维复杂度、延迟敏感度和扩展需求。选择错误的模式是导致 API 延迟波动的常见根源之一。本节从架构组件、数据流路径和适用场景三个维度进行对比分析。

2.1 三种模式架构总览

下表从关键维度对比三种部署模式的核心差异:

维度 DB-less 模式 传统数据库模式 混合模式(CP/DP)
配置存储 声明式 YAML/JSON 文件 PostgreSQL / Cassandra 控制面(CP)写入数据库,数据面(DP)从 CP 同步
运行时依赖 无外部数据库 强依赖数据库可用性 DP 依赖 CP 的 Admin API / 集群同步
配置变更方式 重新加载配置文件 / reload Admin API 实时写入 DB Admin API → CP → DP 异步同步
延迟抖动主因 无 DB 查询,延迟最稳定 DB 连接池竞争、慢查询 DP 本地缓存命中率、同步延迟
扩展性 水平扩展简单,无状态 需共享 DB,DB 层易成瓶颈 DP 无状态,CP 可独立扩展
运维复杂度 低(无 DB 运维) 中(需 DBA 支持) 高(需维护 CP 集群与同步链路)
性能调优提示: 在 DB-less 模式下,Kong 的代理路径完全绕过数据库查询,P99 延迟通常比传统数据库模式低 30%~50%。如果你的 API 对延迟抖动极其敏感(如金融交易、实时通信),优先评估 DB-less 模式。

2.2 DB-less 模式(无数据库模式)

DB-less 模式将全部配置(路由、服务、上游、插件)以声明式文件形式加载到 Kong 内存中。Kong 节点启动时读取文件,运行时不再与任何数据库交互。

DB-less 模式架构 声明式配置文件 kong.yml / .json Kong 节点 内存加载全部配置 客户端 上游服务 关键特征: • 零数据库依赖,代理路径无额外网络开销 • 配置变更需 reload 或重启,不适合高频动态路由场景

适用场景

  • CI/CD 流水线与金丝雀发布: 配置随版本发布,无需运行时动态变更。
  • 边缘节点与 IoT 网关: 节点数量大、网络不稳定,无法依赖中心数据库。
  • 性能基准测试: 消除数据库抖动,获得纯净的代理延迟基线。
避坑提醒: DB-less 模式下,Kong Manager 和 Dev Portal 不可用。所有配置管理必须通过声明式文件或 decK 工具完成。如果团队依赖 GUI 操作,请谨慎选择此模式。

2.3 传统数据库模式

这是 Kong 最经典的部署方式。所有配置持久化在 PostgreSQL(推荐)或 Cassandra 中。Kong 节点在启动时从数据库加载配置,并在运行时通过 Admin API 实时读写数据库。

传统数据库模式架构 Admin API PostgreSQL 配置持久化存储 Kong 节点 启动加载 + 运行时查询 客户端 上游服务 延迟瓶颈分析: • 每次配置变更(路由/上游/插件)都需写入 DB,高并发 Admin API 调用可能引发写锁竞争 • 运行时插件(如 rate-limiting 使用数据库策略)会引入额外 DB 查询,增加 P99 延迟 • 数据库连接池耗尽时,Kong 代理线程会阻塞等待连接,导致请求排队

适用场景

  • 动态路由频繁变更: 运维团队需要实时通过 Admin API 增删改路由、服务、上游。
  • 多团队共享网关: 不同团队通过 Admin API 管理自己的服务,数据库提供事务一致性。
  • 已有成熟 PostgreSQL 运维体系: 团队具备 DBA 能力,可以优化连接池、慢查询和主从复制。
性能调优要点: 在传统数据库模式下,pgpool-II 或 PgBouncer 是必选组件。将 Kong 的 pg_max_concurrent_queries 设置为数据库连接池大小的 80%,避免连接风暴。同时,将 lua_ssl_verify_depth 和数据库 SSL 握手超时调低,减少连接建立耗时。

2.4 混合模式(控制面与数据面分离)

混合模式将 Kong 节点拆分为控制面(Control Plane, CP)和数据面(Data Plane, DP)。CP 负责与数据库交互、管理配置;DP 只负责代理流量,通过 gRPC 流从 CP 同步配置并缓存在本地内存中。

混合模式(CP/DP 分离)架构 Admin API PostgreSQL 仅 CP 访问 控制面 (CP) 配置管理 + 集群协调 gRPC 配置同步 数据面集群 (DP 1..N) 本地缓存配置,零 DB 依赖 客户端 上游服务 延迟优势与风险: • DP 代理路径完全无数据库查询,延迟接近 DB-less 模式 • 配置变更存在秒级同步延迟(默认 5s 轮询),变更后立即发起的请求可能命中旧配置 • CP 宕机不影响已有 DP 节点继续服务,但无法下发新配置

适用场景

  • 大规模多区域部署: 每个区域部署 DP 集群,中心化 CP 统一管理配置,降低跨区域数据库延迟。
  • 安全隔离要求高: 数据库和 Admin API 仅暴露在 CP 网络,DP 处于 DMZ 区域,减少攻击面。
  • DP 弹性扩缩容: DP 节点无状态,可根据流量指标(CPU、连接数)快速扩缩,不增加数据库压力。
避坑提醒: 混合模式下,DP 的 cluster_ttl_on_failure 默认值为 3600 秒。如果 CP 短暂不可用,DP 会继续使用缓存配置长达 1 小时。在需要快速回滚配置的场景,应主动调低此值至 60~300 秒,避免配置滞留时间过长。

2.5 模式选择决策流程

以下步骤帮助团队快速确定初始部署模式:

  1. 评估配置变更频率: 如果每天配置变更次数 < 10 次,优先选择 DB-less 模式。
  2. 评估延迟敏感度: 如果 P99 延迟要求 < 10ms,排除传统数据库模式。
  3. 评估运维能力: 如果没有专职 DBA,排除传统数据库模式。
  4. 评估多区域需求: 如果涉及 3 个以上地理区域,优先选择混合模式。
  5. 评估动态路由需求: 如果需要 Admin API 实时变更且延迟不敏感,传统数据库模式最直接。