基于 Golang 开发的分布式定时任务管理系统
Elastic Crontab System
基于 ETCD 实现的简单易用的分布式定时任务管理系统,让跨主机的定时任务管理变得更加简单高效。
项目采用 Iris + Vue (SPA)并将前端静态资源以二进制形式打包进可执行程序中。
架构设计
Web UI
源码安装
# 克隆到本地
$ git clone git@github.com:betterde/ects.git
# 安装前端依赖
$ cd web && yarn install
# 打包前端资源
$ yarn build
# 安装打包静态资源到二进制的工具
$ cd ../ && go get -u github.com/shuLhan/go-bindata/...
# 打包静态资源
$ go-bindata -pkg web -o web/bindata.go web/dist/...
# 编译
$ go build -o ects main.go
下载可执行程序
了解更多细节
TODO
- [x] Web UI;
- [x] Master 节点 API;
- [x] 基于 ETCD 的服务注册于发现;
- [x] 基于 ETCD 的流水线发布于订阅;
- [x] 基于 ETCD 实现的分布式锁,用于更新 Worker 节点的状态;
- [x] 实现 Mail 任务执行器;
- [x] 实现 HTTP 任务执行器;
- [x] 实现 Hook 任务执行器;
- [x] 集成 Docker 部署;
- [x] 项目文档;
- [x] 集成 CI.
- [] 角色权限管理模块;
- [] 集成单元测试;
- [] 热重启;
- [] 软件更新;
学Go以来,写的第一个项目,欢迎各位大佬给我提 pull request
或 issue
。
本作品采用《CC 协议》,转载必须注明作者和本文链接
厉害了老哥,请教个问题:
是否有设计master节点宕机的容灾?