Go Workflow 引擎从 Tempor 与 Cadence 到流程编排工作流引擎是后端组件的粘合层。Tempor / Cadence 是 Go 编写的开源流程编排引擎。本文讲清原理与集成。一、Temporal 是什么Temporal 微服务编排 时间调度 容错。Google Uber 支持。执行流程Worker - TaskQueue - Activity - Result二、Hello Worldimportgo.temporal.io/sdk/clientimportgo.temporal.io/sdk/workerc,_:client.Dial(client.Options{})w:worker.New(c,default,worker.Options{})w.RegisterWorkflow(Greet)w.RegisterActivity(SayHello)w.Start()WorkflowfuncGreet(ctx workflow.Context,namestring)(string,error){varresultstringerr:workflow.ExecuteActivity(ctx,SayHello,name).Get(ctx,result)returnresult,err}funcSayHello(ctx context.Context,namestring)(string,error){returnHello name,nil}启动importgo.temporal.io/sdk/clientc,_:client.Dial(client.Options{})c.ExecuteWorkflow(context.Background(),client.StartWorkflowOptions{TaskQueue:default},Greet,Tom)三、Workflow 特点确定性相同 input 永远相同 output异步能 sleep、等待 signal自动重试失败自动 backoff四、Activity包含 IO、API 调用等非确定性操作用户注册 activityworker 调用五、信号与查询Workflow 接受 signalvarstatusstringfunc(w*MyWorkflow)Signal(ctx workflow.Context)func(workflow.Context,string){returnfunc(ctx workflow.Context,sstring){statuss}}client sidec.SignalWorkflow(ctx,workflowID,,update,new-status)六、Cadence 与 TemporalCadence 是 Uber 的 Workflow 引擎Temporal 是它的 fork 增强。Temporal 兼容性更好。七、Workflow 测试importgo.temporal.io/sdk/testsuitevars testsuite.WorkflowTestSuite env:s.NewTestWorkflowEnvironment()env.RegisterWorkflow(Greet)env.RegisterActivity(SayHello)env.ExecuteWorkflow(Greet,Tom)八、企业实战长流程审批funcApproval(ctx workflow.Context,orderIDstring)(string,error){ctxworkflow.WithActivityOptions(ctx,...)iferr:workflow.ExecuteActivity(ctx,NotifyApplicant,orderID).Get(ctx,nil);err!nil{return,err}varsignalstringworkflow.GetSignalChannel(ctx,manager).Receive(ctx,signal)returnsignal,nil}等待经理审批duration 可达几小时。九、Temporal 全套组件temporal-server协调者temporal-worker执行者temporal-frontend接入tctl命令行十、K8s 部署apiVersion:apps/v1kind:StatefulSetmetadata:name:temporalspec:replicas:1template:spec:containers:-name:serverimage:temporalio/serverenv:-name:DBvalue:postgresqlPostgres 储存 Workflow 状态。十一、与 Saga 模式Workflow 提供默认 Retry、补偿胜过 Saga。十二、踩坑清单必须 deterministic不能直接 time.NowActivity 可以包含 IO用 ctx 包替代 channel十三、未来Serverless WorkflowAI Agent 工作流十四、总结与展望Workflow 引擎是长事务 容错 异步的最佳工具。Temporal 已是云原生标准之一。未来LLM-as-Agent 兴起后会重塑workflow 定义 执行的形态。十五、参考文献temporal.io 官方文档Cadence 文档
企业数字化 ERP 产品动态
相关推荐
Hugging Face模型发布全指南:从本地训练到全球复用 1. 这不是“上传”而是“发布一套可复现的模型资产” 你手头有个在本地跑通的 PyTorch 模型,可能是微调后的 BERT 分类器、自己搭的 ViT 图像分类器,或是用 LLaMA-Factory 训练出的小语言模型。现在你想让它被别人发现、下载、复用——不是发个 GitHub … · 2026/9/25 18:45:53
沟通驱动型CRM:把客户沟通转化为可复用的客户资产 做CRM这些年,我最大的感受是:大多数团队不是缺客户,而是缺"对客户关系的完整记忆"。销售手里攒了一堆微信聊天截图,客服在工单系统里反复问客户同一个问题,售后邮件散落在个人邮箱里,老板想看一眼… · 2026/9/25 18:45:53
Go Gin + SQL 全栈:CRUD、事务、迁移、监控全攻略 Go Gin SQL 全栈:CRUD、事务、迁移、监控全攻略Gin SQL 是后端项目最常见的搭配。本文带你看一眼真实项目的"完整闭环"。一、项目布局
cmd/server
internal/{handler, service, repo}
internal/config
pkg/types
configs/config.yaml二、main.go
func m… · 2026/9/25 18:45:35
ospf接口实验(ensp实验)【小白也能做】 目录
1.ospf接口类型实验
1.1 p2p类型
1.2 broadcast(广播)网络
1.3 NBMA类型
1.4 P2MP类型 1.ospf接口类型实验 1.1 p2p类型
AR1 Serial1/0/0 ←PPP 串口→ AR2 Serial1/0/0
Serial 串口默认封装 PPP;也可以封装 HDLC,华… · 2026/9/25 19:42:14
家电分类的术语大全的庖丁解牛 总纲:家电分类不是简单罗列电器名称,是按照使用场景、能源形式、功能定位、安装形态搭建的一套归类体系。区分家电品类,方便选购、对比参数、评估能耗、规划家装电路,分清大件、小件、嵌入式、移动式,避免装修预留尺寸… · 2026/9/25 19:42:02
计算机的“读心术“:一篇文章搞定二、八、十、十六进制的相互转换 一句话概括
计算机只认识 0 和 1,但人类需要十进制,程序员偏爱十六进制,操作系统权限爱用八进制——进制转换,本质上是同一个数字换了几种"方言"。看完这篇文章,你会发现换算规则简单到令人发指。一、为什么… · 2026/9/25 19:41:56
Windows 环境快速部署 Hermes 智能 Agent:TaoToken 统一 Key 配置与避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 19:41:56
Gemini用户激增背后:三大核心动力驱动ChatGPT用户迁移,TaoToken统一API通道实测 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 19:41:56
Build vs Plan:别再搞混了,OpenCode 两种模式的正确打开方式与 TaoToken 配置骨架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 19:41:49
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37