`
sharong
  • 浏览: 485331 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
D1667ae2-8cfc-3b68-ac7c-5e282789fa4a
论开源
浏览量:8460
7eb53364-fe48-371c-9623-887640be0185
Spring-data-j...
浏览量:12769
社区版块
存档分类
最新评论
阅读更多
这篇文章粗略讲一下两阶段提交协议,即2PC,Two Phase Commitment Protocol。之所以称为两阶段提交,是相对于单库的事务提交方式来说的。我们在单库上完成相关的数据库操作后,就会直接提交或者回滚,而在分布式系统中,在提交之前增加了准备的阶段,所以称为两阶段提交。
图1显示的就是第一阶段提交的情况,可以看到,参与操作的是事务管理器与两个资源。

      图1 第一阶段

图2所示的是第二阶段的情况。

      图2 第二阶段

此外还会遇到的另外一种情况,就是在准备阶段有一个资源失败,那么在第二阶段的处理就是回滚所有资源,如图3和图4所示。

     图3 出现问题的第一阶段

    图4 第一阶段出现问题后的第二阶段

前面对两阶段提交的介绍都是在理想状态下的情况。在实际当中,由于事务管理器自身的稳定性,可用性的影响,以及网络通信中可能产生的问题,出现的情况会复杂很多。此外,事务管理器在多个资源之间进行协调,它自身要进行很多日志记录的工作。网络上的交互次数的增多以及引入事务管理器的开销,是使用两阶段提交协议使分布式事务的开销增大的两个方面。
因此,在进行垂直拆分或者水平拆分后,需要想清楚是否一定要引入两阶段的分布式事务,在必要的情况下才建议使用。
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics