入门
go-sequent 是什么
面向支付与账本的 Go CQRS + Event Sourcing 库:SyncInTxn 读模型、OCC、decimal Money、hash chain、Tenancy(多租户)。
go-sequent 是什么
go-sequent 是给支付、钱包、账本这类系统用的 CQRS + Event Sourcing Go 库。你定义 Command、Aggregate、Event 和 Projector(把事件写成查询用读模型,例如余额表);库把写路径串进同一次数据库事务。
你得到什么
- 每次
Execute:一个数据库事务 + 挂在context上的 UnitOfWork - 追加事件时的 OCC(用 ExpectedVersion 防并发写冲突)和 Unique keys
- 余额等账本读模型默认经
SyncInTxn(在写事务里同步更新读模型)更新,提交返回后立刻能读到自己刚写的数据 - decimal Money、按租户的 Idempotency(同一业务键重复提交只生效一次)、AuthZ、JSON Snapshot、Tombstone(追加标记事件,之后读模型不再暴露个人数据),以及可选的 Outbox 轮询
- 可选 OpenTelemetry(
obs):看写路径延迟、成败与冲突——不能当业务审计源
适合
- 余额必须和写入同一事务(提交后立刻可读)
- 多个商户共用一张表(共享 schema +
tenant_id) - 需要完整的 Command / Event 审计记录
不是 Web 框架
仓库里没有 HTTP / gRPC 服务,没有 Rails 式集成,也不绑通用 CRUD ORM。嵌进你自己的服务进程即可。
与 Sequent(Ruby)的关系
概念命名参考 Sequent Reference Guide;API 与数据模型是 Go 独立实现。永不导入 Ruby Sequent 的数据库。
见 相对 Sequent Ruby 与 锁定决策。
文档随 go-sequent 源码更新;若与 API 不一致,以源码为准。