面试题答案
一键面试2PC存在的主要缺陷
- 单点故障:协调者在2PC中处于核心地位,若协调者发生故障,整个事务流程将无法继续。例如在一个银行转账分布式事务场景下,协调者故障会导致转账相关的各个分支事务无法得知最终决策,可能导致资金处于不确定状态。
- 数据一致性风险:在阶段二,如果协调者发出提交指令后部分参与者未收到(如网络分区等原因),已提交的参与者和未提交的参与者数据状态不一致。例如电商订单系统,部分库存节点提交扣减库存,部分未提交,就会出现库存数据不一致。
- 同步阻塞:在2PC执行过程中,从阶段一开始,参与者就会锁定资源,直到事务结束。在高并发场景下,大量资源被长时间锁定,会严重影响系统性能。例如一个大型电商促销活动,众多订单事务同时进行,2PC的同步阻塞可能导致大量资源被占用,新的订单处理缓慢。
针对单点故障的缓解策略
- 策略:采用主备协调者模式,即设置一个主协调者和多个备用协调者。
- 原理:正常情况下,主协调者负责整个2PC事务流程的控制和协调。当主协调者发生故障时,备用协调者可以通过选举机制(如基于raft协议等)选出一个新的主协调者继续事务流程。例如在分布式数据库系统中,原主协调者故障,备用协调者迅速接管,根据已记录的事务日志等信息继续推进事务,保证事务处理不受影响,从而缓解单点故障带来的问题。