单机定时任务很简单,多实例部署后就会出现同一个任务被多个实例同时执行的问题。GoFrame 里写 cron 前要先确认部署形态。

如果服务会多副本运行,任务需要分布式锁、任务中心,或者单独拆成 worker 部署。不能默认“线上只有一个进程”。

if !lock.TryLock(ctx, "job:daily-report") {
    return
}

任务执行还要记录开始、结束、耗时和结果。否则失败后只能靠业务数据猜发生了什么。

分类: GoFrame 实践 标签: GoFrame 部署 高并发

评论

-- 评论已关闭 --

全部评论