项目开发中容易堆积较多定时脚本,最简单的是使用 crontab
但 crontab 存在较多缺点:
通过调研有 cronsun、gocron 等任务调度开源项目
经初步了解,梳理两个项目特点和适用场景
项目地址:https://github.com/shunfei/cronsun
特点:分布式、注册机制、可靠性保证较强 适用场景:业务量级较大、资源较为丰富 资源与部署:cronweb、cronnode、Etcd、Mongo
可靠性说明 https://github.com/shunfei/cronsun/wiki/%E5%8F%AF%E9%9D%A0%E6%80%A7%E8%AF%B4%E6%98%8E
安装体验:TODO 遇到 docker-compose 部署问题,后续补上
项目地址:https://github.com/ouqiang/gocron 特点:轻量、配置简单易上手,存在单点问题 适用场景:业务量级适中、追求低资源运行、脚本允许出现可能得短期中断(单点) 资源与部署:gocron-node、gocron、MySQL
1.安装 项目自带 Docker 用于部署 gocron web 管理端
docker network create my_network
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --network my_network -d mysql:latest
docker run --name gocron -p 5920:5920 --network my_network -d ouqg/gocron
2.初始化配置 通过上述步骤即可在本地部署 MySQL 和 gocron web 端,本地访问 http://localhost:5920/ mysql 去建个数据库,在 gocron web 后台输入 mysql 相关信息和系统登录管理员,即可完成系统初始化
3.任务配置 3.1 启动 gocron-node 任务节点 这里在本地 mac 编译好,并启动一个 gocron-node
git clone git@github.com:ouqiang/gocron.git
cd gocron
go mod tidy
make
./bin/gocron-node
3.2 配置任务节点 配置上述 mac 机启动的 gocron-node(容器访问宿主机,可用 host.docker.internal)
3.3 配置任务
3.4 配置告警 shell 类型,使用 exit 1 等非 0 退出,定义为执行失败,可对执行失败配置告警,这里企微比较常用,举例一下企微配置