跳到正文

入门

go-sequent 文档

go-sequent 是面向账本与支付的 Go CQRS + Event Sourcing 库。汇总入门、指南、API 参考、运维手册与安全说明。

go-sequent 文档

go-sequent 是面向金融账本与支付的 Go 库,实现 CQRS 与 Event Sourcing。你定义 Command、Aggregate、Event 和 Projector(把事件写成查询用读模型,例如余额表);库把它们放进同一个数据库事务执行,并内置 OCC(用 ExpectedVersion 防并发写冲突)、唯一键、租户级 Idempotency(同一业务键重复提交只生效一次)与按聚合的 hash chain。

它是纯库:仓库里没有 HTTP / gRPC 服务,直接嵌入你自己的进程即可。Go 模块路径是 github.com/go-sequent/go-sequent,MIT 许可证开源。

设计上沿用 Ruby 版 Sequent 的概念(command、aggregate root、event store、projector、workflow),但 Go API 与 PostgreSQL schema 都是重新设计的。go-sequent 永不读取或导入 Ruby Sequent 的数据库。

从哪里开始

你想要…… 阅读
五分钟跑通 bank 示例 快速开始
判断这个库是否适合你的系统 go-sequent 是什么
看一条命令在代码里怎么走 核心闭环
一步步建一个聚合 领域建模
弄清 OCC、Idempotency、UnitOfWork 如何配合 写路径一致性
查某个具体 API 下方「参考」
上生产 运维概览

入门

指南

参考

基础构件:Command、Event、AggregateRoot、CommandHandler、Repository 与 UnitOfWork、CommandService。

存储与发布:EventStore、Publisher 与 SyncInTxn、Projector、Workflow、Snapshotting。

正确性与安全:唯一键与 OCC、Idempotency、AuthZ、Tenancy(多租户)、Money。

工具:OpenTelemetry、Migrations 与 CLI、sequent 门面接线、测试。

背景:名词释义、锁定决策、相对 Sequent Ruby。

运维与安全

设计承诺

下面这些选择已经锁定,其余文档都以它们为前提。

  • 账本读模型使用 SyncInTxn(在写事务里同步更新读模型)。
  • 金额用 decimal(types.Money),金额字段禁用 float64。
  • 每个聚合一条 hash chain(按聚合串联事件哈希,用来发现篡改),没有事件签名。
  • Tenancy(多租户)为共享 schema + tenant_id 列。
  • GDPR 只做 Tombstone(追加一条标记事件,之后读模型不再暴露个人数据)。
  • Outbox 是一张 Postgres 表,由轮询器消费。
  • 永不导入 Ruby Sequent 数据库。

源码在 github.com/go-sequent/go-sequent。文档与代码不一致时以代码为准,欢迎提 issue。

文档随 go-sequent 源码更新;若与 API 不一致,以源码为准。