Skip to content

golang 开箱即用的秒级分布式定时任务系统

Notifications You must be signed in to change notification settings

wuchunfu/gopherCron

This branch is 4 commits behind holdno/gopherCron:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

69c0052 · Sep 23, 2024
May 15, 2024
Aug 24, 2024
Sep 23, 2024
Sep 23, 2024
Jul 18, 2024
Jan 24, 2024
Aug 24, 2024
May 11, 2024
Jul 18, 2024
Aug 17, 2023
Dec 4, 2023
Sep 18, 2024
Sep 17, 2024
May 15, 2024
Nov 27, 2023
Dec 6, 2023
Aug 11, 2023
May 15, 2024
Aug 12, 2024
Jul 18, 2024
Jul 18, 2024

Repository files navigation

gophercron logo

Build Status Package Utilities Version license

GopherCron

开箱即用的分布式可视化crontab

使用文档

Discussions

关于“为系统增加内置环境变量”的讨论

依赖

  • Etcd # 服务注册与发现
  • Mysql # 任务日志存储

引用

  • Gin 提供 webapi
  • 🍉水瓜 提供服务注册发现能力(中心与边缘通信)
  • gopherCronFe 提供可视化管理界面(已将构建后的文件内置于 dist/view 目录下)
  • cronexpr 提供 cron 表达式解析器

实现功能

  • 秒级定时任务(最细 5s 周期)
  • 任务日志查看
  • 随时结束任务进程
  • 分布式扩展
  • 健康节点检测 (分项目显示对应的健康节点 IP 及节点数)
  • workflow 任务编排

监控面板

Grafana Dashboard 19874

Grafana Dashboard

配套前端

项目地址 gopherCronFe

image
image
image
image

任务日志集中上报

1.10.x 版本中 client 配置增加了 report_addr 项,该配置接收一个 http 接口
配置后,任务日志将通过 http 发送到该地址进行集中处理
可通过请求中的 Head 参数 Report-Type 来判断是告警还是日志来做对应的处理
日志结构(参考:common/protocol.go 下的 TaskExecuteResult):

// TaskExecuteResult 任务执行结果
type TaskExecuteResult struct {
	ExecuteInfo *TaskExecutingInfo `json:"execute_info"`
	Output      string             `json:"output"`     // 程序输出
	Err         string             `json:"error"`      // 是否发生错误
	StartTime   time.Time          `json:"start_time"` // 开始时间
	EndTime     time.Time          `json:"end_time"`   // 结束时间
}

v2.1.0 + 版本中移除了 client 对 etcd 的依赖

日志上报相关代码参考 app/taskreport.go

cronexpr 秒级 cron 表达式介绍(引用)

* * * * * * *
Field name     Mandatory?   Allowed values    Allowed special characters
----------     ----------   --------------    --------------------------
Seconds        No           0-59              * / , -
Minutes        Yes          0-59              * / , -
Hours          Yes          0-23              * / , -
Day of month   Yes          1-31              * / , - L W
Month          Yes          1-12 or JAN-DEC   * / , -
Day of week    Yes          0-6 or SUN-SAT    * / , - L #
Year           No           1970–2099         * / , -

使用方法

下载项目到本地并编译,根据 cmd 文件夹下 service 和 client 中包含的 conf/config-default.toml 进行配置

初始化数据库表

建表语句在 pkg/store/sqlstore/table.sql

Admin 管理页面

访问地址: localhost:6306/admin

管理员初始账号密码为 admin 123456

注意

client 配置文件中的 project 配置需要用户先部署 service
在 service 中创建项目后可以获得项目 ID
需要将项目 ID 填写在 client 的配置中该 client 才会调度这个项目的任务

Chat & QA

About

golang 开箱即用的秒级分布式定时任务系统

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.6%
  • Other 0.4%