【金融科技工程】幂等、事务与一致性:SAGA、TCC、对账补偿
超时重试会让支付扣两次、退两次。本文按 Stripe 文档、IETF 草案与 Seata 实现拆解 Idempotency-Key 状态机、业务唯一键、2PC/TCC/SAGA/Outbox 的取舍与空回滚防悬挂,结论是每一跳都必须可安全重试。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 7 篇文章 · 返回首页
超时重试会让支付扣两次、退两次。本文按 Stripe 文档、IETF 草案与 Seata 实现拆解 Idempotency-Key 状态机、业务唯一键、2PC/TCC/SAGA/Outbox 的取舍与空回滚防悬挂,结论是每一跳都必须可安全重试。
钉住 Neo4j 默认 read-committed、遍历不受写保护、lost update 与索引扫描异常;对照 sparse/dense 建边锁、死锁检测与 MERGE 乱序取锁,并接到第 06 篇写入路径与站内 MVCC 对照。
拆解 BEGIN DEFERRED/IMMEDIATE/EXCLUSIVE 三种模式的取锁时机差异,对照 Berenson et al. SIGMOD 1995 的隔离词汇与官方 Isolation In SQLite 文档;说明单写者约束下 WAL 快照为何天然回避 write skew,并用本机 3.53.2 实测三种 BEGIN 均可提交。
钉住 FoundationDB 客户端事务契约:读写缓冲、冲突范围、@transactional 自动重试,以及 5 秒上限如何约束应用设计——机制证明留给第 8–9 篇。
对照 WriteBatch 原子性与 Snapshot MVCC,拆解 TransactionDB 悲观锁、OptimisticTransactionDB 提交时冲突检测、WritePrepared 的 prepare/commit 与 CommitCache 边界;TiKV 分布式事务仅作 B 级前瞻,不替代 Percolator 正文。
拆解 PostgreSQL 事务系统的三层结构:事务状态机 TransState 的状态转换路径、子事务(savepoint)的 TransactionState 栈与 ResourceOwner 嵌套管理、两阶段提交(2PC)的 WAL 记录与 pg_twophase 状态文件格式、事务 ID 分配的 xidStopLimit/xidWrapLimit 防线。附带 2PC 泄露的排查 SQL 和子事务栈过深的故障案例。
数据库事务的四大特性 ACID 中,隔离性(Isolation)是最复杂的一项。原子性靠 WAL 保证(参见 [WAL 与崩溃恢复](../27-wal-aries/wal-aries.html)),持久性靠 fsync 落盘,一致性是应用层语义——唯独隔离性,需要存储引擎在并发控制层面做出大量取舍。SQL 标准定义了…