littlebot
Published on 2025-04-10 / 6 Visits
0

【源码】基于Golang的分布式高性能任务调度系统

项目简介

本项目是基于Golang的分布式高性能任务调度系统(Crontab)。它以etcd作为分布式存储,支持分布式部署,同时使用mongodb记录任务日志。该系统具备任务管理、分布式抢锁、定时任务支持等功能,可有效解决多机器并发调度相同任务的问题。

项目的主要特性和功能

  1. 分布式存储与部署:采用etcd作为分布式存储kv,支持分布式部署。
  2. 日志记录与查看:利用mongodb存储任务完成的相关日志,便于查看。
  3. 任务管理:支持任务的新建、修改、查看和删除操作。
  4. 分布式抢锁:确保同一任务仅由一台机器执行。
  5. 定时任务精准控制:定时任务可精确到秒以及年。
  6. 任务强杀功能:支持对正在执行的任务进行强杀。
  7. 服务拆分与发现:实现服务拆分和服务注册发现。

安装使用步骤

前提条件

确保已安装以下依赖: - 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

运行项目

  1. 下载并解压项目源码文件。
  2. 若下载releases里的成品,注意下载对应操作系统版本,且确保mastermaster.json配置文件、webroot文件夹在同一目录下;workerworker.json配置文件在同一目录下,并修改json配置文件中相应的配置项。
  3. 根据masterworker配置文件,配置好etcdmongodb的地址及端口。
  4. 启动masterworker服务。可以使用systemdsystemctl命令进行控制,参考配置文件cron-master.servicecron-worker.service,执行systemctl enable cron-master.servicesystemctl enable cron-worker.service进行装载,执行systemctl start cron-master.servicesystemctl start cron-worker.service进行启动。
  5. 启动后可通过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】