LINUX SB 快照站

gocronx

用户 ID 15092 · 当前名首次快照 2026-08-12 10:28:10 · 当前名始于 2026-08-12 10:28:10 · 原站主页: https://linux.sb/user/15092

发言

共 3 楼

[开源自荐] gocron:用 Go 写的轻量级分布式定时任务管理系统精华
#5 · gocronx
发帖 2026-08-11 16:16:27 · 快照 2026-08-12 10:28:10

@answeryt #4 感谢

[开源自荐] gocron:用 Go 写的轻量级分布式定时任务管理系统精华
#3 · gocronx
发帖 2026-08-11 09:30:23 · 快照 2026-08-12 10:28:10

@answeryt #2 感谢关注,这里可能有两个概念比较容易混在一起。
gocron 主要解决的是定时任务的统一调度和管理问题,包括任务配置、执行节点管理、执行记录、实时输出、失败重试、任务依赖、消息通知、权限控制,以及调度器高可用等。它记录的是一次任务从“被调度”到“执行结束”的生命周期,例如在哪个节点执行、开始和结束时间、执行状态、重试次数以及 stdout/stderr 输出。
传统的全链路追踪,例如 OpenTelemetry、SkyWalking、Jaeger、Tempo,解决的是一次请求进入业务系统后,在多个微服务、RPC、数据库和消息队列之间如何传播和定位的问题。它关注的是 Trace、Span、调用拓扑、各环节耗时和上下游依赖关系。
因此两者关注的层次不一样:
- gocron 回答的是:“这个定时任务有没有执行、在哪台机器执行、执行了多久、为什么失败、是否重试和通知。”
- 全链路追踪回答的是:“这个任务触发业务接口以后,内部经过了哪些服务和组件,具体慢在哪里、错在哪里。”

目前 gocron 并不打算替代专业的全链路追踪系统,也不能直接展示任务下游服务内部的 Span 调用链。更合理的使用方式是互补:gocron 负责调度和任务侧运维,业务系统继续通过 OpenTelemetry 等方案完成内部链路追踪。
后续如果有比较明确的使用需求,可以考虑增加可选的 Trace Context 透传、执行记录关联 Trace ID,或者通过 Webhook/API 对接现有可观测平台,但不会在 gocron 内部重新实现一套完整 APM 系统。

最后编辑于 2026-08-11 09:31
[开源自荐] gocron:用 Go 写的轻量级分布式定时任务管理系统精华
#0 · gocronx
发帖 2026-08-11 09:01:14 · 快照 2026-08-12 12:01:21

首先感谢论坛提供这样一个交流和分享的平台,让个人开发者有机会介绍自己的开源项目,也能听到更多真实的使用反馈和建议。

大家好,向大家自荐一个我持续维护了近一年的开源项目:gocron

gocron 是一个使用 Go 开发的轻量级分布式定时任务集中调度和管理系统,主要用于替代 Linux crontab,解决定时任务分散在不同服务器上、不方便统一管理的问题。

为什么做这个项目

当服务器和定时任务逐渐增多后,传统 crontab 在任务管理、执行记录、失败重试、消息通知、权限控制和多节点维护等方面会变得不太方便。

因此,我想做一个部署相对简单、功能实用,又不强制依赖大量外部基础设施的任务调度系统。项目开源至今已经接近一年,目前没有商业化计划,主要是利用业余时间持续开发和维护,纯属为爱发电。

项目采用 MIT 协议,大家可以自由使用、修改和二次开发。

功能特点

目前 gocron 提供以下功能:

  • Web 界面管理:直观的定时任务管理界面
  • 秒级定时:支持 Crontab 时间表达式,精确到秒
  • 高可用:基于数据库锁的 Leader 选举,秒级自动故障转移
  • 任务重试:支持任务执行失败重试设置
  • 任务依赖:支持配置任务依赖关系
  • 多用户权限:完善的用户和权限控制
  • 双因素认证:支持 2FA,提升系统安全性
  • Agent 自动注册:支持 Linux/macOS 一键安装注册
  • MCP 支持:AI 客户端(Claude Desktop、Cursor 等)可通过 Model Context Protocol 远程管理任务,使用 Web 端管理的访问令牌鉴权
  • AI 辅助:自然语言转 cron 表达式、失败日志 AI 诊断、产品内 AI 运维助手对话(查询任务/日志/节点/模板、诊断失败),对接任意 OpenAI 兼容模型(接入地址可配置,亦支持自建/本地模型)
  • 多数据库支持:MySQL / PostgreSQL / SQLite
  • 容器内存感知:自动根据容器 cgroup 内存上限设置 GOMEMLIMIT,减少 Docker/Kubernetes 下被 OOM kill
  • 任务实时输出:Shell(RPC)任务运行期间可在 Execution Output 弹窗实时查看 stdout/stderr,支持断线续传和节点确认的停止操作
  • 日志管理:完整的任务执行日志,支持自动清理;实时输出经过脱敏、大小限制,并针对 MySQL / PostgreSQL / SQLite 高效持久化
  • 消息通知:支持邮件、Slack、Webhook 等多种通知方式