MST

星途 面试题库

面试题:分布式系统中分布式事务隔离性常见问题及基础解决方案

在分布式系统的分布式事务场景下,经常会出现哪些隔离性问题?针对这些问题,请阐述两种常见的基础解决方案及其原理。
28.4万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

常见隔离性问题

  1. 脏读:一个事务读取到另一个未提交事务修改的数据。比如事务A修改了某数据但未提交,事务B此时读取到了这个未提交的修改数据。
  2. 不可重复读:在同一个事务内,多次读取同一数据返回的结果不一致。例如事务A先读取一次数据,事务B随后修改并提交了该数据,事务A再次读取时得到了不同结果。
  3. 幻读:在一个事务内,按照相同查询条件多次读取数据,第二次读取比第一次读取多出了一些数据行(类似幻觉)。比如事务A按条件查询数据,事务B插入了满足该查询条件的新数据行并提交,事务A再次查询就会多读到这些新数据。

常见基础解决方案及其原理

  1. 两阶段提交(2PC)
    • 原理:分为准备阶段(Prepare)和提交阶段(Commit)。在准备阶段,协调者向所有参与者发送事务预提交请求,参与者执行事务操作并记录日志,但不真正提交。然后向协调者反馈“准备就绪”或“失败”。如果所有参与者都“准备就绪”,协调者进入提交阶段,向所有参与者发送提交请求,参与者正式提交事务;若有任何一个参与者反馈“失败”,协调者则向所有参与者发送回滚请求,参与者回滚事务。
  2. TCC(Try - Confirm - Cancel)
    • 原理:Try阶段,资源的预留和锁定,完成所有业务检查(一致性),预留必须业务资源(准隔离性)。Confirm阶段,真正执行的业务操作,不做任何业务检查,只使用Try阶段预留的业务资源,因此Confirm阶段需满足幂等性。Cancel阶段,释放Try阶段预留的业务资源,同样需满足幂等性。