
1) 【一句话结论】采用两阶段提交(2PC)或Saga模式结合补偿机制,通过全局事务协调者控制参与者状态,确保跨数据库/系统操作的全局一致性,适用于强一致性需求的审计数据同步场景。
2) 【原理/概念讲解】分布式事务的核心是“全局事务管理”,即协调多个分布式资源(数据库、系统)完成一个逻辑事务。以两阶段提交(2PC)为例,流程分为“预提交”和“提交/回滚”阶段:协调者(事务管理器)先让所有参与者(如数据库A、系统B)执行本地操作并暂存结果,参与者确认后返回“预提交”状态;协调者收到所有参与者“预提交”后,向所有参与者发送“提交”指令,参与者执行本地提交;若任何参与者未返回“预提交”,协调者发送“回滚”指令,所有参与者执行本地回滚。类比:就像一个项目经理(协调者)要确保所有子任务(参与者)要么都完成,要么都取消,不能中间状态,否则项目会混乱。
3) 【对比与适用场景】
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 两阶段提交(2PC) | 集中式协调机制,协调者控制参与者状态 | 强一致性,协调者故障导致阻塞 | 跨数据库更新(如财务报表同步)、银行转账 | 协调者单点故障风险,性能瓶颈 |
| Saga模式 | 分段事务模式,每个段独立提交,失败时补偿 | 弱一致性,最终一致性,无协调者阻塞 | 跨系统业务流程(如订单-库存-支付链路)、审计数据同步 | 补偿逻辑复杂,需保证幂等性 |
4) 【示例】以2PC为例,审计数据同步场景。假设需要同时更新数据库A的“财务报表表”和系统B的“报表接口”数据,流程如下:
5) 【面试口播版答案】面试官您好,针对跨数据库/系统的数据一致性,我建议采用两阶段提交(2PC)或Saga模式。核心是全局事务管理,通过协调者控制参与者状态,确保操作要么全部成功要么全部回滚。比如财务报表更新时,需要同时更新数据库A的报表表和系统B的报表接口,用2PC的话,协调者先让两者预提交,确认都成功后提交,否则回滚。或者用Saga,比如订单流程,创建订单、扣库存、支付,每步独立提交,失败时补偿。这样能保证数据一致性。
6) 【追问清单】
7) 【常见坑/雷区】