MST

星途 面试题库

面试题:分布式系统中3PC协议与2PC协议相比在安全性方面有哪些优势

请阐述分布式系统中3PC协议相对2PC协议,在安全性方面新增的机制以及如何通过这些机制提升安全性。
20.1万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

新增机制

  1. 预询问阶段(CanCommit):在2PC协议基础上,3PC新增了预询问阶段。协调者向所有参与者发送CanCommit请求,询问它们是否可以进行事务提交。参与者根据自身状态回复Yes或No。这使得在真正准备提交事务前,先对参与者的状态进行初步探测,避免在一些明显无法提交事务的情况下进入准备阶段,减少资源浪费。
  2. 超时机制优化:在3PC中,除了协调者有超时机制,参与者也设置了超时机制。在PreCommit阶段,如果协调者没有在规定时间内收到所有参与者的ACK响应,协调者会中断事务;而对于参与者,如果在等待协调者指令过程中超时,也会主动中断事务。
  3. 阶段三(DoCommit)的不确定性处理:在3PC的DoCommit阶段,如果协调者处于正常工作状态且发出了Commit或Abort指令,参与者执行相应操作。但如果协调者出现故障,参与者不会像2PC那样一直阻塞等待,而是根据自身记录的状态,一定时间后默认执行Commit操作。这减少了因协调者故障导致参与者长时间阻塞的风险。

安全性提升方式

  1. 减少资源浪费和无效准备:预询问阶段(CanCommit)提前检测参与者状态,若有参与者因资源不足等原因无法提交事务,就不会进入准备阶段,避免了在2PC协议中可能出现的部分参与者已准备好事务但最终因其他参与者问题而回滚,造成资源浪费的情况,从而提升了事务处理的安全性和效率。
  2. 增强故障容错能力:参与者设置超时机制,避免了因协调者故障而导致参与者无限期阻塞等待指令,使得参与者在一定程度上能够自主处理事务状态,减少了数据不一致的风险。同时,协调者对PreCommit阶段的超时处理,也保证了事务在合理时间内有明确的走向,提升了系统在故障情况下的安全性。
  3. 降低协调者故障影响:在DoCommit阶段,协调者故障时参与者的默认Commit操作虽然可能会带来一定风险,但相比2PC中参与者无限期阻塞,这种方式使得事务有较高概率能正常完成,降低了因协调者长时间故障导致数据不一致的可能性,在一定程度上提升了系统的安全性和可用性。