Git Product home page Git Product logo

gophercron's Introduction

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

gophercron's People

Contributors

dependabot[bot] avatar holdno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gophercron's Issues

开源文档小建议

对比了下大部分开源的定时任务调度系统,感觉gopherCron是最理想的,文档内容也比较丰富,但对小白可能从 0~1 还是有点困难,大佬什么时候有空能否在文档中新增一个从 0~1 的部署教程呀 QaQ

是否支持故障转移

可以通过配置文件指定某个节点所受理的业务线,从而做到业务统一管理但隔离调度

项目描述中说是通过配置文件指定某个节点所受理的业务线,那就是说哪个节点跑什么任务是配置写死的,无法做到故障转移?

client端http接口问题

日志统一上报接口(http协议),如配置此接口可忽略mysql的配置

report_addr = ""
请教下 这里的http接口怎么写呢 ??? 直接写server的http://x.x.x.x:6306 吗???

在线等你的回复 谢谢

部署问题

部署文档有遗漏

  1. 没有包含 mysql 表结构创建的语句

[小白建议]

求求大佬做个如何配置和运行的视频教程吧,,很喜欢这个项目

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.