1565 字
8 分钟

现代微服务 API 网关完全指南 2026:Apache APISIX vs Envoy vs Kong 选型 + 动态路由 + 插件实战

在分布式微服务架构中,API 网关(API Gateway) 处于整座系统架构的最前端,是所有外部流量进出的咽喉要道。

它承担着动态路由寻址、协议转换(HTTP 转 gRPC)、统一鉴权认证(JWT/OAuth2)、全链路安全防刷限流、灰度金丝雀分流与分布式链路追踪等关键职责。传统的静态 nginx.conf 频繁 reload 已无法适应现代微服务的高频发布诉求。

本文遵循 EEAT 架构专家标准,深度横评 2026 年三大主流网关(Apache APISIX vs Envoy vs Kong),并以 Apache APISIX 为实战基准,全面拆解动态路由、插件开发与生产高可用落地。


架构对比:三大主流 API 网关全维度选型矩阵#

维度Apache APISIX 3.x+Envoy Proxy (1.30+)Kong Gateway 3.x+传统 Nginx 反代
核心开发语言Nginx C + LuaJIT纯 C++OpenResty C + Lua纯 C 语言
控制面存储🥇 etcd (分布式共识)xDS (动态 gRPC 控制面)PostgreSQL / DB-less YAML本地静态配置文件
路由匹配算法🥇 Radix Tree (基数树,O(K)复杂度)Trie 树 / 正则匹配正则与前缀逐条匹配逐条 Location 匹配
配置热更新机制🥇 Zero-Reload (毫秒级 etcd Watch)🥇 Zero-Reload (xDS 流式推送)毫秒级 (依赖轮询/DB-less)❌ 必须 nginx -s reload (断连接)
插件多语言支持🥇 Lua, Wasm, Go, Python, JavaC++, WasmLua, Go, JavaScript仅支持 C 模块 / NGINX Lua
单机并发吞吐量🥇 极高 (15万~25万 QPS)🥇 极高 (15万~20万 QPS)⭐⭐⭐⭐ (10万~15万 QPS)极高 (但无业务动态能力)
Kubernetes 网关集成APISIX Ingress Controller🥇 Envoy Gateway (标准 Gateway API)Kong Ingress ControllerIngress-Nginx
生产最佳适用场景企业统一业务 API 网关、多租户中台Service Mesh 服务网格数据面、云原生网关经典老牌系统迁移、海外 SaaS 生态集成纯静态资源托管、简单四层端口转发

一、API 网关在微服务全栈中的核心定位#

[ 客户端: Web / iOS / Android / 开放平台 API ]
│ HTTPS / WSS
▼
┌──────────────────────────────────────────────┐
│ Apache APISIX API Gateway (统一接入层) │
│ - SSL 卸载 / SNI 动态证书 │
│ - JWT / OIDC / API Key 统一鉴权 │
│ - 限流熔断 (Limit-Req / Circuit-Breaker) │
│ - 动态金丝雀灰度发布 (Traffic Split) │
│ - OpenTelemetry / Prometheus 自动可观测 │
└───────────────────────┬──────────────────────┘
│ 毫秒级动态路由分发
┌───────────────────────┴───────────────────────┐
│ gRPC (Protobuf) │ HTTP REST
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ User Microservice (Go) │ │ Order Microservice (Rust) │
│ - gRPC Server (:50051) │ │ - Axum HTTP Server (:8080) │
└──────────────┬──────────────┘ └──────────────┬──────────────┘
│ │
└───────────────────────┬───────────────────────┘
▼
[ 数据存储: PostgreSQL / Redis ]

二、Docker Compose 生产级部署 APISIX + etcd + Dashboard#

docker-compose.yml
services:
# ── 1. etcd 配置共识中枢 ─────────────────────────────────────
etcd:
image: bitnami/etcd:3.5.14
container_name: apisix-etcd
restart: unless-stopped
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
volumes:
- etcd_data:/bitnami/etcd
ports:
- "2379:2379"
networks:
- apisix-net
# ── 2. Apache APISIX 网关数据面 ──────────────────────────────
apisix:
image: apache/apisix:3.9.1-debian
container_name: apisix-server
restart: unless-stopped
volumes:
- ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
ports:
- "80:9080" # 外部 HTTP 流量入口
- "443:9443" # 外部 HTTPS 流量入口
- "9180:9180" # Admin API 控制面管理端口 (必须内网隔离!)
- "9091:9091" # Prometheus Metrics 监控指标端口
networks:
- apisix-net
depends_on:
- etcd
# ── 3. APISIX Dashboard 可视化管理控制台 ─────────────────────
apisix-dashboard:
image: apache/apisix-dashboard:3.0.1-alpine
container_name: apisix-dashboard
restart: unless-stopped
volumes:
- ./dashboard_conf/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml:ro
ports:
- "9000:9000" # 控制台访问端口
networks:
- apisix-net
depends_on:
- apisix
volumes:
etcd_data:
networks:
apisix-net:
driver: bridge

三、APISIX 动态路由与核心功能实战(Admin API)#

所有配置通过 REST API 直接与 etcd 交互,完全无需 Reload 即可在全网关节点毫秒级生效。

3.1 创建高可用负载均衡上游(Upstream)#

Terminal window
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-X PUT -d '{
"type": "roundrobin",
"name": "user-service-cluster",
"nodes": {
"192.168.1.50:8080": 80,
"192.168.1.51:8080": 20
},
"checks": {
"active": {
"http_path": "/health",
"healthy": { "interval": 2, "successes": 1 },
"unhealthy": { "interval": 1, "http_failures": 2 }
}
}
}'

3.2 创建包含 JWT 鉴权与精准限流的路由(Route)#

Terminal window
curl "http://127.0.0.1:9180/apisix/admin/routes/100" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-X PUT -d '{
"uri": "/api/v1/orders/*",
"name": "order-api-route",
"methods": ["GET", "POST", "PUT"],
"upstream_id": "1",
"plugins": {
"jwt-auth": {},
"limit-req": {
"rate": 100,
"burst": 50,
"key_type": "var",
"key": "consumer_name",
"rejected_code": 429
},
"prometheus": {
"prefer_name": true
},
"opentelemetry": {
"sampler": { "name": "always_on" }
}
}
}'

3.3 金丝雀灰度发布实战(Traffic Split 按比例分流)#

在不中断线上服务的情况下,将 10% 流量无缝切往新版 v2 服务,验证无误后逐步平滑提升至 100%:

Terminal window
curl "http://127.0.0.1:9180/apisix/admin/routes/101" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-X PUT -d '{
"uri": "/api/v1/payment/*",
"name": "canary-payment-route",
"plugins": {
"traffic-split": {
"rules": [
{
"weighted_upstreams": [
{
"upstream_id": "1",
"weight": 90
},
{
"upstream": {
"name": "payment-v2-canary",
"type": "roundrobin",
"nodes": { "192.168.1.60:8080": 1 }
},
"weight": 10
}
]
}
]
}
}
}'

四、自定义插件开发实战(Lua 极速插件)#

当内置 100+ 插件无法满足特定的企业私有协议验证时,可以在 5 分钟内编写一个高性能自定义插件:

-- /usr/local/apisix/apisix/plugins/tenant-auth.lua
local core = require("apisix.core")
local plugin_name = "tenant-auth"
local schema = {
type = "object",
properties = {
header_key = { type = "string", default = "X-Tenant-ID" }
},
required = { "header_key" }
}
local _M = {
version = 0.1,
priority = 2500, -- 优先级高于普通业务插件
name = plugin_name,
schema = schema
}
function _M.check_schema(conf)
return core.schema.check(schema, conf)
end
-- 在请求进入上游前的 access 阶段执行校验
function _M.access(conf, ctx)
local tenant_id = core.request.header(ctx, conf.header_key)
if not tenant_id or tenant_id == "" then
core.log.warn("Missing tenant header: ", conf.header_key)
return 401, { message = "Unauthorized: Missing Tenant Header" }
end
-- 将租户 ID 注入上游请求头与 OpenTelemetry 上下文中
core.request.set_header(ctx, "X-Internal-Tenant", tenant_id)
end
return _M

五、生产环境高可用与性能调优黄金法则#

  1. etcd 高可用集群构建:
    • 生产环境严禁使用单节点 etcd,必须部署至少 3 节点分布式 etcd 集群,并配置独立 SSD 磁盘保证低写延迟(<10ms)。
  2. 连接池复用与 Keepalive 调优:
    config.yaml
    nginx_config:
    http:
    keepalive_timeout: 60s
    keepalive_requests: 10000
  3. 隔离控制面 Admin API:
    • Admin API(端口 9180)绝对禁止向公网开放,必须绑定内网 IP 或通过安全组/VPN 进行严格访问限制。

相关文章:

本文基于 Apache APISIX 3.9+、Envoy 1.30+ 及 etcd 3.5+ 编写。对于追求极致低延迟与动态可扩展性的微服务架构,Apache APISIX 是目前国内云原生落地的首选方案之一。

现代微服务 API 网关完全指南 2026:Apache APISIX vs Envoy vs Kong 选型 + 动态路由 + 插件实战
https://971918.xyz/posts/docs/api-gateway-apisix-envoy-guide/
作者
九所长
发布于
2026-08-30
许可协议
CC BY-NC-SA 4.0