技术架构
KOGUN 建立在成熟开源组件之上。下面是当前实际运行的技术栈、规划引入的分布式算力组件,以及同类开源参考实现 —— 均附许可证与官方仓库,可直接核对。
分层结构
任务从提交到交付经过四层,每层职责单一、可独立替换。
接入层
Nginx 反代与 TLS 终止 → FastAPI 提供 REST 与 WebSocket。节点心跳、任务状态、控制台均走同一入口。
调度层
任务拆解为子任务写入池,按 算力评分 与合规区域匹配节点;结果经 哈希重算 + 抽检 双重复核后计入结算。
执行层
贡献者节点在沙箱内认领执行,全程本地运行;命名空间与资源限额隔离,数据不越出内网边界。
数据层
PostgreSQL 存节点、任务与账务;缓存与幂等键降低重复查询;每笔任务留来源 URL 与批次号,可回溯审计。
当前技术栈
线上已运行的开源组件。
| 组件 | 作用 | 仓库 | 许可 |
|---|---|---|---|
| FastAPI | REST 接口与 WebSocket 服务框架 | fastapi/fastapi | MIT |
| uvicorn | ASGI 服务器,承载 API 进程 | encode/uvicorn | BSD-3 |
| PostgreSQL | 节点、任务、账务与审计数据存储 | postgres/postgres | PostgreSQL |
| asyncpg | 异步数据库驱动 | MagicStack/asyncpg | Apache-2.0 |
| SQLAlchemy | ORM 与数据访问层 | sqlalchemy/sqlalchemy | MIT |
| Nginx | 反向代理、TLS 终止与静态资源 | nginx/nginx | BSD-2 |
| Leaflet | 算力节点分布地图(OSM / Esri 底图) | Leaflet/Leaflet | BSD-2 |
| systemd | 服务守护、健康重启与自愈 | systemd/systemd | LGPL-2.1 |
规划引入
按「单机可跑、渐进引入」原则筛选,先解真实瓶颈再上规模,不做过度设计。
调度与编排
| 组件 | 解决的问题 | 仓库 | 许可 |
|---|---|---|---|
| Ray | 子任务并行编排与跨节点调度,替代进程内自研调度 | ray-project/ray | Apache-2.0 |
| K3s | 轻量 Kubernetes,单机即可起,为多节点横向扩展留口 | k3s-io/k3s | Apache-2.0 |
| Volcano | K8s 上的批任务与 GPU 队列调度、gang scheduling | volcano-sh/volcano | Apache-2.0 |
消息与队列
| 组件 | 解决的问题 | 仓库 | 许可 |
|---|---|---|---|
| NATS | 轻量消息总线,承载心跳与任务派发,替掉轮询 | nats-io/nats-server | Apache-2.0 |
| Valkey | BSD 分支的高性能缓存与 Streams 队列(开源许可无变更风险) | valkey-io/valkey | BSD-3 |
| Celery | 成熟的 Python 异步任务队列,处理离线批作业 | celery/celery | BSD-3 |
可观测与治理
| 组件 | 解决的问题 | 仓库 | 许可 |
|---|---|---|---|
| Prometheus | 指标采集与时序存储,节点在线率与任务成功率可视化 | prometheus/prometheus | Apache-2.0 |
| Grafana | 监控面板与告警,替代人工巡检 | grafana/grafana | AGPL-3.0 |
| etcd | 服务注册与选主,为多实例部署提供一致性基础 | etcd-io/etcd | Apache-2.0 |
推理与存储
| 组件 | 解决的问题 | 仓库 | 许可 |
|---|---|---|---|
| vLLM | 高吞吐推理引擎,批量向量化与模型服务后端 | vllm-project/vllm | Apache-2.0 |
| SGLang | 结构化输出与高并发推理,降低单条成本 | sgl-project/sglang | Apache-2.0 |
| Triton Inference Server | 多框架模型统一部署与服务化 | triton-inference-server/server | BSD-3 |
| SeaweedFS | 海量小文件对象存储,承载采集语料与向量文件 | seaweedfs/seaweedfs | Apache-2.0 |
隔离与身份
| 组件 | 解决的问题 | 仓库 | 许可 |
|---|---|---|---|
| Firecracker | microVM 级强隔离,贡献者节点执行不可信子任务 | firecracker-microvm/firecracker | Apache-2.0 |
| gVisor | 用户态内核沙箱,隔离度介于容器与虚拟机之间 | google/gvisor | Apache-2.0 |
| Keycloak | 统一身份与权限,面向企业客户的 SSO 与子账号 | keycloak/keycloak | Apache-2.0 |
数据质量与计量
| 组件 | 解决的问题 | 仓库 | 许可 |
|---|---|---|---|
| Great Expectations | 数据质量契约,交付前自动校验字段完整率与格式 | great-expectations/great_expectations | Apache-2.0 |
| OpenMeter | 用量计量与按量计费,结算口径与账单一致 | openmeterio/openmeter | Apache-2.0 |
同类开源参考
分布式算力领域已有成熟实现,架构与容错设计可直接借鉴。
| 项目 | 参考价值 | 仓库 | 许可 |
|---|---|---|---|
| exo | 用消费级设备组集群做分布式推理,设备发现、分片与容错机制可直接参考 | exo-explore/exo | GPL-3.0 |
| Bacalhau | 「数据优先」的计算调度:任务移动到数据所在节点执行 | bacalhau-project/bacalhau | Apache-2.0 |
| Slurm | HPC 批调度的事实标准,队列与公平性算法成熟 | SchedMD/slurm | GPL-2.0 |
引入原则:单机可跑优先,先解决真实瓶颈再谈规模。KubeRay、Consul、Kafka、RabbitMQ 等项目对当前体量属过度设计,暂不引入。
引入优先级
P0可观测性(Prometheus + Grafana)与消息总线(NATS / Valkey)—— 先让系统状态可见、心跳不再靠轮询。
P1推理服务化(vLLM / SGLang)与对象存储(SeaweedFS)—— 撑住批量向量化与海量小文件交付。
P2容器编排(K3s + Volcano)与强隔离(Firecracker / gVisor)—— 节点规模上千后再引入。
全部组件均为开源项目,许可证与仓库地址可在上方逐一核对。KOGUN 不重复造轮子,只把成熟组件组合成可交付的数据任务网络。