DCTS/README.md
Asfmq b91f1e4fa5 feat(server,dashboard): 引入多工作流数据隔离、安全中间件与前端 ESM 模块化重构
- server: 实现按 workflow_name 的多工作流数据隔离与旧数据库平滑迁移机制
- server: 新增 API Key 认证(auth)、限流中间件(rate_limit)与运维备份接口(admin)
- server: 统一 AppError 错误处理体系,重构调度器 scheduler 支持工作流级重置与抢占
- node: 节点 ID 缺失时自动生成随机 UUID,原生支持 `docker compose --scale node=N` 动态扩容
- dashboard: 前端模块化重构(state/api/components),升级 CSS 变量设计系统与 Toast 通知
- docker/docs: 更新 /healthz 健康检查、部署脚本 IP 配置及数据库设计文档
2026-07-28 21:54:02 +08:00

6.9 KiB
Raw Blame History

DCTS (Distributed Computing TLUSTY/SYNSPEC)

基于 Rust 构建的高性能分布式恒星大气模型TLUSTY与合成光谱SYNSPEC网格计算调度系统。


💡 项目简介

DCTS 是专为恒星光谱计算设计的分布式计算控制系统。通过将多维度参数网格(如 Teff, log g, log He, log C, log N, log O离散化为独立计算点DCTS 能够在 Master 服务端统一管理任务队列与计算状态,由分布在不同物理节点上的 Worker 离散执行 4 阶段物理收敛链,实现自动化调度、种子传递、发散回退与高吞吐并行计算。


🚀 快速开始 (Quickstart)

1. 编译系统

cd dcts
cargo build --release

编译产物位于 target/release/

  • server:调度与 API 主服务端
  • node:计算节点后台进程
  • sync_seeds:种子同步管理工具

2. 构建前端与启动服务端 (Master & Web Dashboard)

首先编译前端全域实时网格可视图看班:

cd dashboard && npm install && npm run build && cd ..

运行后端处理与管理主程序 (Master)

./target/release/server --workflow config.yaml --port 8090

服务端启动后将通过分级自动绑定监听:

  • 开放调配 RESTful 接口 (/api/...): 为算力节点群与客户调控工具开放的高速接口池。
  • 实时监控分析空间: 指向 dashboard/dist,使用通用现代浏览器访问 http://127.0.0.1:8090/ 即可免额外网关无障碍视见计算态势全局状态台。

3. 启动计算节点 (Worker)

在 Worker 节点配置 .env 环境变量:

DCTS_NODE_ID=node-worker-01
DCTS_SERVER_URL=http://<MASTER_IP>:8090
DCTS_MAX_SLOTS=4

运行节点进程:

./target/release/node

节点会自动加载 .env,与服务端握手注册、下载缺失的基础原子数据与可执行程序,并开始循环 Claim 任务执行计算。


🔐 安全与鉴权 (Security & Auth)

DCTS 采用分层鉴权模型,公网部署务必按下表配置凭据。

鉴权主体

主体 环境变量 用途 持有方式
Admin DCTS_ADMIN_TOKEN Dashboard 登录、工作流 CRUD、起停计算 人工Dashboard 输入
Enrollment DCTS_ENROLLMENT_TOKEN 节点首次注册领取专属 token 部署脚本/人工
Node (服务端自动颁发) 心跳、领任务、上报、下载数据 节点本地 .node_token 文件(权限 600

兼容:旧变量 DCTS_AUTH_TOKEN 仍有效,自动同时充当 Admin + Enrollment 凭据(建议迁移到上面两个独立变量)。

节点注册流程L2

  1. 启动时优先读取本地 runtime/.node_token;不存在则用 DCTS_ENROLLMENT_TOKEN/api/node/register
  2. 服务端注册成功后颁发该节点专属 token仅返回一次DB 只存 SHA-256 hash节点持久化到 .node_token
  3. 后续所有请求携带专属 token服务端按 token 反查 node_id 鉴权。
  4. 吊销/重发:通过 Dashboard「节点凭据管理」面板或下方管理 API 操作。

节点凭据管理 APIAdmin 角色)

方法 路径 说明
GET /api/admin/nodes 列出全部节点及凭据状态(在线/token 有效/吊销/颁发时间)
POST /api/admin/nodes/:node_id/revoke 吊销指定节点 token立即失效幂等
POST /api/admin/nodes/:node_id/reissue 重新颁发 token返回新明文旧 token 失效)

所有端点要求 Admin tokenAuthorization: Bearer <DCTS_ADMIN_TOKEN>)。被攻陷节点持有的 node token 无权访问这些端点,因此吊销/重发始终是管理员主动行为。

公网部署清单

# 生成强随机 token
openssl rand -hex 32
# .env服务端 + 节点共享此文件时各自读取所需变量)
DCTS_ADMIN_TOKEN=<强随机值>
DCTS_ENROLLMENT_TOKEN=<强随机值>

TLS 反代(推荐 Caddy自动 HTTPS

# 1. 编辑 Caddyfile把 dcts.example.com 改为真实域名
# 2. 启用 public profile 拉起反代
docker compose --profile public up -d --build
# 3. 节点的 DCTS_SERVER_URL 改为 https://你的域名

默认安全策略

  • CORS:仅允许同源或本地 Originlocalhost / 127.0.0.1 / [::1])。
  • 请求体限制:普通 API 10MB任务上报 256MB。
  • 安全响应头CSP / X-Content-Type-Options / X-Frame-Options / Referrer-Policy 默认开启。
  • 审计日志所有写操作POST/PUT/DELETE记录 subject + method + path(不记请求体)。
  • 应急调试DCTS_AUTH_DISABLE=1 跳过全部鉴权(仅本地,切勿生产)。

🏛️ Workspace 核心模块

Crate / Tool 类型 职责说明 详细文档
common Library 提供底层配置解析、输入文件构造、收敛判定、子进程调用与种子匹配引擎 README
server Binary 基于 Axum 的中央 API 服务端,负责网格生成、节点心跳、任务调度与状态持久化 README
node Binary Worker 节点 Daemon 进程,负责任务抢占、自适应环境预热、计算链执行与产物汇报 README
mq Library 基于 SQLite 构建的高可靠事务型分布式任务队列引擎 README
dashboard Web UI 基于 Vite 与原生高交互前端语系创写的分层式恒星网格任务可观测可视化控表空间 说明详情
sync_seeds Tool CLI 离线 / 增量种子数据文件(.7)高效率同步工具 README

📚 详细文档导航 (docs/)

系统技术细节按以下主题组织:


📄 License & 联系方式

  • License: MIT / Apache-2.0
  • Maintainers: TLUSTY High-Performance Computing Workgroup