模块与执行引擎
工程总览
apigo-cloud/
├── apigo-boot/ # 业务模块父工程
│ ├── apigo-admin/ # 管理配置模块 (端口 9377)
│ ├── apigo-api/ # 接口执行模块 (开放接口入口)
│ ├── apigo-core/ # 执行引擎核心
│ ├── apigo-db-spi/ # 数据源驱动 SPI
│ └── apigo-plugin/ # 数据源扩展插件
├── apigo-gateway/ # 网关服务 (端口 9600)
├── apigo-common/ # 公共组件
│ ├── apigo-common-auth/ # 认证上下文与权限模型
│ ├── apigo-common-log/ # 日志组件
│ ├── apigo-common-redis/ # Redis 缓存组件
│ └── apigo-common-base/ # 基础工具与常量
├── apigo-web/ # 前端门户 (端口 7001)
└── db/ # 数据库脚本
模块职责
| 模块 | 核心职责 | 关键类 |
|---|---|---|
| 前端门户 apigo-web | 产品可视化与交互编排 | API Hub、工作台、服务管理、系统管理、AI 问数 |
| 配置中心 apigo-admin | 管理接口定义与规则、配置下发 | LoadingData、ApiRuntimeCacheService、RedisRouteService |
| 执行服务 apigo-api | 开放接口 HTTP 适配与鉴权 | ApiServiceController、AuthInterceptor、McpSkillController |
| 执行核心 apigo-core | 通用执行引擎与驱动封装 | ApiRuntimeService、ApiModeExecutorRouter、SqlModeExecutor、ProxyModeExecutor、LayoutModeExecutor |
| 数据源 SPI apigo-db-spi | 数据源驱动接口定义 | DataSourceDriver、DataSourceManager |
| 数据源插件 apigo-plugin | 数据源驱动实现 | JdbcDataSourceDriver、DefaultDataSourceDriver |
| 网关 apigo-gateway | 流量接入与运行治理 | ApiRouteDefinitionRepository、AuthFilter、CacheFilter、IPFilter、LogFilter、MockFilter、WafFilter |
执行引擎:策略模式 + 路由器
// 执行器接口
public interface ApiModeExecutor {
boolean supports(ApiDetails apiDetails); // 判断是否支持该接口类型
ApiRuntimeResult execute(ApiRuntimeContext context); // 执行接口
}
三种内置执行器:
| 执行器 | 处理类型 | 说明 |
|---|---|---|
SqlModeExecutor | SQL / TABLE / SCRIPT | 执行 SQL 脚本,支持事务、分页、参数绑定 |
ProxyModeExecutor | PROXY | HTTP 代理转发,支持原始字节流透传 |
LayoutModeExecutor | LAYOUT | 图式编排(DAG),多节点串行/并行/条件执行 |
统一运行时链路:
关键设计:
- ThreadLocal 上下文切换 — 编排内嵌 API 节点递归调用时临时切换执行上下文,执行完毕恢复
- 深度限制 — 防止编排循环调用导致栈溢出
- rawBody 透传 — 代理二进制响应跳过 JSON 序列化直写输出流
新增接口类型只需实现 ApiModeExecutor 并注册为 Spring Bean,路由器自动发现。
网关过滤器链
| 顺序 | 过滤器 | 职责 |
|---|---|---|
| -100 | LogFilter | 请求日志、traceId 生成、响应体捕获 |
| -100 | MockFilter | Mock 隔离 /mock/{envCode}/** |
| -40 | WafFilter | SQL 注入 / XSS / 路径遍历检测 |
| -20 | AuthFilter | 开放接口认证(策略模式) |
| -19 | JwtCredentialStripFilter | JWT 认证成功后剥离凭证与可伪造身份头,防 token passthrough |
| -10 | IPFilter | IP 黑白名单 |
| -1 | CacheFilter | 缓存命中直接返回 |
| 1 | ErrorFilter | 转发异常兜底 |
认证策略通过 Map<String, AuthService> 自动注入收集:
| 策略 | Bean 名 | 说明 |
|---|---|---|
AppKeyAuthService | app_key | Header X-AppKey 与接口授权应用列表比对 |
AppSecretAuthService | app_secret | HMAC 签名认证(SM3 / HmacSHA256),Redis SETNX 防重放 |
OAuth2AuthService | oauth2 | OAuth2 客户端凭证,校验 Bearer token 并从 claims 解析应用 |
JwtBearerAuthService | jwt | 企业 IdP JWT:JWKS 验签 + claims 校验,按 (jwtIdp, subject) 反查应用,使用标准 401/403/503 |
动态路由
ApiRouteDefinitionRepository 基于 Spring Cloud Gateway 的 Redis 路由仓库扩展:
- 启动时从 Redis 全量加载路由定义
- 同步加载 Sentinel 限流(
GatewayFlowRule)与熔断(DegradeRule)规则 - Redis Pub/Sub 监听配置变更,增量刷新路由与规则
- 定期对账任务确保 Redis 与数据库一致
公共组件
| 组件 | 用途 |
|---|---|
| apigo-common-auth | ApiThreadLocal、ApiDetails、AppDetails 认证上下文 |
| apigo-common-log | BLog、BLogAspect 日志模型与切面 |
| apigo-common-redis | RedisService、RedisConfig 缓存工具 |
| apigo-common-base | 基础工具与常量 |