运维
运维概览
go-sequent 在 PostgreSQL 上的生产运维手册:故障切换、读模型重建、备份恢复与分区,以及它们共同假设的锁定默认值。
运维概览
go-sequent 是一个库,跑在你自己的服务里、你自己的 PostgreSQL 上。这些手册覆盖运维真正需要盯的部分:故障切换时保持单写者、重建读模型、备份事件库,以及规模上来之后的分区。
手册
| 页面 | 主题 |
|---|---|
| 故障转移 | PostgreSQL 主从说明与切换清单 |
| 读模型重建 | prepare、replay、catchup、optimize、golive |
| 备份与恢复 | 备份什么,以及如何做经过验证的恢复 |
| 分区 | 共享 schema 下的大规模分区 |
锁定默认值
所有手册都以这些决策为前提,详见 锁定决策。
- 账本 Projector 以 SyncInTxn(写事务内同步更新读模型)运行,与事件在同一事务内。
- 完整性靠按聚合的 hash chain(按聚合串联事件哈希,用来发现篡改),不做事件签名。
- 多租户是共享 schema +
tenant_id。 - Outbox(事务内记待发消息,事后轮询投递)由轮询器消费。
- go-sequent 永远不导入 Ruby Sequent 的数据库。
库提供什么
go-sequent migrate应用 schema,见 Migrations 与 CLI。projector/replay提供读模型重建流水线。- Store 的
VerifyChain方法与LoadStream上的校验用于发现篡改,见 EventStore。 obs导出 OpenTelemetry 指标,包括sequent.outbox.depth与sequent.optimistic_conflict.total,见 OpenTelemetry。
你需要提供什么
库不负责跑你的数据库。高可用、连接池、带时间点恢复的备份、静态加密与访问控制由你提供。各手册会说明 go-sequent 对其中每一项的期望。
文档随 go-sequent 源码更新;若与 API 不一致,以源码为准。