[发明专利]一种非阻塞式容错的分布式事务提交方法及系统有效
申请号: | 201510595324.9 | 申请日: | 2015-09-17 |
公开(公告)号: | CN105183544B | 公开(公告)日: | 2018-08-31 |
发明(设计)人: | 朱妤晴 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F17/30 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 阻塞 容错 分布式 事务 提交 方法 系统 | ||
本发明提出一种非阻塞式容错的分布式事务提交方法,该方法将分布式事务的数据存储在多个节点,多个节点共同执行所述分布式事务,选取所述多个节点或系统外中的一个节点作为初始第一节点,所述初始第一节点为分布式事务取得全局唯一事务标识符;所述初始节点向除所述初始第一节点之外的节点发起所述分布式事务的提交请求,除所述初始第一节点之外的节点分别在本地对所述分布式事务进行提交后,向所述初始第一节点发送确认提交消息,对于所述分布式事务涉及的每个数据项,所述初始第一节点收集到所述数据项的复本所在的多个节点中一半以上的确认提交消息后,完成所述分布式事务的提交过程。本发明具有高可扩展性、高效低延时、容错高可用的优点。
技术领域
本发明涉及数据库和分布式系统技术领域,特别涉及一种非阻塞式容错的分布式事务提交方法及系统。
背景技术
事务可以保证金融交易的顺利进行,亦可保证一组数据访问操作的正确执行,为了保证事务的原子性,数据库系统需要执行一个事务的全部操作,或者不执行一个事务的任何操作,原子性允许多个操作联合起来产生结果,但是系统中的失效会妨碍原子性的保证,例如,若分布式系统中的一个设备或通讯失效,一个事务相关的分数据库中可能会将事务执行完成,而有的则回滚事务,假如存储事务相关数据的分数据库不能回滚到事务开始前的一个稳定状态,这将使得分数据库处于不同的状态中,从而导致系统数据的毁坏。
在一个分布式系统中,分布式事务的原子性由原子提交协议(Atomic CommitProtocol,ACP)保证,当前,最新技术水平系统常用的ACP有以下几个:
1、两阶段提交(2PC)——业界标准、使用最广泛
在过去30多年时间里,分布式原子提交操作是由“两阶段提交”协议或其变异方案来保证的,此协议共分为两阶段,即协议开始时,参与节点发送“准备好”消息或“回滚”消息给协调节点,参与节点决定本地是否已经“准备好”提交事务或者只能“回滚”事务,并将决定和相关数据写入日志中,在第一阶段,协调节点决定提交或回滚事务,如果协调节点收到了所有参与节点的“准备好”消息,协调节点可以决定提交事务,如果协调节点收到任何一个参与节点的“回滚”消息,协调节点只能回滚事务;在第二阶段,协调节点将决定写入日志,并向所有参与节点发送消息通知它们提交或回滚事务,参与节点可以相应地处理事务。
因为协调节点单方决定事务的结果,单个参与节点的失效不会阻塞事务,如果一个参与节点在发送“准备好”或“回滚”消息前失效或失联了,协调节点在等待一定时间后会单方面决定回滚事务,但是,两阶段提交在某些情况下依然会阻塞,例如,如果所有参与节点发送了“准备好”消息后协调节点失效了,参与节点将会被阻塞直到协调节点恢复并确定事务的结果。
2、三阶段提交(3PC)——同步系统模型下的非阻塞式协议
三阶段提交协议希望通过增加一个阶段来可以解决两阶段提交的阻塞问题,在该阶段中,一个关于事务提交或回滚的初步决定被发送给参与节点,如果协调节点失效了,参与节点中的一个将被选出作为新的协调节点来继续执行协议,当失效的协调节点恢复后,它将成为参与节点而不再是协调节点,但是,在很多应用中,由于实际系统并不符合同步系统模型,实现传统的三阶段提交并不可行,而且,三阶段提交也会阻塞,如果多个参与节点失效了或如果存在一个通讯故障,三阶段提交的另一个缺陷是过高的通讯代价。
3、最新的分布式提交协议
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510595324.9/2.html,转载请声明来源钻瓜专利网。