一种分布式事务处理方法和装置的制作方法

文档序号:7723516阅读:122来源:国知局
专利名称:一种分布式事务处理方法和装置的制作方法
技术领域
本发明涉及互联网技术,特别是涉及一种分布式事务处理方法和装置。
背景技术
随着互联网技术的不断发展,网络应用日益增多。在当前网络系统不断升级的过程中,数据存储越来越多,业务逻辑复杂度越来越高,因此,整个网络系统对于数据处理的准确性越来越难以保证。尤其对于分布式事务处理的过程,由于在该过程中多个单元协同处理事物,其中某个单元处理错误处理或发生异常而导致的数据不一致,往往给断点排查和数据修复带来很大难度,并需要人工参与。采用目前的分布式事务处理方法,在自动化方式下,无法保证分布式事务处理过程中各个单元之间的数据的一致性。

发明内容
本发明提供了一种分布式事务处理方法,采用该方法能够保证分布式事务处理过程中数据的一致性。本发明还提供了一种分布式事务处理装置,采用该装置能够保证分布式事务处理过程中数据的一致性。为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种分布式事务处理方法,包括启动最初工作单元作为当前工作单元;当前工作单元尝试执行对应的事务处理操作;当前工作单元判断对应的事务处理操作是否成功;如果是,当前工作单元执行成功确认操作,将当前上下文修改为执行所述对应的事务处理操作之后的上下文,向下一个工作单元发送当前上下文消息,以启动下一个工作单元作为当前工作单元,返回执行当前工作单元尝试执行对应的事务处理操作的步骤;否则,当前工作单元撤销所述对应的事务处理操作,将当前上下文修改为执行所述对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息,以使上一个工作单元撤销该工作单元对应的事务处理操作,将当前上下文修改为执行上一个工作单元对应的事务处理操作之前的上下文,向上一个工作单元的上一个工作单元发送当前上下文消息。所述将当前上下文修改为执行所述对应的事务处理操作之后的上下文之后,该方法还包括判断当前工作单元是否是最终工作单元;如果是,确认分布式事务处理过程成功;否则,执行所述向下一个工作单元发送当前上下文消息的步骤;所述将当前上下文修改为执行所述对应的事务处理操作之前的上下文,该方法还包括
判断当前工作单元是否是最初工作单元;如果是,确认分布式事务处理过程失败;否则,执行所述向上一个工作单元发送当前上下文消息的步骤。所述当前工作单元执行成功确认操作包括当前工作单元记录对应的事务处理操作的日志;或,当前工作单元释放锁;或,当前工作单元发送通知消息。所述向下一个工作单元发送当前上下文消息包括当前工作单元通过传输控制协议TCP连接向下一个工作单元发送当前上下文消息;所述向上一个工作单元发送当前上下文消息包括当前工作单元通过TCP连接向上一个工作单元发送当前上下文消息。所述当前上下文包括所述分布式事务处理过程的元数据、控制信息和当前缓存数据。本发明还公开了一种分布式事务处理装置,包括至少两个串行的工作单元;其中,最初工作单元用于初始启动;其它工作单元用于在收到上一个工作单元发送的当前上下文消息启动;每个所述工作单元用于在启动后尝试执行对应的事务处理操作,判断对应的事务处理操作是否成功;如果是,当前工作单元执行成功确认操作,将当前上下文修改为执行所述对应的事务处理操作之后的上下文,向下一个工作单元发送当前上下文消息;否则,当前工作单元撤销所述对应的事务处理操作,将当前上下文修改为执行所述对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息;每个所述工作单元用于在收到下一个工作单元的当前上下文消息后,撤销本工作单元对应的事务处理操作,将当前上下文修改为本工作单元对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息。每个所述工作单元还用于在将当前上下文修改为执行所述对应的事务处理操作之后的上下文之后,判断当前工作单元是否是最终工作单元;如果是,确认分布式事务处理过程成功;否则,向下一个工作单元发送成功上下文消息;每个所述工作单元还用于将当前上下文修改为执行所述对应的事务处理操作之前的上下文之后,判断当前工作单元是否是最初工作单元;如果是,确认分布式事务处理过程失败;否则,向上一个工作单元发送当前上下文消息。所述当前工作单元具体用于记录对应的事务处理操作的日志,以执行成功确认操作;或,所述当前工作单元具体用于释放锁,以执行成功确认操作;或,所述当前工作单元具体用于发送通知消息,以执行成功确认操作。所述至少两个串行的工作单元中,相邻的两个所述工作单元通过传输控制协议 TCP连接;所述当前工作单元通过所述TCP连接向下一个工作单元发送当前上下文消息;所述当前工作单元通过所述TCP连接向上一个工作单元发送当前上下文消息。所述当前上下文包括
所述分布式事务处理过程的元数据、控制信息和当前缓存数据。由上述发明内容可见,在每个工作单元确认操作是否成功,如果成功则通过上下文触发下一个工作单元,如果失败则通过上下文通知上一个工作单元撤销操作,并且当收到来自下一个工作单元的上下文时,撤销自身工作单元的操作并通知上一个工作单元撤销操作。从而在某个环节处理失败时,能够实现回滚机制,因此保证了分布式事务处理过程中的数据一致性。


图1是本发明实施例一的分布式事务处理方法的流程图;图2是本发明实施例二的分布式事务处理方法的流程图;图3是本发明实施例三的分布式事务处理装置的结构示意图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明的基本思想是,在分布式事务处理过程中,当一个事务处理成功时,通过上下文触发下一个事务的处理;当一个事务处理失败时,通过上下文通知上一个事务处理模块,以使上一个事务处理模块继续向它的上一个事务处理模块发送上下文,按照此方法依次执行,直到通知向第一个事务处理模块发送上下文,最终完成回滚。图1是本发明实施例一的分布式事务处理方法的流程图。如图1所示,该方法包括如下过程。步骤101 启动最初工作单元作为当前工作单元。步骤102 当前工作单元尝试执行对应的事务处理操作。步骤103 当前工作单元判断对应的事务处理操作是否成功。如果是,执行步骤 114;否则,执行步骤124。步骤114 当前工作单元执行成功确认操作。步骤115 当前工作单元将当前上下文修改为执行所述对应的事务处理操作之后的上下文,向下一个工作单元发送当前上下文消息。步骤116 启动下一个工作单元作为当前工作单元在步骤116之后,返回执行步骤102。步骤124 当前工作单元撤销所述对应的事务处理操作。步骤125 当前工作单元将当前上下文修改为执行所述对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息。步骤126 上一个工作单元撤销该工作单元对应的事务处理操作。步骤127 上一个工作单元将当前上下文修改为执行上一个工作单元对应的事务处理操作之前的上下文,向上一个工作单元的上一个工作单元发送当前上下文消息。在上述技术方案的基础上,在步骤115中,当前工作单元将当前上下文修改为执行所述对应的事务处理操作之后的上下文之后,在向下一个工作单元发送当前上下文消息之前,还可以先判断当前工作单元是否是最终工作单元。如果是,确认分布式事务处理过程成功。否则,执行所述向下一个工作单元发送当前上下文消息的步骤。在上述技术方案的基础上,在步骤125中,当前工作单元将当前上下文修改为执行所述对应的事务处理操作之前的上下文之后,在向上一个工作单元发送当前上下文消息之前,还可以先判断当前工作单元是否是最初工作单元。如果是,确认分布式事务处理过程失败。否则,执行所述向上一个工作单元发送当前上下文消息之后的步骤。在上述技术方案的基础上,根据分布式事务的不同,当前工作单元执行的成功确认操作也不同。具体地,当前工作单元执行的成功确认操作可以包括但不限于以下操作中的至少一种当前工作单元记录对应的事务处理操作的日志、当前工作单元释放锁、当前工作单元发送通知消息。在上述技术方案的基础上,在上述分布式事务处理方法中,相邻的工作单元之间建立有传输控制协议(TCP)连接。具体地,当前工作单元通过TCP连接向下一个工作单元发送当前上下文消息,通过TCP连接向上一个工作单元发送当前上下文消息。在上述技术方案的基础上,上述当前上下文中包括但不限于以下信息中的至少一种分布式事务处理过程的元数据、分布式事务处理过程的控制信息、当前缓存数据。图2是本发明实施例二的分布式事务处理方法的流程图。在本发明实施例二中, 以分布式事务处理过程具体为用户数据迁移过程为例,对该方法进行说明。在用户数据迁移过程中,包括3个工作单元,分别为第一工作单元、第二工作单元、第三工作单元。其中, 第一工作单元对应的事务处理操作为修改用户索引;第二工作单元对应的事务处理操作为拷贝数据;第三工作单元对应的事务处理操作为删除冗余数据。如图2所示,该方法包括如下过程。步骤211 第一工作单元尝试修改用户索引。在本步骤中,第一工作单元首先锁定用户索引信息,禁止系统对该用户的所有访问,同时修改用户索引的目标路径。步骤212 第一工作单元判断修改用户索引是否成功。如果是,执行步骤213,否则执行步骤201。步骤213 第一工作单元记录用户索引的修改日志。在本步骤中,第一工作单元将记录用户索引的原始信息生成日志。步骤214 第一工作单元将当前上下文修改为修改用户索引之后的上下文,向第二工作单元发送当前上下文消息。在本步骤中,第一工作单元修改当前上下文。并且,在第一工作单元修改当前上下文之后,由分布式事务处理装置将下一步处理转交给用于拷贝用户数据的第二工作单元。在步骤214之后,执行步骤221。步骤201 第一工作单元撤销步骤211中对用户索引的修改,将当前上下文修改为执行步骤211之前的上下文。在本步骤中,系统恢复用户原有索引信息,并清理本次操作生成的相关日志,以此达到无痕效果。步骤221 第二工作单元尝试拷贝数据。在本步骤中,当进入拷贝用户信息流程时,负责处理拷贝的第二工作单元会根据步骤214中传递的当前上下文将用户相关数据拷贝到指定路径。对于数据量大的情况,可以实时记录拷贝历史,以方便追踪与寻找断点,为了提高系统处理效率,也可根据大小合适的数量来记录拷贝历史。步骤222 第二工作单元判断拷贝数据是否成功。如果是,执行步骤223,否则执行步骤202。步骤223 第二工作单元记录拷贝数据的修改日志。在本步骤中,记录本次操作日志。步骤224 第二工作单元将当前上下文修改为拷贝数据之后的上下文,向第三工作单元发送当前上下文消息。在本步骤中,第二工作单元修改当前上下文。并且,在第二工作单元修改当前上下文之后,由分布式事务处理装置将下一步处理转交给用于删除用户冗余数据的第三工作单元。在步骤2 之后,执行步骤2。步骤202 第二工作单元撤销步骤221中对数据的拷贝,将当前上下文修改为执行步骤221之前的上下文,向第一工作单元发送当前上下文消息。第一工作单元在接受到第二工作单元的当前上下文后,第一工作单元执行步骤
201。具体地,步骤201第一工作单元撤销步骤211中对用户索引的修改,将当前上下文修改为执行步骤211之前的上下文。步骤2 第三工作单元尝试删除冗余数据。在本步骤中,第二工作单元拷贝用户数据成功后,用于删除用户冗余数据的第三工作单元会收到步骤224中发送当前上下文。第三工作单元根据当前上下文受理删除请求,解锁用户。步骤232 第三工作单元判断删除冗余数据是否成功。如果是,执行步骤233,否则执行步骤203。步骤233 第三工作单元记录删除冗余数据的修改日志。在本步骤中,第三工作单元记录操作日志。步骤234:第三工作单元将当前上下文修改为删除冗余数据之后的上下文,确认分布式事务处理过程成功。步骤203 第三工作单元撤销步骤2中对数据的删除,将当前上下文修改为执行步骤2之前的上下文,向第二工作单元发送当前上下文消息。第二工作单元在接受到第三工作单元的当前上下文后,第二工作单元执行步骤
202。具体地,步骤202第二工作单元撤销步骤221中对数据的拷贝,将当前上下文修改为执行步骤221之前的上下文。向第一工作单元发送当前上下文消息。第一工作单元在接受到第二工作单元的当前上下文后,第一工作单元执行步骤 201。具体地,步骤201 第一工作单元撤销步骤211中对用户索引的修改,将当前上下文修改为执行步骤211之前的上下文。在步骤203中,当第三工作单元解锁失败或者受理失败时,修改当前上下文,抛出异常。分布式事务处理装置返回依次调用之前所有执行过的工作单元的撤销过程,直到当第一个工作单元的撤销过程执行完毕,该分布式事务处理过程结束。图3是本发明实施例三的分布式事务处理装置的结构示意图。如图3所示,该装置包括至少两个串行的工作单元,具体地,在图3中以工作单元31、工作单元32、工作单元 33……工作单元3η表示。该装置中工作单元的具体数量不受限制。其中,工作单元31为最初工作单元,工作单元3η为最终工作单元,η可以为任意整数。其中,至少两个串行的工作单元中的最初工作单元31在初始时启动,其它工作单元在收到上一个工作单元发送的当前上下文消息时启动。每个工作单元在启动后尝试执行对应的事务处理操作,判断对应的事务处理操作是否成功。如果是,当前工作单元执行成功确认操作,将当前上下文修改为执行所述对应的事务处理操作之后的上下文,向下一个工作单元发送当前上下文消息。否则,当前工作单元撤销所述对应的事务处理操作,将当前上下文修改为执行所述对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息。并且,每个工作单元在收到下一个工作单元的当前上下文消息后,撤销本工作单元对应的事务处理操作,将当前上下文修改为本工作单元对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息。在上述技术方案的基础上,每个工作单元还在将当前上下文修改为执行所述对应的事务处理操作之后的上下文之后,判断当前工作单元是否是最终工作单元3η。如果是,确认分布式事务处理过程成功;否则,向下一个工作单元发送成功上下文消息。在上述技术方案的基础上,每个工作单元还在将当前上下文修改为执行所述对应的事务处理操作之前的上下文之后,判断当前工作单元是否是最初工作单元31。如果是,确认分布式事务处理过程失败;否则,向上一个工作单元发送当前上下文消息。在上述技术方案的基础上,当前工作单元具体用于记录对应的事务处理操作的日志,以执行成功确认操作。或,当前工作单元具体用于释放锁,以执行成功确认操作。或,当前工作单元具体用于发送通知消息,以执行成功确认操作。在上述技术方案的基础上,上述至少两个串行的工作单元中,相邻的两个所述工作单元通过TCP连接。当前工作单元通过TCP连接向下一个工作单元发送当前上下文消息, 通过所述TCP连接向上一个工作单元发送当前上下文消息。在上述技术方案的基础上,上述当前上下文中包括分布式事务处理过程的元数据、控制信息和当前缓存数据。由上述具体实施方式
可见,本发明通过每个工作单元实现事务处理的一个环节, 通过在每个工作单元确认操作是否成功,如果成功则通过上下文触发下一个工作单元,如果失败则通过上下文通知上一个工作单元撤销操作,并且当收到来自下一个工作单元的上下文时,撤销自身工作单元的操作并通知上一个工作单元撤销操作,从而在某个环节处理失败时,能够实现回滚机制,因此保证了分布式事务处理过程中的数据一致性。并且,利用可靠的TCP连接来传输上下文,从而通过保障上下文传输的准确性,保证了分布式事务处理过程中的数据一致性。本发明提供的分布式事物处理方法适用于互联网计算机分布式事物数据处理过程,可以保证处理过程中的数据一致性。该方法易于使用,执行速度快,中间状态可跟踪、顺序灵活,特别是在多个工作单元协同处理的场景中,各个工作单元逻辑实现简单,层次结构清晰。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种分布式事务处理方法,其特征在于,包括 启动最初工作单元作为当前工作单元;当前工作单元尝试执行对应的事务处理操作; 当前工作单元判断对应的事务处理操作是否成功;如果是,当前工作单元执行成功确认操作,将当前上下文修改为执行所述对应的事务处理操作之后的上下文,向下一个工作单元发送当前上下文消息,以启动下一个工作单元作为当前工作单元,返回执行当前工作单元尝试执行对应的事务处理操作的步骤;否则,当前工作单元撤销所述对应的事务处理操作,将当前上下文修改为执行所述对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息,以使上一个工作单元撤销该工作单元对应的事务处理操作,将当前上下文修改为执行上一个工作单元对应的事务处理操作之前的上下文,向上一个工作单元的上一个工作单元发送当前上下文消肩、ο
2.根据权利要求1所述的分布式事务处理方法,其特征在于,所述将当前上下文修改为执行所述对应的事务处理操作之后的上下文之后,该方法还包括判断当前工作单元是否是最终工作单元;如果是,确认分布式事务处理过程成功;否则,执行所述向下一个工作单元发送当前上下文消息的步骤;所述将当前上下文修改为执行所述对应的事务处理操作之前的上下文,该方法还包括判断当前工作单元是否是最初工作单元;如果是,确认分布式事务处理过程失败;否则,执行所述向上一个工作单元发送当前上下文消息的步骤。
3.根据权利要求1或2所述的分布式事务处理方法,其特征在于,所述当前工作单元执行成功确认操作包括当前工作单元记录对应的事务处理操作的日志; 或,当前工作单元释放锁; 或,当前工作单元发送通知消息。
4.根据权利要求1或2所述的分布式事务处理方法,其特征在于,所述向下一个工作单元发送当前上下文消息包括当前工作单元通过传输控制协议 TCP连接向下一个工作单元发送当前上下文消息;所述向上一个工作单元发送当前上下文消息包括当前工作单元通过TCP连接向上一个工作单元发送当前上下文消息。
5.根据权利要求1或2所述的分布式事务处理方法,其特征在于,所述当前上下文包括所述分布式事务处理过程的元数据、控制信息和当前缓存数据。
6.一种分布式事务处理装置,其特征在于,包括至少两个串行的工作单元;其中,最初工作单元用于初始启动;其它工作单元用于在收到上一个工作单元发送的当前上下文消息启动;每个所述工作单元用于在启动后尝试执行对应的事务处理操作,判断对应的事务处理操作是否成功;如果是,当前工作单元执行成功确认操作,将当前上下文修改为执行所述对应的事务处理操作之后的上下文,向下一个工作单元发送当前上下文消息;否则,当前工作单元撤销所述对应的事务处理操作,将当前上下文修改为执行所述对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息;每个所述工作单元用于在收到下一个工作单元的当前上下文消息后,撤销本工作单元对应的事务处理操作,将当前上下文修改为本工作单元对应的事务处理操作之前的上下文,向上一个工作单元发送当前上下文消息。
7.根据权利要求6所述的分布式事务处理装置,其特征在于,每个所述工作单元还用于在将当前上下文修改为执行所述对应的事务处理操作之后的上下文之后,判断当前工作单元是否是最终工作单元;如果是,确认分布式事务处理过程成功;否则,向下一个工作单元发送成功上下文消息;每个所述工作单元还用于将当前上下文修改为执行所述对应的事务处理操作之前的上下文之后,判断当前工作单元是否是最初工作单元;如果是,确认分布式事务处理过程失败;否则,向上一个工作单元发送当前上下文消息。
8.根据权利要求6或7所述的分布式事务处理装置,其特征在于,所述当前工作单元具体用于记录对应的事务处理操作的日志,以执行成功确认操作; 或,所述当前工作单元具体用于释放锁,以执行成功确认操作; 或,所述当前工作单元具体用于发送通知消息,以执行成功确认操作。
9.根据权利要求6或7所述的分布式事务处理装置,其特征在于,所述至少两个串行的工作单元中,相邻的两个所述工作单元通过传输控制协议TCP连接;所述当前工作单元通过所述TCP连接向下一个工作单元发送当前上下文消息; 所述当前工作单元通过所述TCP连接向上一个工作单元发送当前上下文消息。
10.根据权利要求6或7所述的分布式事务处理装置,其特征在于,所述当前上下文包括所述分布式事务处理过程的元数据、控制信息和当前缓存数据。
全文摘要
本发明公开了一种分布式事务处理方法,包括当前工作单元尝试执行对应的事务处理操作;当前工作单元判断对应的事务处理操作是否成功;如果是,当前工作单元执行成功确认操作,向下一个工作单元发送当前上下文消息,以启动下一个工作单元作为当前工作单元;否则,当前工作单元撤销对应的事务处理操作,向上一个工作单元发送当前上下文消息,以使上一个工作单元撤销该工作单元对应的事务处理操作,向上一个工作单元的上一个工作单元发送当前上下文消息。本发明公开了一种分布式事务处理装置。采用本发明的分布式事务处理方法和装置,能够保证分布式事务处理过程中的数据一致性。
文档编号H04L29/08GK102340537SQ201110196559
公开日2012年2月1日 申请日期2011年7月14日 优先权日2011年6月30日
发明者李春雷, 范建鹏 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1