Appearance
系统微服务架构(Architecture)
Neuro OJ 采用松耦合、高内聚的现代化分布式微服务架构。系统以 RESTful API、Redis 异步消息队列(MQ)、SSE 实时事件广播 与 双容器 Docker 隔离沙箱 为骨干,实现了业务逻辑与重型算力评测的完全解耦。
全景微服务拓扑图
核心服务组件与技术栈
| 组件模块 | 核心技术栈 | 架构职责与边界 |
|---|---|---|
noj-core | Deno 2 + Hono + Drizzle ORM | 全站单一事实源。承载所有对外业务 RESTful API、JWT 颁发与 RBAC 访问仲裁、题目与比赛 CRUD、Redis MQ 生产者与消费者、审计日志落库 |
noj-ui | Nuxt 4 + Vue 3 + Tailwind CSS | 现代 Web 门户。Nitro 引擎在服务端统一托管注入 HTTP-Only JWT Cookie(noj:token),支持 Monaco Editor 智能补全与移动端响应式排版 |
noj-judge | Rust + Tokio + Bollard | 高性能评测调度引擎。监听 Redis 队列,管理双容器生命周期,执行毫秒级 NDJSON 帧路由,实施 CPU/内存/网络严格熔断 |
noj-llm-gateway | Deno 2 + Hono + ioredis | LLM 专有安全代理。AES-256 加密托管出题人上游 Provider API Key,为评测容器动态签发短期 eval_token,强制实施频率限制与用量审计 |
noj-lmcc-extension | TypeScript + VS Code API | 本地 IDE 竞赛插件。支持参赛选手在本地 VS Code 内浏览题目、查看样例并直接提交 Python 代码与获取评测反馈 |
noj-cli | Deno 2(deno compile 单二进制) | 官方统一生产部署与运维工具。负责一键安装部署、集群启停、平滑升级、数据备份、恢复演练与环境体检 |
基础设施角色
- PostgreSQL 16:业务唯一关系型持久层。采用 Drizzle ORM 驱动,依托迁移文件(
drizzle/*.sql)保证 Schema 严格一致性; - Redis 7:承载高性能任务调度队列(
noj:queue:judge与noj:queue:results)、高频缓存、物化视图刷新节流器以及撤销令牌(JTI)黑名单; - MinIO / AWS S3:云原生对象存储。通过安全加固存储纯净题目评测包、选手上传的 ZIP 训练成果、用户头像与消息附件;
- Nginx:作为反向代理接入层,处理前端静态资源缓存,边缘终结 TLS,并将 API 请求平滑反代至核心微服务。
一次代码提交的端到端时序生命周期
以下展示一位选手从点击提交按钮到界面弹出评测报告的全流程数据轨迹: