本文主要介绍“两阶段和三阶段数据库分布式事务有什么区别”。在日常操作中,相信很多人对两阶段和三阶段数据库分布式事务的区别有所怀疑。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“两阶段和三阶段数据库分布式事务有什么区别”的疑惑!接下来,请和边肖一起学习!
00-1010c代表一致性,a代表可用性,p代表分区容差。
对于一致性:,的指定客户端,读操作保证可以返回最新的写操作结果。
可用性:无故障节点在合理的时间内返回合理的响应(不是错误和超时响应)。(只有无故障节点才能满足正常业务;只有在合理的时间内用户才能接受;只有当合理的响应被返回时,用户才能接受它)。
当网络分区出现在分区容错性:,时,系统可以继续“履行其职责”。(定义的网络分区中有很多情况,比如丢包、连接中断和拥塞。
中定义的职责的履行表示系统可以返回合理的响应。)
00-1010 1,请求阶段(提交-请求阶段,或投票阶段)
询问。协调者将交易内容发送给所有参与者,询问交易是否可以提交,然后开始等待参与者的响应。
执行交易。每个参与者节点执行事务操作(本地事务),并在事务日志中记录撤消和重做信息。
每个参与者将对交易查询的响应反馈给协调者。同意(事务参与者的本地作业执行成功)或取消(本地作业执行失败)。
2.提交阶段
在这一阶段,协调员将根据第一阶段的投票结果做出决定:提交还是取消。
并且只有当所有参与者都同意提交时,事务协调器才会通知所有参与者提交事务,否则,协调器会通知所有参与者回滚事务。
00-1010 1.同步阻塞问题。
在执行过程中,所有参与节点都被事务阻塞。当参与者占用公共资源时,必须阻止其他第三方节点访问公共资源。
2.单点故障
当协调器出错时,所有参与者仍处于锁定事务资源的状态,无法继续完成事务操作。
3、
在第二阶段,当协调器再次发送提交消息时,它就下去了,唯一接收到这个消息的参与者也下去了,所以即使协调器通过选举协议产生了一个新的协调器,这个事务的状态也是不确定的,没有人知道这个事务是否已经提交。
4.不一致的数据
在两阶段提交的第二阶段,当协调器向参与者发送提交请求时,在发送提交请求的过程中出现本地网络异常或协调器失败。这一次,只有一部分参与者收到提交请求,提交操作将在这部分参与者收到提交请求后执行。然而,其他没有收到提交请求的机器无法执行事务提交,因此数据的局部不一致性出现在整个分布式系统中。
CAP
1、CanCommit
询问。
每个参与者对协调此反馈事务的查询的响应。
2、预调试
假设协调器从所有参与者那里得到了“是”的响应,那么事务预提交将被执行。执行事务操作,在事务日志中记录撤销和重做信息。
假设任何参与者向协调器反馈“否”响应,或者等待超时后,协调器无法从所有参与者获得响应,则事务将被中断。
3、文档
在这个阶段,事务将被提交或回滚。
一、两段式
为协调者和参与者设置了超时机制。
参与者的阻塞范围缩小,第一阶段出现两级阻塞,第二阶段出现三级阻塞。
解决了单点阻塞问题,因为一旦参与者不能及时收到协调者的信息,他会因超时而默认提交。但是,如果协调器发送中止,其中一个参与者由于网络问题未能收到,最终提交,则该参与者的数据与执行中止的其他参与者的数据不一致。
(原两阶段提交中,经过投票,解决了由于协调人崩溃或错误导致参与者无法知道是提交还是暂停的“不确定状态”可能导致的长时间延迟问题。也就是说,即使协调者在发送提交消息后就下去了,而唯一收到这个消息的参与者也同时下去了,我们仍然可以知道它至少处于准备通过提案的阶段,也就是说大家已经决定通过第一阶段,然后就可以直接通过了。(即第一阶段的预告起到担保的作用))
至此,“两阶段和三阶段数据库分布式事务有什么区别”的研究结束,希望能解决大家的疑惑。理论和实践的结合可以帮助你学得更好。去试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/98521.html