Skip to content

系统架构 ​

本页回答三个问题:Neuro OJ 由哪些模块组成、一次提交请求经过哪些环节、各类数据落在哪里。

Neuro OJ 由多个独立模块组成,通过 RESTful API、Redis 消息队列(MQ) 与 内部 HTTP 服务协作:

模块职责 ​

模块运行时职责
noj-coreDeno 2 + HonoRESTful API、JWT 鉴权 + RBAC、题目/提交/竞赛/社区 CRUD、Redis MQ Producer/Consumer、LLM 管理 API 客户端
noj-uiNuxt 4 + Vue 3Web 前端;Nitro 反向代理注入 JWT Cookie(noj:token)
noj-judgeRust + TokioDocker 沙箱评测,双容器架构(Evaluator + Solution)
noj-llm-gatewayDeno + HonoLLM 调用网关:上游 Provider API Key 加密托管、短期 eval_token、限流/额度与用量审计;Evaluator 只通过它访问外部 LLM API
noj-lmcc-extensionVS Code Extension API + TypeScriptLMCC IDE 登录、题目选择、Python 代码提交与结果反馈
noj-cliDeno 2(deno compile)生产安装、启停、升级、备份/恢复/演练、配置校验

基础设施 ​

组件用途
PostgreSQL 16业务数据持久化
Redis 7MQ(评测任务/结果)+ 缓存/撤销记录
MinIO / S3对象存储(评测支持包、artifact、头像、私信图片)
Nginx生产入口反代(TLS 由外部边缘终止)

评测交付链路 ​

生产环境使用 Docker Compose 编排。评测支持包通过 noj-storage:// 写入持久存储,再由 noj-core 转换为 noj-download:// 交给 Judge Worker 下载,详见存储与评测包交付。

单一事实源

noj-core 是唯一的业务 API 入口;noj-ui 不直连数据库或 Redis。模块内部细节见各模块仓库文档(noj-core/CLAUDE.md 等)。

详细模块职责与开发约定见仓库根目录 AGENTS.md。

Neuro OJ 是一个独立社区项目,与 CCF、LMCC、IOAI 及 NOAI 无官方关系。