入门
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 | 下方「参考」 |
| 上生产 | 运维概览 |
入门
- 快速开始:安装、运行 bank 示例、第一批命令。
- go-sequent 是什么:适用范围、适合谁、刻意不做什么。
- 核心闭环:
CommandService.Execute从入口到提交。
指南
- 领域建模:围绕 bank
Account聚合的教程。 - 写路径一致性:UnitOfWork、OCC 与 Idempotency 各管什么。
- Bank 示例:
examples/bank与examples/bankpg导览。
参考
基础构件: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 不一致,以源码为准。