闭卷重建本地事务边界为何会断裂的故障模型、消息状态、不变量与恢复边界。
分布式系统与可靠服务 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建两阶段提交协议的故障模型、消息状态、不变量与恢复边界。
闭卷重建协调者日志与不确定窗口的故障模型、消息状态、不变量与恢复边界。
闭卷重建Saga与补偿事务的故障模型、消息状态、不变量与恢复边界。
闭卷重建Outbox、Inbox与消息一致性的故障模型、消息状态、不变量与恢复边界。
闭卷重建隔离异常与全局不变量的故障模型、消息状态、不变量与恢复边界。
闭卷重建实验:2PC与Saga故障注入的故障模型、消息状态、不变量与恢复边界。
机制:协调者先prepare收集可提交承诺,再决定commit/abort并持久记录;参与者prepared后必须等待最终决定;实验:逐消息推演正常提交、prepare拒绝和协调者决定后崩溃;边界:2PC提供原子提交但可能阻塞,不等于高可用共识,也不提供业务隔离。
机制:跨数据库或服务后不再共享一个锁管理器和日志,局部提交成功不能自动推出全局成功;实验:画下单、扣库存、扣款三步的提交点和外部副作用;边界:把三个本地事务放进同一个try块不会产生全局原子性。
机制:长业务拆成可提交步骤,每步有语义补偿,编排或事件协同在失败后逆向修复;实验:为旅行预订设计机票、酒店、付款及补偿顺序;边界:补偿不是物理回滚:邮件已发、价格变化和外部系统可能让补偿失败。
机制:决定必须先稳定落盘再通知,恢复时重放决定;参与者prepared但未知决定时不能擅自提交或回滚;实验:枚举每个日志/消息间隙崩溃后的恢复动作;边界:超时只能触发查询和恢复,不能在已prepare后单方面假定abort。
机制:分布式事务仍需明确读写冲突、写偏差和不变量检查位置,最终一致流程尤其要约束中间态;实验:构造两个分片各自合法但合起来超出全局额度的并发执行;边界:每片串行化不能推出跨片串行化,全局唯一性需要路由或协调。
机制:业务变更与outbox事件在同一本地事务提交,转发器至少一次投递,消费者inbox去重;实验:模拟提交后进程崩溃、重复发布和重复消费;边界:Outbox解决数据库与消息发送间隙,不自动保证所有消费者业务正确。
机制:实现协调者/参与者状态机及补偿栈,按崩溃点输出最终状态或IN_DOUBT;实验:覆盖正常提交、prepare拒绝、决定丢失和补偿失败测试;边界:模型必须把稳定日志与内存状态分开,否则恢复结论不可信。