请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

事务管理器的问题?

老师,你好关于2PC两阶段提交的话我一些问题想请教一下:
1.事务管理器这里画的是一个节点,会不会存在单点故障?如果会的话,这里是怎么进行高可用?
2.在并发很高的情况下,事务管理器作为所有服务的协调和事务提交的话,会不会有性能问题?有的话这块是怎么进行处理?
3.2pc既然作为分布式事务的一种理论模型的话,那么3pc和2pc的区别是啥?

正在回答

1回答

1:图中事务管理器是会存在单点故障的,如果图中存在单点故障的话,其实就是没办法100%保证数据的一致性,但是我们可以通过一些措施来避免,比如常见的:1:事务管理器多节点部署 2:对于2PC事务管理器的元数据和状态信息,进行定期的备份,并确保备份数据可靠可恢复。在节点故障时,可以基于备份数据进行快速的节点恢复,减少服务中断时间


2:2pc比起1pc来看主要是增加了一个事务管理器,用来协调多个事务资源。以及,将commit拆分成了prepare和commit两个阶段,prepare存在的意义就是可以做回滚,不会像1pc一样无法挽回。不过说白了2pc本质上就是让管理者来控制参与者的投票,如果全票通过,那么事务全部commit,然后程序继续运行。2pc的交互、持久化都非常比1pc多了很多,这样就注定2pc的效率会下降很多。同时,2pc事务管理器和事务资源参与者之间存在很多可能地阻塞等待地地方,这将会导致资源的不可用问题,从而程序不可用的问题。另外,虽说2pc利用阻塞做到了一定程度的强一致性,但是在遇到宕机问题、网络隔离问题,并无法马上恢复的时候数据的强一致性并不能够真正的保证。总的来说,2pc提供了分布式场景下协调多个事务参与者的协议规范。但是,在高并发的使用场景下还是不太适用,毕竟增加了不少通信上的成本,以及阻塞问题带来的严重后果。


3:2PC是一种较为简单的协议,在事务提交过程中只包含两个阶段:准备阶段和提交阶段。在准备阶段,协调者节点询问所有参与者节点是否可以提交事务;在提交阶段,协调者节点根据参与者节点的反馈确定是否提交或者中止事务。2PC的缺点是,当协调者节点发生故障时,可能导致参与者节点一直等待,造成系统的阻塞。


3PC通过引入一个超时阶段,提供了更好的容错性。在三个阶段中,首先是准备阶段,协调者节点询问参与者节点是否可以预备提交事务;然后是承诺阶段,参与者节点发送一个承诺消息给协调者节点,表示参与者节点将在下一阶段提交或中止事务;最后是提交阶段,协调者节点根据参与者节点的承诺消息确定是否提交或者中止事务。3PC的优点是,在协调者节点故障时,参与者节点可以通过超时机制来避免长时间等待。


总结来说,2PC是一个简单但不够可靠的协议,容易在协调者节点故障时产生阻塞。而3PC通过引入超时机制来提高容错性,但增加了复杂度。选择使用哪种协议要根据具体的系统需求和性能要求进行评估。


1 回复 有任何疑惑可以回复我~
  • 提问者 _风中叶 #1
    老师讲的很好,这块确实是受益了。
    回复 有任何疑惑可以回复我~ 2023-10-12 18:45:38
  • 玄参架构 回复 提问者 _风中叶 #2
    不客气,谢谢同学课程的支持
    回复 有任何疑惑可以回复我~ 2023-10-13 11:54:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信