【金融科技工程】幂等、事务与一致性:SAGA、TCC、对账补偿
超时重试会让支付扣两次、退两次。本文按 Stripe 文档、IETF 草案与 Seata 实现拆解 Idempotency-Key 状态机、业务唯一键、2PC/TCC/SAGA/Outbox 的取舍与空回滚防悬挂,结论是每一跳都必须可安全重试。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 5 篇文章 · 返回首页
超时重试会让支付扣两次、退两次。本文按 Stripe 文档、IETF 草案与 Seata 实现拆解 Idempotency-Key 状态机、业务唯一键、2PC/TCC/SAGA/Outbox 的取舍与空回滚防悬挂,结论是每一跳都必须可安全重试。
从 sql/binlog.cc 与 trx0trx.cc 拆解 binlog 与 InnoDB redo 的 XA 两阶段提交、ordered_commit 组提交、sync_binlog 与 innodb_flush_log_at_trx_commit 组合语义。
拆解 PostgreSQL 事务系统的三层结构:事务状态机 TransState 的状态转换路径、子事务(savepoint)的 TransactionState 栈与 ResourceOwner 嵌套管理、两阶段提交(2PC)的 WAL 记录与 pg_twophase 状态文件格式、事务 ID 分配的 xidStopLimit/xidWrapLimit 防线。附带 2PC 泄露的排查 SQL 和子事务栈过深的故障案例。
2PC 在 Coordinator 崩溃时会阻塞所有参与者;本文精确分析三类故障窗口,拆解 Presumed Abort 优化原理,对比 Spanner/CockroachDB/TiDB 的现代方案。
「用 2PC 就行了」——说这话的人大概没在生产环境里被 Coordinator 挂掉后全员阻塞的锁堵过三小时。2PC 的真实失败模式、Percolator 的精妙设计、Saga 与 TCC 的工程取舍,分布式事务远比教科书复杂。