← 返回项目列表
DevOps 与工具

定时任务与工作流

从进程内 cron 到持久化的 Temporal 工作流

搭建服务初版 · 共同主导迁移至 Temporal · 2024.12 — 2025.09
Go Temporal Kafka gRPC MySQL/GORM

项目背景

发放任务原先运行在进程内 cron 上:没有重试,看不到哪个租户失败,也无法续跑执行到一半的任务。

核心技术亮点

01

多币种返现与会员忠诚度奖励发放,通过 Kafka 以唯一订单 ID 入账到钱包

02

Temporal SDK、指数退避重试策略和 worker 注册机制

03

发放任务重构为父工作流,为每个租户扇出一个子工作流;发布入账消息失败时执行补偿步骤

04

每日客户分群重新分类,activity 带心跳并分页执行

05

访客数据清理,以幂等方式创建为 Temporal Schedule

核心实现

1

按租户的父子工作流

父工作流列出所有租户,并为每个租户启动一个子工作流;每个子工作流以唯一订单 ID 执行发放,发布失败时进行补偿。

Why: 单个租户失败不再阻塞其他租户,每个子工作流都可以单独重试和查看。

技术决策

技术决策 选择 替代方案 原因
调度器 Temporal 进程内 cron 加手写重试 持久化执行、带退避的重试、心跳,以及每次运行都可在 UI 中查看——无需自己实现。