llm-gateway-plugin
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
一个基于 OpenResty(ngx_lua)的 LLM 网关插件化进阶项目,在基础网关的路由 / 负载均衡 / 配置管理 / 重试能力之上,增加了多策略重试、自定义 Handler 动态管理、熔断器、限流退避与指标收集等可插拔能力。它面向需要在网关层对上游 LLM 服务做弹性治理(重试、熔断、退避、可观测)的部署场景。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | Lua(OpenResty / ngx_lua),Shell(启停与测试脚本) |
| 关键依赖/库 | OpenResty 内置 lua_shared_dict(状态共享)、cosocket;自定义 Handler 通过 loadstring + pcall 动态加载,无第三方 Lua 库 |
| 数据存储 | 共享内存 lua_shared_dict(熔断器状态 failure_counts / circuit_open_until、指标计数 upstream_state、Handler 缓存);配置经 admin API 写入 |
| 运行/部署方式 | OpenResty:./start.sh → openresty -p . -c conf/nginx.conf,默认监听 8080;测试 ./test.sh |
核心功能 / 亮点
- 路由 + 负载均衡 + 多策略重试(
lua/llm_gateway/router.lua、balancer.lua、config.lua):retry_policies按state(failed / next)+status_codes细分,可独立配置重试次数与超时。 - 自定义 Handler 动态管理(
lua/llm_gateway/handler_manager.lua):支持上传 / 验证 / 存储 / 删除 / 热重载,用户 handler 放在lua/plugins/custom/。 - Handler 安全检查:正则禁止
os.execute/io.popen/io.open/loadfile/dofile/debug等危险操作,并用loadstring+pcall校验返回值为 table 后才加载。 - 熔断器插件(
lua/plugins/circuit_breaker.lua):连续失败达到阈值后暂停重试(模块级跨请求状态)。 - 限流退避插件(
lua/plugins/rate_limit_handler.lua):命中 429 时指数退避delay = base * 2^(tries-1),并叠加 ±20% 随机抖动防止惊群。 - 指标收集插件(
lua/plugins/metrics_handler.lua):每次重试统计失败状态 / 服务器级别,存入lua_shared_dict做原子incr计数。 - 管理 REST API(
lua/llm_gateway/admin.lua):/admin/api管理 API 配置,/admin/handler管理自定义 handler(列举 / 上传 / 获取 / 删除)。
目录结构
1 | llm-gateway-plugin/ |
相关链接
- GitHub 仓库:llm-gateway-plugin