Apache APISIX 源码学习
20 天 · 每天 30 分钟 · 逐层读懂 Apache APISIX——一个用 Lua + OpenResty(Nginx + LuaJIT)写的高性能云原生 API 网关。它以 etcd 存配置、全动态热更新著称:加路由/改插件不用 reload。这是继 higress-group 之后的另一条网关技术路线——和 Envoy/Higress 形成鲜明对照。
开篇 · 这是个什么项目
Apache APISIX(README.md:Apache APISIX API Gateway | AI Gateway)是 Apache 顶级项目,一个动态、实时、高性能的云原生 API 网关。它基于 OpenResty(Nginx + LuaJIT),用 etcd 做配置中心,支持热插拔的 Lua 插件(仓库自带 104 个插件)。
🎯 一句话:APISIX = OpenResty(Nginx 的 Lua 编程能力) + etcd(配置中心 + watch 热更新) + radixtree 路由 + 插件系统(按 priority 在 Nginx 各阶段运行)。改配置写进 etcd,所有网关节点 watch 到秒级生效、无需 reload。
OpenResty 内核
Nginx + LuaJIT,用 Lua 在 Nginx 各阶段编程。
全动态热更新
etcd watch,加路由/改插件不用 reload。
104 个插件
鉴权/限流/可观测/AI,按 priority 编排。
radixtree 路由
高性能前缀树路由匹配。
apisix/(Lua),核心是 init.lua(请求生命周期)+ plugin.lua(插件)+ router.lua(路由)+ core/(基础设施)。架构全景(动起来看)
下图那颗发光小球是"一个请求进 APISIX → 匹配路由 → 跑插件 → 转发上游"的旅程。从上到下:请求 → Nginx 阶段 → APISIX 核心 → 上游。
心智模型是"请求进 → 匹配路由 → 选插件 → 各阶段跑插件 → 负载均衡转发上游":
nginx -s reload。这和传统 Nginx"改配置要 reload"是本质区别。怎么用这份教程
每天 30 分钟
一天一个独立页面,跟着"今日小结 + 动手"收尾。
零基础友好
不假设你懂 Lua/OpenResty/Nginx 阶段,术语首次出现都有大白话解释。
精确到行号
关键代码标 文件:行号,可在真源码里跳转对照。
项目全景(Lua 网关)
APISIX 是什么、OpenResty/etcd、和 Envoy/Higress 对照。
OpenResty 与 Nginx 阶段
init/init_worker/access/header_filter/body_filter/log/balancer。
启动流程
bin/apisix CLI → nginx.conf 生成 → http_init/http_init_worker。
请求生命周期总览
http_access_phase 逐段:ctx→路由→consumer→plugin→upstream。
core.ctx 与 api_ctx
请求上下文、ngx.ctx、变量惰性求值。
路由 router
radixtree、router_http/router_ssl、匹配流程。
配置中心 etcd
config_etcd watch 增量同步 vs config_yaml standalone。
六大抽象对象
Route/Service/Upstream/Consumer/Plugin_config/Global_rule。
schema 校验
schema_def、core.schema、jsonschema。
upstream 与 balancer
负载均衡 roundrobin/chash/least_conn、健康检查。
插件机制全景
plugin.load、priority、phase、filter 选插件。
插件运行
run_plugin 各阶段、global_rules 全局插件。
插件配置合并
merge_service_route/merge_consumer_route。
鉴权与 consumer
key-auth/jwt-auth、consumer 识别与匹配。
典型插件精读
limit-count 限流 / proxy-rewrite / ai-proxy。
服务发现 discovery
nacos/consul/dns/eureka/kubernetes。
Admin API 与 control API
admin/ 增删改配置、control 健康检查接口。
stream 子系统
L4 TCP/UDP 代理、stream_preread_phase。
SSL/secret/wasm/pubsub
动态证书、密钥管理、Wasm 插件、发布订阅。
部署与收官串讲
bin/apisix、config.yaml + 三种网关大对比。
✅ 全部 20 天已就绪。零基础也能跟——每个 Lua/Nginx 概念都有大白话铺垫。