分布式事务2PC和TCC是解决跨服务数据一致性的核心方案,2PC通过协调者分准备和提交两阶段保证强一致,但存在同步阻塞和单点故障风险;TCC采用Try-Confirm-Cancel三阶段异步补偿,适合高并发但需业务编码实现。本文深度解析2PC事务与TCC事务的底层原理、性能对比及选型策略,涵盖Seata框架实践和面试高频考点,助你掌握分布式事务的阻塞问题、补偿机制等核心难点,附2025年Java面试宝典及实战决策树,提升分布式系统架构设计能力。
2025年Java面试宝典抢先下载:
🔗 点击获取《2025 Java面试高频考点》(提取码: 9b3g)
备战金三银四,这份资料助你轻松过关!
想象一下:你去银行跨行转账,钱从A卡扣了,但B卡没收到。在单系统里,数据库事务能保证ACID。可一旦服务拆成多个,比如订单服务、库存服务、支付服务各管一摊,如何保证它们操作一致?这就是分布式事务的核心痛点。
2PC事务通过一个协调者(Coordinator)来管理多个参与者(Participant),分两步走:
准备阶段(Prepare)
协调者问所有参与者:“能提交吗?”
参与者锁资源、写undo日志,回复“YES”或“NO”。
(2PC事务准备阶段流程示意)
提交阶段(Commit/Rollback)
如果全员YES → 协调者发commit命令,参与者正式提交。
但凡有一个NO → 协调者发rollback命令,全员回滚。
✅ 优点:强一致性,所有节点状态一致。
❌ 致命伤:
面试被问2PC事务,一定要点出它的阻塞问题和单点隐患!
TCC事务(Try-Confirm-Cancel)是2PC的改进版,核心思想是业务补偿:
✅ 优势:
❌ 难点:
(TCC事务三阶段流转模型)
| 特性 | 2PC事务 | TCC事务 | |----------------|--------------------|--------------------| | 一致性 | 强一致 | 最终一致 | | 性能 | 低(同步阻塞) | 高(异步化) | | 业务侵入 | 低(数据库层实现) | 高(需写补偿代码) | | 适用场景 | 短事务、低并发 | 高并发、长业务流程 |
👉 面试技巧:被问“分布式事务如何选型?” 可以这样答:
“短事务用2PC事务简单省事,但怕协调者宕机;高并发场景用TCC事务更抗压,但得自己写补偿逻辑。现在很多公司用Seata这类中间件,底层支持AT模式(类似2PC)和TCC模式。”
(分布式事务方案决策树)
如果你正在备战分布式系统面试,强烈推荐使用面试鸭会员题库。覆盖2PC事务、TCC事务、分布式锁、CAP理论等高频考点,附逐题解析和踩坑指南。
🔥 限时福利:
通过 面试鸭返利网 开通会员,可享 25元现金返利!
👉 直达链接:mianshiyafanli.com
用好工具+吃透原理,拿下Offer事半功倍! 🚀
扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)
面试鸭小程序码
美团大额优惠券,给自己加个鸡腿吧!
支付宝扫码领取1-8元无门槛红包