项目简介
这是一个基于Golang的高性能分布式任务调度系统。系统利用etcd
作为分布式存储KV,支持分布式部署,借助mongodb
存储任务完成的相关日志记录,方便用户查看。该系统具备任务管理、分布式抢锁、定时任务、任务强杀、服务拆分、服务注册发现等功能。
项目的主要特性和功能
- 分布式部署:使用
etcd
作为分布式存储,支持系统分布式部署。 - 日志存储:借助
mongodb
存储任务完成的相关日志,便于查看。 - 任务管理:支持任务的新建、修改、查看和删除操作。
- 分布式抢锁:保证同一时间只有一台机器执行某个任务。
- 定时任务:定时任务精度可支持到秒以及年。
- 任务强杀:提供强制结束任务的接口。
- 服务拆分与注册发现:将服务拆分,实现服务自动注册到
etcd
并自动发现服务。
安装使用步骤
前提条件
确保已下载本项目的源码文件,并满足以下依赖要求:
- Golang 版本>= 1.10.1
- Etcd 版本>= 3.3.8
- Mongodb 版本>= 4.0.0
安装依赖服务
etcd
- docker 下安装:拉取镜像
docker pull quay.io/coreos/etcd
,运行实例单机写法为:docker run -d \ -p 2379:2379 \ -p 2380:2380 \ --name etcd01 \ quay.io/coreos/etcd:v3.3.8 \ /usr/local/bin/etcd \ --name s1 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://0.0.0.0:2379
mongodb
使用 docker 安装,拉取镜像docker pull mongo
,运行命令为docker run -d -p 27017:27017 --name mongo mongo --bind_ip_all
。
运行项目
如果是下载 releases 里的成品,需注意下载对应操作系统版本。同时,master
、master.json
配置文件、webroot
文件夹需要在同一目录下;worker
与worker.json
配置文件需要在同一目录下,并修改 json 配置文件中相应的配置项。
可使用superior
做守护进程保护master
,或者使用 centos7 内的systemd
、systemctl
命令进行控制,以下是systemd
的配置参考:
cron-master.service (master 守护进程)
``` [Unit] Description=crontab master Requires=network-online.target After=network-online.target
[Service] Type=simple User=work Group=work Restart=always ExecStart=/home/work/crontab/master/main -config=/home/work/crontab/master/master.json WorkingDirectory=/home/work/crontab/master
[Install] WantedBy=multi-user.target ```
cron-worker.service (worker 守护进程)
``` [Unit] Description=crontab worker Requires=network-online.target After=network-online.target
[Service] Type=simple User=work Group=work Restart=always ExecStart=/home/work/crontab/worker/main -config=/home/work/crontab/worker/worker.json WorkingDirectory=/home/work/crontab/worker
[Install] WantedBy=multi-user.target ```
配置 systemctl
systemctl enable cron-master.service
systemctl enable cron-worker.service
systemctl start cron-master.service
systemctl start cron-worker.service
源码编译
不同操作系统的编译命令不同:
Mac
//Mac 下编译 Linux 可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build xxx/master/main
//Mac 下编译 Windows 64位 可执行程序
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx/master/main
Linux
//Linux 下编译 Mac 可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build xxx/master/main
//Linux 下编译 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx/master/main
Windows
//Windows 下编译 Mac 可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build xxx/master/main
//Windows 下编译 Linux 可执行程序
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build xxx/master/main
注意具体编译路径根据本机的GOPATH
或者临时的PATH
路径而定,编译master
完毕后别忘记编译worker
。
注意事项
- 确保
etcd
和mongodb
正常运行。 - 修改配置文件中的
etcd
和mongodb
地址,确保它们与实际环境匹配。 - 为了安全性,不建议在生产环境中直接运行源码,建议编译成可执行文件后运行。同时,需保护好源码中的敏感信息,避免泄露。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】