krono-job:零侵入、单二进制交付的分布式任务调度平台(开源)

做后端同学应该都遇到过:业务里一堆定时任务散落在各个微服务,crontab 难管理、失败无日志、重试靠手写、暂停恢复没有入口......自己造一套调度平台又怕重。

最近我把内部用的调度平台整理开源了 ------ krono-job,主打「零侵入 + 单镜像交付」。

它解决了什么

  • 下游零侵入 :业务服务被动接收触发(HTTP Webhook 或 gRPC),不需要引入任何 SDK、不需要改代码。
  • 一条命令跑全套docker run 一个镜像,内置 Web/API + 调度内核 + Worker + PostgreSQL + Redis,无需外部依赖。
  • 配置即任务 :任务在 jobs.yaml 里声明式定义,支持 fsnotify 热重载,改完文件不用重启。
  • 数据库只有 2 张表:管理员表 + 执行日志表,暂停态存 Redis,极简。

架构一览

arduino 复制代码
【Vue3 管理后台】 ──JWT──► 【Gin 网关】 ──► 【Redis 调度总线】
                                   │
                            【Asynq Scheduler】──cron 推送──►【Asynq Worker】
                                                                 │
                                               HTTP Webhook / gRPC 调用
                                                                 │
                                                      下游业务微服务

运维监控(重试、死信、队列调优)交给独立的 Asynqmon UI,与平台解耦。

30 秒跑起来

bash 复制代码
docker run -d --name krono-job \
  -p 10010:10010 -p 5432:5432 -p 6379:6379 \
  -e KRONO_JWT_SECRET=请改成随机长字符串 \
  krono-job:latest

打开 http://localhost:10010 就能看到管理后台。

加一个 HTTP 任务,只改 yaml

yaml 复制代码
jobs:
  - name: 订单超时自动取消
    task_type: order_timeout_cancel
    cron: "0 */5 * * *"      # 每 5 分钟
    protocol: http
    endpoint: "http://order-svc:8080/api/timeout/cancel"
    method: POST
    payload:
      scene: "auto_expire"

gRPC 任务也只需在 yaml 里声明 endpointgrpc_service/methodrequest_typepayload参数全在配置里,不写死在代码 ,新增下游服务最多加一行 import _

管理后台长啥样

登录、仪表盘(执行趋势 + 任务排行榜)、任务列表(暂停/恢复/立即执行)、执行日志(分页/过滤/排序/详情)、用户管理,一套齐全。

技术栈

Go 1.26 · Gin · Asynq · PostgreSQL 16 · Redis 7 · Vue3(go:embed 打包进二进制)· JWT · bcrypt

开源地址

欢迎 Star / Issue / PR,也欢迎在评论区聊聊你们团队的定时任务是怎么管的。

相关推荐
worxfr3 小时前
Go 并发控制:从 Channel 方向约束到实战模式
开发语言·后端·golang
拾陆楼3 小时前
PT: DMSA辅助调tree报告前后级余量脚本
后端·学习
今天的砖头有点烫手啊3 小时前
接口太慢?Spring Boot 缓存体系 @Cacheable 全链路拆解
spring boot·后端·缓存
雪隐4 小时前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
952365 小时前
Sentinel
java·后端·spring·sentinel·springcloud
名字还没想好☜5 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
zzzll11115 小时前
Spring Boot 入门指南:从零开始构建微服务
spring boot·后端·微服务
运维行者_6 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
长栎6 小时前
你用了五年的消息队列,不知道它背后站着中介者模式
后端
Gopher_HBo6 小时前
路由注册:RouterGroup(routergroup.go)
后端