分布式事务、分布式一致性、分布式锁
大家好,我是程序员小李,今天咱们聊聊在面试中经常被问到的分布式系统核心话题:分布式事务、分布式一致性、分布式锁。这些概念在大型系统开发中至关重要,尤其在高并发场景下。如果你在准备Java面试,我强烈推荐这份资源:2025年Java面试宝典 提取码: 9b3g。它覆盖了最新考点,帮你轻松应对技术面。
在分布式系统中,数据分散在多台机器上,这就带来了挑战。比如,电商下单时,库存扣减和订单创建必须在不同服务间同步,否则会出乱子。今天,我就以真实面试口吻,带大家过一遍这些知识点,不写代码,只讲核心逻辑。
分布式事务
分布式事务是啥?简单说,就是多个服务操作要作为一个整体成功或失败。想象你在面试中被问:“如何保证跨服务的数据一致性?” 这时,你得提分布式事务。常见问题包括部分失败导致数据不一致。
解决方案呢?先说两阶段提交(2PC)。它分准备和提交两阶段:协调者先问所有参与者“能提交吗?”,如果都OK,才正式提交。但问题来了,如果协调者挂了,系统可能卡住。另一个方案是TCC(Try-Confirm-Cancel),它更灵活:先Try预留资源,Confirm确认,Cancel回滚。面试时,强调TCC适合高并发场景,但实现复杂。
分布式事务的关键是容错。CAP定理告诉我们,分布式系统不能同时满足一致性、可用性和分区容忍性。在分布式事务中,我们常牺牲一点可用性来保一致性。记住,面试官爱问实际案例,比如你用Seata框架解决过什么问题。

上图展示了分布式事务的流程,协调者在中间协调参与者。
分布式一致性
分布式一致性是确保所有节点数据同步的核心。面试中,常被问:“解释下CAP和BASE理论。” 分布式一致性涉及多个模型,比如强一致性和最终一致性。
强一致性要求所有节点实时同步数据。但现实中,这难实现,因为网络延迟。这时,最终一致性登场:数据最终会一致,但允许短暂不一致。例如,电商库存显示可能滞后几秒。CAP定理是基础:C(一致性)、A(可用性)、P(分区容忍性),你只能选两个。分布式系统通常优先P和A,牺牲C,用最终一致性兜底。
实际应用?Redis集群用主从复制实现弱一致性,而ZooKeeper通过ZAB协议保证强一致性。面试时,结合场景:比如,支付系统必须强一致,否则用户钱扣了却没到账。分布式一致性是分布式事务的延伸,两者常一起考。

一致性模型图解:强一致 vs 最终一致。
分布式锁
分布式锁解决资源竞争问题。面试高频题:“如何实现分布式锁?” 想象多服务同时抢一个资源,比如秒杀商品。分布式锁确保只有一个服务能操作。
实现方式多样。Redis锁常用SETNX命令:服务A设置key,如果成功就获取锁;服务B尝试会失败。但要注意死锁:设置超时时间,避免服务挂了锁不释放。ZooKeeper锁更可靠:它用临时节点和监听机制,节点删除时自动通知其他服务。面试中,强调优缺点:Redis快但可能脑裂;ZooKeeper一致性强但慢。
分布式锁在分布式事务中扮演角色。比如,下单时用锁保护库存扣减,防止超卖。分布式锁和分布式一致性紧密相关:锁机制依赖一致性协议来同步状态。

分布式锁工作流程:服务竞争锁资源。
总结一下,分布式事务处理跨服务操作,分布式一致性保数据同步,分布式锁防资源冲突。三者结合,构建健壮系统。如果您在准备面试,需要购买面试鸭会员,可以通过面试鸭返利网找我,返利25元,帮你省点钱。
返回首页 获取更多面试资源。


