Serverless(无服务器计算)正在成为云计算领域增长最快的范式之一。开发者只需编写业务逻辑函数,无需关心服务器的部署、扩缩容与运维,平台按实际调用次
数和执行时长计费。AWS Lambda、阿里云函数计算、腾讯云 SCF 等产品已在生产环境中被广泛采用。
FnForge 定位于自建 Serverless 函数执行平台,面向以下典型行业场景:
1. 企业内部 FaaS 平台建设
中大型企业往往因数据安全、合规要求或成本控制,需要在私有云或混合云环境中自建函数计算平台。FnForge
提供了完整的函数生命周期管理(创建、编译、部署、调用、监控),可作为企业级 FaaS 平台的核心引擎,替代对公有云 Lambda 的依赖。
2. 边缘计算与 IoT 数据处理
物联网场景中,海量设备产生的数据需要实时处理。FnForge 支持多种调用模式(同步 HTTP、异步 Kafka、SSE 流式推送、WebSocket
双向通信),天然适合边缘节点上的事件驱动计算。传感器数据可通过 HTTP 触发函数实时计算,结果通过 SSE 流式推送到监控大屏。
3. 在线判题系统(OJ)与代码沙箱
FnForge 将用户代码在 Docker 容器内隔离编译和执行,天然满足在线编程教育平台的安全沙箱需求。支持 C++/Go/Python/Java 多语言,配合资源限制(内存
512MB、CPU 1核、进程数 64)和超时控制,可直接作为代码评测引擎使用。
4. AI 推理函数编排
大模型时代,许多 AI 应用需要将预处理、模型调用、后处理编排为函数链。FnForge 的异步 Kafka 管道和流式输出能力,使其适合作为 AI
推理工作流的执行层——用户函数调用外部大模型 API,通过 SSE 将生成结果逐 token 流式返回给客户端
FnForge 是一个分布式 Serverless 函数执行平台,提供从函数创建到监控的完整闭环能力。
函数生命周期管理
用户通过 HTTP API 或 Admin UI 上传函数源码(ZIP 包),平台自动检测语言类型,在对应的 Docker
容器中完成编译(C++/Go)或打包(Python/Java),生成可执行产物存储到 MinIO 对象存储。编译状态全程可追踪(PENDING → COMPILING →
READY/FAILED),支持版本管理和回滚。
多语言运行时支持
当前支持 C++、Go、Python、Java 四种语言,每种语言拥有独立的 Runner 镜像。C++ 基于 clang++ 编译,提供 nlohmann/json 头文件;Go
使用原生编译;Python/Java 通过模板注入 + 归档打包方式运行。用户只需实现标准接口(如 C++ 的 Handle() 或
HandleStream()),平台自动注入运行时框架。
五种调用模式
- 同步 HTTP:标准请求-响应模式,适合快速计算场景
- 异步 HTTP:立即返回 task_id,任务通过 Kafka 分发给 Worker 集群异步执行,客户端轮询结果
- SSE 流式推送:函数通过 Writer 接口逐块写出数据,客户端实时接收流式输出
- WebSocket 双向通信:支持交互式场景,客户端可持续向函数发送消息
- gRPC 桥接:REST-JSON 封装的 gRPC 调用(演进中)
分布式定时调度
内置 Cron 调度器,支持标准 Cron 表达式。通过 Redis SETNX 实现 Leader 选举(30 秒 TTL,10
秒续约),确保集群环境下定时任务不重复执行。调度触发后,任务发布到 Kafka 由
技术栈
后端:Go 1.24+,Gin Web 框架,GORM ORM,gRPC + Protobuf,gorilla/websocket
存储:MySQL 8.0(元数据)、Redis 7(缓存/分布式锁)、MinIO(对象存储)、Kafka 7.6(异步队列,KRaft 模式免 ZooKeeper)
容器:Docker SDK for Go,Alpine Linux 基础镜像
可观测性:OpenTelemetry + Jaeger、Prometheus + Grafana、Uber zap
前端:Vue 3 + TypeScript + Element Plus + Pinia + Vite
部署:Docker Compose(开发)、Kubernetes manifests(生产)
架构设计
采用三层微服务架构:Protocol Gateway(:8080)作为多协议入口层,统一处理 HTTP/SSE/WebSocket/gRPC 请求;Function
Manager(:8081)管理函数生命周期;Execution Engine(:8082)负责同步/异步调用编排。另有 Worker(:8083)作为 Kafka
消费者执行异步任务,Scheduler(:8084)负责定时触发。各服务无状态,可独立水平扩展。
实现亮点
1. Supervisor 预分叉进程池模型
最核心的设计创新。每个语言运行时容器内运行一个用 Go 编写的轻量级 Supervisor 进程(零外部依赖),Supervisor 预先 fork 出 N 个 Worker 进程(2~200
个)。调用请求到达时,Supervisor 通过管道协议(READY/DONE 帧)将任务分发给空闲 Worker,Worker
执行完毕后回
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论