433fb60f0afb580ee458f55a5bb7a3fcbc1baeee
All checks were successful
Build scheduler-backend image / build-and-push (push) Successful in 3m36s
scheduler-backend
独立的调度中心后端工程,负责:
- 管理 API
- 本地 Go handler 注册
- 手动执行
gocron定时执行- MongoDB 中的任务配置与执行记录存储
当前能力
GET /admin/scheduler/handlersGET /admin/scheduler/jobsGET /admin/scheduler/jobs/:idPOST /admin/scheduler/jobsPUT /admin/scheduler/jobs/:idPOST /admin/scheduler/jobs/:id/togglePOST /admin/scheduler/jobs/:id/runGET /admin/scheduler/executions
目录结构
cmd/api 管理 API 入口
cmd/worker 调度执行入口
internal/api Gin 路由
internal/executor 本地 handler 执行
internal/jobdef handler 定义与注册
internal/scheduler gocron 调度服务
internal/store/model Mongo 文档模型
internal/store/mongo Mongo 连接与存储实现
pkg/config 环境配置加载
pkg/log 日志封装
环境变量
默认会按下面顺序读取:
.env.env.<APP_ENV|GO_ENV|ENV>.env.local
外部进程环境变量优先级更高,不会被文件覆盖。
关键变量:
HTTP_PORT=16811
WORKER_HTTP_PORT=16812
MONGO_HOST=47.237.103.4
MONGO_PORT=27017
MONGO_USERNAME=
MONGO_PASSWORD=
MONGO_AUTHSOURCE=admin
MONGO_DATABASE=openim_v3
SCHEDULER_MONGO_DATABASE=scheduler_center
REDIS_ADDR=127.0.0.1:6379
REDIS_USERNAME=
REDIS_PASSWORD=
启动方式
一条命令启动后端
cd /Users/vet/all/workspace414/scheduler-backend
./start.sh
这个脚本会同时启动:
apiworker
并把运行信息写到:
logs/api.loglogs/worker.log
PID 文件会写到:
run/api.pidrun/worker.pid
停止方式:
cd /Users/vet/all/workspace414/scheduler-backend
./stop.sh
启动 API
cd /Users/vet/all/workspace414/scheduler-backend
GOWORK=off go run ./cmd/api
或直接运行:
./scripts/start-api.sh
默认监听:
http://127.0.0.1:16811
启动 worker
cd /Users/vet/all/workspace414/scheduler-backend
GOWORK=off go run ./cmd/worker
或直接运行:
./scripts/start-worker.sh
worker 会:
- 连接 Mongo
- 暴露健康检查端口
http://127.0.0.1:16812/healthz - 加载启用任务
- 跳过
manual - 注册
cron和interval - 到点写执行记录并执行本地 Go handler
初始化示例任务
会向 scheduler_center.job_configs 写入一条示例任务:
name=sample-jobhandlerKey=sample-handlerenabled=falsescheduleType=manualdefaultParams={"limit":10,"dryRun":true}
运行方式:
cd /Users/vet/all/workspace414/scheduler-backend
GOWORK=off go run ./cmd/tools/seed-sample-job
或直接运行:
./scripts/seed-sample-job.sh
测试与构建
cd /Users/vet/all/workspace414/scheduler-backend
GOWORK=off go test ./pkg/config ./internal/jobdef ./internal/store/model ./internal/executor -v
GOWORK=off go build ./cmd/api ./cmd/worker ./cmd/tools/seed-sample-job
当前限制
- 只支持本地 Go handler
interval依赖time.ParseDuration,例如30s、5m、1h- 没有审批流
- 没有分布式多 worker 协调
- 执行记录详情页接口还没单独拆出
Description
Languages
Go
90%
Shell
9.2%
Dockerfile
0.8%