介绍
Pulse 是用于 Go 程序的数据驱动工作流执行库。你把业务拆成节点,声明每个节点需要哪些数据、会产生哪些数据,Pulse 根据这些声明推进执行,并提供结构、状态和事件视图。
本指南面向需要在现有应用中组织多步骤处理的 Go 开发者。开始前,你只需要了解 Go 函数、泛型和 context.Context。
一个典型场景
假设应用要接收一份文档,提取内容,再分别生成摘要和标签,最后组合报告。摘要和标签都依赖提取结果,二者可以并行工作;报告要等待两路都明确提供结果或跳过。
flowchart LR
source[文档输入] --> extract[提取内容]
extract --> summary[生成摘要]
extract --> tags[生成标签]
summary --> report[组合报告]
tags --> report在 Pulse 中,每条数据由 Key[T] 标识。提取节点声明输出内容,摘要与标签节点声明读取同一个内容 Key,依赖关系便随之确定。你无需另写一份节点连线表。
工作流定义可以长期保留。每次请求创建一份新的 Execution,提供本次输入并等待结束;不同执行的运行状态彼此独立。业务函数捕获的共享对象、客户端和可变数据仍由应用管理。
你能使用哪些能力
| 能力 | 用途 | 文档 |
|---|---|---|
| 输入、输出和类型化数据 | 定义宿主与工作流的接口 | 输入与输出 |
| 分支、并行和汇聚 | 组合多路处理,明确缺值策略 | 分支与汇聚 |
| 重试、超时、并发额度 | 控制节点执行和取消 | 重试与取消 |
| 静态子图 | 复用完整流程,通过端口连接 | 组合子图 |
| channel 流 | 在同一次执行中持续传递数据 | 流式处理 |
| YAML 装配 | 将拓扑配置与 Go 处理函数分开 | YAML 装配 |
| 事件、日志和快照 | 查询进度、定位故障、接入现有日志 | 图观测 |
核心包只依赖标准库。observe 与 yaml 是可选包,按需引入。需要跨进程恢复时,可使用独立的 pulse-durable;它提供本机检查点存储和恢复,持久等待与分布式运行管理尚未实现。
怎样阅读本文档
第一次使用,依次阅读安装、快速开始和核心概念。快速开始包含完整程序、运行命令和预期结果,概念页解释程序背后的数据模型。
已经有一个工作流,从使用指南选择当前任务。各篇解释操作方式、需要声明的接口以及常见错误,不要求从头读完整套文档。
需要核对具体保证,查看参考。生命周期、错误分类、检查点协议和版本差异集中在那里。源码中的 godoc 提供每个导出符号的签名与契约。
准备参与项目设计,阅读设计理念和设计资料。这些材料解释取舍与历史,不作为完成第一次运行的前提。
文档版本
本文档以 v0.5.1 为 API 基线,包含可复用定义与独立执行的完整对象模型。安装页说明如何固定安装版本、选择后续开发改动、试用尚未合并的本地源码,以及核对实际依赖。
下一步:安装 Pulse。