Skip to content

基于 Go + NATS + Etcd 构建的高可用任务调度平台

License

Notifications You must be signed in to change notification settings

Ninzore/LTScheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LT-Scheduler

轻量级分布式任务调度系统

基于 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

🚀 快速启动

1. 安装 Go 依赖

go mod download

2. 启动依赖服务

PostgreSQL

# Docker 方式
docker run -d --name postgres \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=scheduler \
  -p 5432:5432 \
  postgres:16

Etcd

# 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

NATS JetStream

# Docker 方式 (启用 JetStream)
docker run -d --name nats \
  -p 4222:4222 \
  -p 8222:8222 \
  nats:latest \
  -js

💡 提示-js 参数用于启用 JetStream 功能,这是本系统必需的。

一键启动所有服务 (Docker Compose)

创建 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 -d

3. 初始化数据库

psql -U postgres -f deploy/init.sql

4. 修改配置

编辑 configs/config.yaml,配置数据库连接等信息。

5. 启动 Master

go run cmd/master/main.go

6. 启动 Worker

go run cmd/worker/main.go

7. 启动前端

cd web
npm install
npm run dev

访问 http://localhost:5173 即可使用系统。

📖 详细文档

完整的部署指南、API 文档和架构说明请参阅:

cd docs
npm install
npm run start

访问 http://localhost:3000 查看完整文档,包括:

📁 项目结构

lightweight-scheduler/
├── cmd/                    # 启动入口
│   ├── master/            # 控制平面
│   └── worker/            # 数据平面
├── internal/              # 核心业务逻辑
│   ├── master/            # Master 实现
│   ├── worker/            # Worker 实现
│   ├── store/             # 数据存储封装
│   └── mq/                # NATS 消息队列
├── web/                   # Vue3 前端
├── docs/                  # Docusaurus 文档
├── configs/               # 配置文件
└── deploy/                # 部署文件

📄 License

GNU Affero General Public License v3.0

About

基于 Go + NATS + Etcd 构建的高可用任务调度平台

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published