Skip to content

题目11:分布式事务与最终一致性 ​

📊 评分:— | 📅 完成时间:待完成


📝 题目 ​

分布式事务你们是怎么处理的?2PC、TCC、本地消息表、最大努力通知分别适用于什么场景?你更推荐哪一种?


💬 我的回答 ​


📖 参考答案 ​

一、为什么需要分布式事务 ​

单体应用一个本地事务就能保证一致性,但微服务拆分后,一个业务流程会跨多个服务和数据库,需要在一致性和可用性之间做权衡。

二、常见方案 ​

1. 2PC ​

  • 强一致
  • 协调成本高
  • 阻塞问题明显

2. TCC ​

  • Try / Confirm / Cancel
  • 业务侵入性强
  • 适合核心资金类场景

3. 本地消息表 ​

  • 先落库再投递消息
  • 配合重试实现最终一致性
  • 工程上比较常见

4. 最大努力通知 ​

  • 允许短时不一致
  • 通过重试和对账兜底

三、实践建议 ​

  • 核心链路优先考虑 TCC 或强补偿设计
  • 普通业务链路更多采用消息最终一致性
  • 最终一致性一定要配幂等、重试、对账

🎯 面试标准话术 ​

"真实项目里很少追求绝对强一致,更多是根据业务场景做取舍。比如支付、库存这类核心链路,会用更严格的补偿机制;而大多数业务场景,我更倾向用本地消息表或 MQ 事务消息来做最终一致性。"

努力工作 享受生活