temporal

Temporal 工作流引擎

补充说明

Temporal 用代码定义可持久化、可重试的长时间工作流,适合订单履约、支付对账、数据管道和人工审批。核心概念是 Workflow、Activity、Task Queue、Worker 和 Namespace。

常用示例

本地启动开发服务器:

temporal server start-dev
temporal operator namespace list

使用 CLI 查看工作流:

temporal workflow list --namespace default
temporal workflow describe --workflow-id order-123
temporal workflow show --workflow-id order-123

启动一个工作流:

temporal workflow start \
  --task-queue orders \
  --type OrderWorkflow \
  --workflow-id order-123 \
  --input '{"orderId":"123"}'

查询和信号:

temporal workflow query --workflow-id order-123 --type status
temporal workflow signal --workflow-id order-123 --name approve --input '"ok"'

取消和终止:

temporal workflow cancel --workflow-id order-123
temporal workflow terminate --workflow-id order-123 --reason 'stuck'

生产部署使用 Helm 和外部 Cassandra/PostgreSQL,配置 retention 和 visibility store。

易错点与排错

读完自测

合上页面,先回答,再展开对照。

  1. 工作流一直处于 Pending,先查什么?
  2. 工作流重放失败,常见原因是什么?
  3. 希望补偿逻辑执行,应该用 cancel 还是 terminate?
答案
  1. Worker 是否监听对应的 Task Queue。
  2. Workflow 代码里有非确定性操作,如随机数、当前时间。
  3. 用 cancel,直接 terminate 不会执行补偿逻辑。