乐于分享
好东西不私藏

原生AI-API网关

原生AI-API网关

近期有很多伙伴社区或私下问过我如何快速构建一个AI网关,类似替代NewAPI实现完全自己可控的办法,本文为一套原生自主搭建的AI网关技术解决方案分享给大家,大家可以拿来作参考,有建议也可以评论区评论。

一、目标

目标:自研一套完全独立的AI API网关系统,替代NewAPI。所有鉴权、权限、安全能力均自研,不依赖任何外部平台。

核心定位:AI模型调用的统一接入层,提供多模型代理、API Key管理、配额限流、用量统计、安全审计等全套能力。

二、整体架构

核心组件说明

组件

职责

Nginx/NLB

入口流量分发,SSL/TLS卸载,IP访问控制

API Gateway Service

核心代理服务,执行中间件链(Go + Gin)

Key Manager

自研API Key 生成/校验/配额管理,数据存Mysql

Auth 模块

API Key 身份认证 + 模型权限校验

Rate Limiter 模块

基于Redis 的RPM/TPM 限流

Channel Router 模块

多渠道路由、负载均衡、Failover

AuditLogger模块

异步审计日志写 Kafka

Redis Cluster

限流计数、Token配额实时扣减、热点缓存

MySQL

API Key、渠道配置、用量记录持久化

Kafka

审计日志异步罗盘

Nacos/etcd/zookeeper

服务注册与发现,多实例动态路由

Admin Dashboard

Web 管理后台(渠道/Key/报表)

三、请求处理流程

3.1 标准请求时序

3.2 中间件处理链

请求进入 Nginx--> TLS 卸载 + IP 黑白名单过滤(Nginx层)--> API Key 身份认证(自研Auth模块,查Mysql/Redis缓存)--> 模型权限校验(Key剩余 Token是否充足)--> 限流(RPM/TPM,基于Redis,Key级别 + 全局级别)--> 渠道路由(加权负载均衡 + 健康检查 Failover)--> 上游代理转发(含SSE流式)--> 异步审计日志(写Kafka)--> 异步扣减Token配额(写Redis + MySQL)--> 返回客户端

3.3 渠道Failover流程

四、安全设计

第一层:网络层(Nginx)

  • HTTPS/TLS 强制加密
  • IP 黑白名单(Nginx allow/deny)
  • 请求大小限制、慢速请求防御

第二层:应用层(自研Auth模块)

  • API Key HMAC 签名校验
  • KEY 与可用模型绑定
  • Key 有效期控制
  • 配额实时校验
  • 异常访问检测(短时间大量失败请求自动封禁)

4.1 API Key体系

  • API Key由网关Admin后台统一生成管理,无需对接外部平台
  • Key格式:sk-{base62随机串} (与OpenAI格式兼容)
  • Key 存储:MySQL(主存储)+ Redis(校验热缓存、TTL5分钟)
  • Key 属性:名称、绑定用户、可用模型列表、Token配额、有效期、状态

4.2 权限校验流程

4.3 限流策略

维度

策略

存储

API Key 级别

RPM/TPM 独立限流

Redis(滑动窗口)

全局渠道限流

上游API总QPS保护

Redis

模型级别

单模型并发控制

Redis

IP级别

异常IP自动封禁

Redis + Nginx

五、多模型渠道管理

5.1 支持的上游提供商

类型

提供商

协议

海外模型

OpenAI、Anthropic Claude、Google Gemini

HTTPS REST

国内模型

阿里通义、百度文心、字节豆包、腾讯混元

HTTPS REST

私有部署

内部自建模型

5.2 渠道注册结构

字段

说明

channel_name

渠道名称(唯一)

type

提供商类型(OpenAI/Anthropic/custom...)

base_url

上游API地址

api_key

上游API Key(AES-256加密存储)

models

支持的模型列表

weight

负载均衡权重

priority

故障转移优先级

timeout

超时时间(默认30s)

rate_limit

上游调用速率限制

status

启用/禁用/故障

5.3 模型路由策略

客户端请求 model=gpt-4o---> 路由表查找:gpt-4o --> [渠道A(权重3),渠道B(权重1)]---> 加权随机选择 --> 渠道A---> 渠道A 健康? --是--> 转发--否--> 自动切换渠道B(Failover)

5.4 数据库设计

主要表说明

表明

说明

关键字段

channels

上游渠道配置

name,type,base_url,weight,status

tokens

API Key 信息

key_hash,user_id,quota,user_quota,models

logs

请求用量记录

token_id,channel_id,model,prompt_tokens,completion_tokens,cost

users

管理员账户

username,role,passwd_hash

model_prices

模型单价配置

model_name,input_price,output_price

七、部署架构

7.1 基础设施清单

组件

国内

海外

Gateway Service

2副本 (腾讯/阿里 托管K8s)

2副本(AWS EKS)

MySQL

主从集群

主从集群

Redis

Redis Cluster

Redis Cluster

Nacos/etcd/Zookeeper

独立集群

独立集群

Kafka

独立集群(审计日志)

独立集群

Nginx/负载均衡

阿里SLB/腾讯CLB + 七层域名

AWS-NLB + 七层域名

7.2 网络隔离

国内/海外数据库完全隔离,数据不跨境

服务间通信VPC内网

外部访问统一经Nginx + TLS,不依赖外部安全网关

八、项目排期

假设投入:2名后端(Go) + 1名前端 + 0.5名运维

九、技术选型

方向

选型

理由

后端语言

Go

高并发低延迟,适合代理场景

Web框架

Gin

轻量高性能

服务发现

Nacos/etcd

多实例动态路由

消息队列

Kafka

审计日志异步写入,稳定性高

缓存/限流

Redis Cluster

滑动窗口限流、配额热缓存

数据库

MySQL 8.0

成熟稳定

前端

React + Ant Design Pro

管理后台快速开发

容器化

Docker + K8S

建议选择成熟第三方云厂商托管,如AWS、阿里云、腾讯云

监控

Prometheus + Grafana

指标采集可视化

网关入口

Nginx

TLS卸载、IP控制、完全自主管理

十、风险与建议

风险

说明

缓解措施

SSE流式代理复杂度

断流、超时、背压处理

阶段一MVP重点投入、充分测试

上游API格式差异

各厂商协议不

统一Adpter层,每家厂商单独适配

自研鉴权安全性

独立实现需防止Key泄露

HTTPS强制、Key哈希存储、Redis短期缓存

数据迁移风险

Key/配额迁移可能影响用户

灰度切流+双写过渡期

海外合规

跨境数据传输请求

国内/海外数据完全隔离