项目简介
本项目是基于Golang的分布式高性能任务调度系统(Crontab)。它以etcd
作为分布式存储,支持分布式部署,同时使用mongodb
记录任务日志。该系统具备任务管理、分布式抢锁、定时任务支持等功能,可有效解决多机器并发调度相同任务的问题。
项目的主要特性和功能
- 分布式存储与部署:采用
etcd
作为分布式存储kv,支持分布式部署。 - 日志记录与查看:利用
mongodb
存储任务完成的相关日志,便于查看。 - 任务管理:支持任务的新建、修改、查看和删除操作。
- 分布式抢锁:确保同一任务仅由一台机器执行。
- 定时任务精准控制:定时任务可精确到秒以及年。
- 任务强杀功能:支持对正在执行的任务进行强杀。
- 服务拆分与发现:实现服务拆分和服务注册发现。
安装使用步骤
前提条件
确保已安装以下依赖:
- 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
。进入容器docker exec -it 容器ID /bin/bash
,进入控制台mongo
。
运行项目
- 下载并解压项目源码文件。
- 若下载releases里的成品,注意下载对应操作系统版本,且确保
master
、master.json
配置文件、webroot
文件夹在同一目录下;worker
与worker.json
配置文件在同一目录下,并修改json配置文件中相应的配置项。 - 根据
master
和worker
配置文件,配置好etcd
和mongodb
的地址及端口。 - 启动
master
和worker
服务。可以使用systemd
和systemctl
命令进行控制,参考配置文件cron-master.service
和cron-worker.service
,执行systemctl enable cron-master.service
、systemctl enable cron-worker.service
进行装载,执行systemctl start cron-master.service
、systemctl start cron-worker.service
进行启动。 - 启动后可通过web地址
http://localhost:8090/
访问后台界面,也可通过API接口进行任务管理、查看等操作。
编译源码
若需要修改或编译源码,使用Go语言的交叉编译功能,不同操作系统的编译命令如下:
- Mac:
- 编译Linux可执行程序:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build xxx/master/main
- 编译Windows 64位可执行程序:CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx/master/main
- Linux:
- 编译Mac可执行程序:CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build xxx/master/main
- 编译Windows 64位可执行程序:CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx/master/main
- Windows:
- 编译Mac可执行程序:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build xxx/master/main
- 编译Linux可执行程序:
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build xxx/master/main
注意:具体编译路径根据本机的GOPATH或者临时的PATH路径而定,编译master完毕后别忘记编译worker。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】