轻量级分布式任务调度系统
基于 Go + NATS + Etcd + Kubernetes 构建的高可用任务调度平台
全 AI 完成,人工部分只写了这一句话
- 🚀 高可用架构 - Master 多实例 + Etcd 选主,自动故障转移
- 📦 智能调度 - Bin Packing 装箱算法,高效利用集群资源
- 🔄 自愈能力 - Worker 宕机自动检测,任务自动重调度
- 📊 实时监控 - WebSocket 实时推送,集群热力图可视化
- 🔌 存储适配 - 支持 S3、FTP、本地文件系统
- 🌐 现代前端 - Vue3 + Vite + TailwindCSS
| 组件 | 技术 |
|---|---|
| 后端 | Go 1.25+, Gin, GORM |
| 前端 | Vue3, Vite, Pinia, ECharts |
| 消息队列 | NATS JetStream |
| 服务发现 | Etcd |
| 数据存储 | PostgreSQL |
go mod download# Docker 方式
docker run -d --name postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=scheduler \
-p 5432:5432 \
postgres:16# Docker 方式
docker run -d --name etcd \
-p 2379:2379 \
-p 2380:2380 \
quay.io/coreos/etcd:v3.5.9 \
/usr/local/bin/etcd \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-client-urls http://0.0.0.0:2379# Docker 方式 (启用 JetStream)
docker run -d --name nats \
-p 4222:4222 \
-p 8222:8222 \
nats:latest \
-js💡 提示:
-js参数用于启用 JetStream 功能,这是本系统必需的。
创建 docker-compose.yml:
version: '3.8'
services:
postgres:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: scheduler
etcd:
image: quay.io/coreos/etcd:v3.5.9
ports:
- "2379:2379"
command:
- /usr/local/bin/etcd
- --advertise-client-urls=http://0.0.0.0:2379
- --listen-client-urls=http://0.0.0.0:2379
nats:
image: nats:latest
ports:
- "4222:4222"
- "8222:8222"
command: ["-js"]启动:
docker-compose up -dpsql -U postgres -f deploy/init.sql编辑 configs/config.yaml,配置数据库连接等信息。
go run cmd/master/main.gogo run cmd/worker/main.gocd web
npm install
npm run dev访问 http://localhost:5173 即可使用系统。
完整的部署指南、API 文档和架构说明请参阅:
cd docs
npm install
npm run start访问 http://localhost:3000 查看完整文档,包括:
- 📘 系统架构
- 🚀 快速开始
- 📦 Kubernetes 部署
- 🔌 API 参考
lightweight-scheduler/
├── cmd/ # 启动入口
│ ├── master/ # 控制平面
│ └── worker/ # 数据平面
├── internal/ # 核心业务逻辑
│ ├── master/ # Master 实现
│ ├── worker/ # Worker 实现
│ ├── store/ # 数据存储封装
│ └── mq/ # NATS 消息队列
├── web/ # Vue3 前端
├── docs/ # Docusaurus 文档
├── configs/ # 配置文件
└── deploy/ # 部署文件
GNU Affero General Public License v3.0