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

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

项目简介

这是一个基于Golang的高性能分布式任务调度系统。系统利用etcd作为分布式存储KV,支持分布式部署,借助mongodb存储任务完成的相关日志记录,方便用户查看。该系统具备任务管理、分布式抢锁、定时任务、任务强杀、服务拆分、服务注册发现等功能。

项目的主要特性和功能

  1. 分布式部署:使用etcd作为分布式存储,支持系统分布式部署。
  2. 日志存储:借助mongodb存储任务完成的相关日志,便于查看。
  3. 任务管理:支持任务的新建、修改、查看和删除操作。
  4. 分布式抢锁:保证同一时间只有一台机器执行某个任务。
  5. 定时任务:定时任务精度可支持到秒以及年。
  6. 任务强杀:提供强制结束任务的接口。
  7. 服务拆分与注册发现:将服务拆分,实现服务自动注册到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 里的成品,需注意下载对应操作系统版本。同时,mastermaster.json配置文件、webroot文件夹需要在同一目录下;workerworker.json配置文件需要在同一目录下,并修改 json 配置文件中相应的配置项。

可使用superior做守护进程保护master,或者使用 centos7 内的systemdsystemctl命令进行控制,以下是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

注意事项

  • 确保etcdmongodb正常运行。
  • 修改配置文件中的etcdmongodb地址,确保它们与实际环境匹配。
  • 为了安全性,不建议在生产环境中直接运行源码,建议编译成可执行文件后运行。同时,需保护好源码中的敏感信息,避免泄露。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】