SuperAPI AI 工具集

temporal-golang-pro

编程与开发

查看项目

更新于 10-16 01:14

技能介绍

用途:面向使用 Temporal Go SDK 构建持久、可扩展、确定性分布式系统的开发者,把模糊的编排需求转化为生产级 Go 实现,侧重持久执行、严格确定性与企业级 Worker 配置。

主要能力:

  • Go SDK 实现:worker.Options 调优(如 MaxConcurrentActivityTaskPollers、WorkerStopTimeout、StickyScheduleToStartTimeout)、Client/Worker/Workflow 拦截器、自定义数据转换器(Protobuf、加密负载、自定义 JSON)。
  • 高级工作流模式:用 workflow.Go、workflow.Channel、workflow.Selector 实现持久并发;用 workflow.GetVersion、workflow.GetReplaySafeLogger 做版本演进;用 ContinueAsNew 处理历史大小限制(默认 50MB 或 5 万事件);管理子工作流生命周期、取消与信号传递。
  • 测试与可观测性:WorkflowTestSuite 单元与功能测试、活动与子工作流 Mock、基于生产事件历史的 Replay 测试、Prometheus/OpenTelemetry 指标导出。

使用方式:先收集上下文(目标集群 Cloud 或自托管、命名空间、任务队列与吞吐、mTLS 路径与认证、失败模式与重试/超时策略);再按 5 条确定性规则校验工作流代码(不用原生 goroutine、不用原生时间、不依赖非确定性 map 迭代、不做直接外部 I/O、不用非确定性随机数);随后按共享 Protobuf/数据类、Activity、Workflow、Worker 的顺序增量实现;遇到 Saga、拦截器、Replay 测试等高级模式时参考实现手册与测试策略。

适用场景:需要持久状态与可靠编排的微服务、长周期流程(天/月)或复杂 Saga、需要并发调优或 mTLS 的 Worker、需要幂等活动与重试策略的可靠性场景、运行中工作流版本化与零停机 Worker 更新。

限制:不适用于 Temporal 的 Python/Java/TypeScript SDK(见各自 -pro 技能);不适用于无持久化或协调需求的简单请求响应;高层设计可改用 workflow-orchestration-patterns。不覆盖 Cloud UI 操作与证书签发、实验特性(如 Nexus、多集群复制)、全局命名空间与多区域故障转移、worker-versioning 特性标志。假设 Temporal Server v1.20+ 与 Go SDK v1.25+,更旧版本 API 可能不同。

最佳实践与排错要点:始终处理 ExecuteActivity 与 client.Dial 的错误;用 workflow.Go/Channel 做并发;迭代前排序 map 键;超过 1 分钟的活动用 activity.RecordHeartbeat;用 replayer.ReplayWorkflowHistoryFromJSON 验证兼容性。避免吞错、在生产 Worker 中用 log.Fatal、在工作流内做网络/磁盘 I/O、依赖原生 time.Now() 或 rand.Int()。常见问题包括确定性不匹配(未用 GetVersion 或非确定性代码)、历史超限(需 ContinueAsNew)、Worker 挂起(检查 WorkerStopTimeout 与上下文取消)。