CN108491252B - 分布式事务处理方法及分布式系统 - Google Patents

分布式事务处理方法及分布式系统 Download PDF

Info

Publication number
CN108491252B
CN108491252B CN201810204077.9A CN201810204077A CN108491252B CN 108491252 B CN108491252 B CN 108491252B CN 201810204077 A CN201810204077 A CN 201810204077A CN 108491252 B CN108491252 B CN 108491252B
Authority
CN
China
Prior art keywords
transaction
execution
subsystem
data
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201810204077.9A
Other languages
English (en)
Other versions
CN108491252A (zh
Inventor
纪少聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wanhui Investment Management Co ltd
Original Assignee
Wanhui Investment Management Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wanhui Investment Management Co ltd filed Critical Wanhui Investment Management Co ltd
Priority to CN201810204077.9A priority Critical patent/CN108491252B/zh
Publication of CN108491252A publication Critical patent/CN108491252A/zh
Application granted granted Critical
Publication of CN108491252B publication Critical patent/CN108491252B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

本发明实施例提供一种分布式事务处理方法及分布式系统。所述分布式事务处理方法包括:协调子系统向管理子系统发送事务标识申请,以获取事务标识,并向执行子系统发送带有所述目标事务标识的执行请求;所述执行子系统接收到所述执行请求后,执行对所述执行请求对应的数据进行修改操作,对修改的数据进行缓存得到缓存数据;所述执行子系统将执行结果返回给所述协调子系统;所述协调子系统根据每个执行子系统执行结果向所述管理子系统发送所述目标事务标识对应的事务状态的更改请求,以将所述事务状态更改为结果状态;以及所述执行子系统从所述管理子系统中获取所述事务状态,根据所述事务状态对该事务标识对应的所述缓存数据进行提交或回滚操作。

Description

分布式事务处理方法及分布式系统
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种分布式事务处理方法及分布式系统。
背景技术
为了缓解单机系统的性能压力与减少系统大小,一种有效的方式是将系统拆分成多个子系统,由这些子系统组合成的大系统,是分布式系统的一种形式。分布式事务的目的是,在大系统的一个业务操作中多个子系统的执行结果能成功或者失败。分布式事务最基本的解决方案是“二阶段提交协议”。“二阶段提交协议”有两个阶段:“准备”阶段与“提交/回滚”阶段。其中“提交/回滚”阶段是在整个事务结束时执行的,其缺点是如果系统在这个环节因为宕机或重启等原因导致系统强制关闭,则无法达到该方案的最终效果,而且未执行“提交/回滚”阶段,被修改的数据是未进行确认的,可能被其他业务操作使用,如果这些数据是错误的,却未被“回滚”,则会导致系统的错误。造成上述问题的原因是,“提交/回滚”阶段是主动的。这种主动的方式并不能应对因为宕机或重启等原因导致系统强制关闭所造成的影响。
发明内容
有鉴于此,本发明实施例的目的在于提供一种分布式事务处理方法及分布式系统。
本发明实施例提供的一种分布式事务处理方法,应用于分布式系统,所述分布式系统包括相互通信的协调子系统、管理子系统及执行子系统;所述分布式事务处理方法包括:
所述协调子系统向所述管理子系统发送事务标识申请,以获取目标事务标识,并向所述执行子系统发送带有所述目标事务标识的执行请求;
所述执行子系统接收到所述执行请求后,执行所述执行请求对应的事务;
所述执行子系统在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到缓存数据;
所述执行子系统将执行结果返回给所述协调子系统;
所述协调子系统根据每个执行子系统执行结果向所述管理子系统发送所述目标事务标识对应的事务状态的更改请求,以将所述事务状态更改为结果状态,所述结果状态包括成功和失败;以及
所述执行子系统从所述管理子系统中获取所述事务状态,根据所述事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。
本发明实施例还提供一种分布式系统,所述分布式系统包括相互通信的协调子系统、管理子系统及执行子系统;
所述协调子系统用于向所述管理子系统发送事务标识申请,以获取目标事务标识,并向所述执行子系统发送带有所述目标事务标识的执行请求;
所述执行子系统用于接收到所述执行请求后,执行所述执行请求对应的事务;
所述执行子系统还用于在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到缓存数据;
所述执行子系统还用于将执行结果返回给所述协调子系统;
所述协调子系统还用于根据每个执行子系统执行结果得到统计结果,向所述管理子系统提交统计结果;
所述管理子系统用于根据所述统计结果更改所述事务状态为结果状态,所述结果状态包括成功和失败;以及
所述执行子系统用于从所述管理子系统中获取所述事务状态,根据所述事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。
与现有技术相比,本发明实施例的分布式事务处理方法及分布式系统,通过在所述分布式系统中增加一个管理子系统,所述管理子系统对处理事务过程中的事务状态进行保存,所述执行子系统对操作的数据进行缓存。因此执行子系统对操作的数据进行了保存,所述管理子系统也对事务状态进行了保存,因此在最后阶段所述执行子系统通过从所述管理子系统中获取事务状态,根据事务状态对缓存数据进行提交或回滚操作,从而避免因为宕机或重启等原因导致系统强制关闭所造成的影响。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明较佳实施例提供的分布式系统进行交互的示意图。
图2为本发明较佳实施例提供的分布式系统的执行子系统的方框示意图。
图3为本发明较佳实施例提供的分布式系统的执行子系统中各个模块的交互的示意图。
图4为本发明较佳实施例提供的分布式事务处理方法的流程图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是本发明较佳实施例提供的分布式系统进行交互的示意图。所述分布式系统包括相互通信的协调子系统100、管理子系统200及执行子系统300。本实施例中,所述分布式系统可以包括多个执行子系统300(图中仅示出一个)。
本实施例中,所述协调子系统100是事务的发起者,统一向所有当前事务涉及的一个或多个执行子系统300发起执行请求的系统,以及向管理子系统200发送事务的结果。当事务发起时,所述协调子系统100可通过执行以下内容:向管理子系统200申请事务标识;向执行子系统300发送执行请求;再管理子系统200发送执行结果。
本实施例中,所述管理子系统200负责为事务生成唯一的标识,保存事务标识,和事务标识对应的事务状态和创建时间。具体地,所述管理子系统200具有修改事务状态的功能,对事务状态的管理具有超时检查机制,该机制是被动式触发的。所述管理子系统200所管理的事务状态是判定事务是否执行成功的标准。也可以理解为,所述管理子系统200负责维护与判定分布式事务最终结果的子系统。所述管理子系统200可以用于根据所述协调子系统100的申请生成事务标识;根据事务处理状态更改事务状态以及根据执行子系统300的请求查询事务状态。
本实施例中,所述执行子系统300保存有执行具体业务逻辑的子系统,并根据接收到的任务对事务进行处理。
在本申请实施例中的一种实施方式中,所述执行子系统300可包括以下模块以实现执行子系统300的具体业务逻辑。如图2所示,所述执行子系统300可包括标记模块310、检查模块320、锁定模块330及验证模块340。
所述标记模块310用于对所述执行子系统300正在操作处理的事务对应的数据后需要进行缓存的数据进行标记。本实施例中,所述标记模块310可以使用生成与正在操作处理的事务相关的唯一标识符。在一个实例中,所述唯一标识符与该正在操作处理的事务的事务标识相同。所述标记模块310可以利用切面、过滤器等技术手段,实现一个拦截层,对数据的修改操作进行拦截,生成缓存。本实施例中,这些缓存必须是持久化的,可以保存到数据库中,其目的是不会因分布式系统关闭而丢失。本实施例中,所述唯一标识符用于唯一标识一个事务,以区别其它事务。
所述检查模块320用于检查当前需要操作的数据是否具有未确认的缓存。在一种实施方式中,所述检查模块320可以是在业务逻辑执行前增加一个拦截层,其用于对业务逻辑进行拦截,检查该业务逻辑所使用的数据是否具有未确认的缓存。在另一种实施方式中,所述检查模块320在执行这个标记模块310节点之前,检查当前标记的数据是否具有缓存,即是否被其它业务逻辑标记过。
所述锁定模块330用于对正在执行的事务或操作的数据进行加锁。具体地,可以以能够唯一标识数据的身份标识码为关键词进行加锁,用于防止并发操作。
所述验证模块340的功能是使用普通的同步请求,向管理子系统查询事务标识所对应的状态,然后根据这个状态将事务标识标记的缓存数据进行提交或回滚操作。进一步地,在执行验证模块340之前,还可以使用锁定模块330对正在操作的事务进行加锁,防止并发情况下重复处理。
下面在一整个流程中描述分布式系统的协调子系统100、管理子系统200及执行子系统300工作流程。
所述协调子系统100用于向所述管理子系统200发送事务标识申请,以获取目标事务标识,并向所述执行子系统300发送带有所述目标事务标识的执行请求。所述执行子系统300用于接收到所述执行请求后,执行所述执行请求对应的事务。所述执行子系统300还用于在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到缓存数据。所述执行子系统300还用于将执行结果返回给所述协调子系统100。所述协调子系统100还用于根据每个执行子系统300执行结果得到统计结果,向所述管理子系统200提交统计结果。所述管理子系统200用于根据所述统计结果更改所述事务状态为结果状态,所述结果状态包括成功和失败。所述执行子系统300用于从所述管理子系统200中获取所述事务状态,根据所述事务状态的当前值对该事务标识对应的所述缓存数据进行提交或回滚操作。
本实施例中,所述执行子系统300还用于对修改的数据使用与所述目标事务标识对应的唯一标识符进行标记,并将标记的数据进行缓存得到缓存数据。
本实施例中,所述分布式系统可以分两个阶段实现业务逻辑的实施。两个阶段分别为准备流程和确认流程。所述准备流程为事务的生成与执行;所述确认流程为执行结果的确认。其中,如图3所示,所述准备流程可以分别顺序执行检查模块320、锁定模块330及标记模块310。所述确认流程可分别执行检查模块320、锁定模块330及验证模块340。
本发明实施例的分布式系统,通过在所述分布式系统中增加一个管理子系统,所述管理子系统对处理事务过程中的事务状态进行保存,所述执行子系统对操作的数据进行缓存。因此执行子系统对操作的数据进行了保存,所述管理子系统也对事务状态进行了保存,因此在最后阶段所述执行子系统通过从所述管理子系统中获取事务状态,根据事务状态对缓存数据进行提交或回滚操作,从而避免因为宕机或重启等原因导致系统强制关闭所造成的影响。
请参阅图4,是本发明较佳实施例提供的应用于图1所示的分布式系统的分布式事务处理方法的流程图。下面将对图4所示的具体流程进行详细阐述。
步骤S401,协调子系统向管理子系统发送事务标识申请,以获取目标事务标识,并向执行子系统发送带有所述目标事务标识的执行请求。
本实施例中,所述管理子系统在生成所述目标事务标识时,对所述目标事务标识对应的事务状态进行初始化操作。例如,可以将所述事务状态初始化为“执行中”。
本实施例中,所述目标事务标识可以唯一标识待处理的事务。
步骤S402,所述执行子系统接收到所述执行请求后,执行所述执行请求对应的事务。
本实施例中,所述步骤S402之前,所述方法还包括:所述执行请求对应的需要操作的数据是否具有带有所述唯一标识符的缓存数据;若所述执行请求对应的需要操作的数据不具有带有所述唯一标识符的缓存数据,则执行步骤执行所述执行请求对应的事务。
进一步地,若所述执行请求对应的需要操作的数据具有所述唯一标识符的缓存数据,则需要对所述缓存数据进行提交或者回滚操作。所述执行子系统对所述缓存数据执行了提交或者回滚操作后,再执行所述执行请求对应的事务。
步骤S403,所述执行子系统在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到缓存数据。
本实施例中,所述步骤S403可包括对修改的数据使用与所述目标事务标识对应的唯一标识符进行标记;将标记的数据进行缓存得到缓存数据。
在一个实例中,所述执行子系统可以将标记的数据存储至指定数据库中。
本实施例中,步骤S403之前,所述方法还包括:对修改的数据使用锁定码进行锁定。
步骤S404,所述执行子系统将执行结果返回给所述协调子系统。
步骤S405,所述协调子系统根据每个执行子系统执行结果向所述管理子系统发送所述目标事务标识对应的事务状态的更改请求,以将所述事务状态更改为结果状态。
本实施例中,所述结果状态包括成功和失败。
本实施例中,所述分布式系统包括多个执行子系统。只有当每个执行子系统的执行结果都为成功时,所述事务才能算执行成功。可以理解的是,当所有的执行子系统执行的任务均成功时,所述管理子系统将所述事务状态更改为成功。
步骤S406,所述执行子系统从所述管理子系统中获取所述事务状态,根据所述事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。
其中,当所述事务状态为成功时,所述执行子系统事务状态对应的所述缓存数据进行提交操作。当所述事务状态为失败时,所述执行子系统事务状态对应的所述缓存数据进行回滚操作。
本实施例中,所述方法还包括:若所述执行请求对应的需要操作的数据具有带有所述唯一标识符的缓存数据,判断所述唯一标识符的缓存数据对应的事务状态是否为结果状态;若所述事务状态为结果状态,根据该事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。通过上述操作,可以避免已经完成的数据保存在缓存中不被确认,影响后来的事务的执行。
本实施例中,所述步骤S403之前,包括:判断需要被缓存的数据是否被目标事务标识对应的唯一标识符标记并缓存;当该数据不具有缓存时,再执行步骤执行子系统在判断有修改数据动作时,对修改的数据进行缓存得到缓存数据。通过在步骤S403之前进行判断数据是否被标记缓存,可以避免重复缓存,导致前面更改的数据被覆盖或数据更改的错乱,提高数据更改的准确率。
本实施例中,所述方法还包括:所述管理子系统根据所述事务标识申请生成所述目标事务标识时,初始化该目标事务标识对应的事务状态为执行中及保存事务创建时间;所述管理子系统检测所述目标事务标识对应的事务状态为执行中的时长是否超过预设时长,若该事务状态为执行中的时长超过预设时长,将该事务状态修改为失败。所述事务状态为执行中的时长较长时,可能是所述分布式系统宕机或重启等原因,避免因为分布式系统的重启导致该分布式系统一直处于前一事务的执行中,影响后面的事务的执行。
本实施例中,所步骤S406之前,所述方法还包括:对所述缓存数据进行提交或回滚操作对应的事务使用锁定码进行锁定。
通过在步骤S406之前进行锁定操作,可以避免两个不同的业务逻辑同时执行步骤S406,并发操作而导致数据错误。
进一步地,所述执行子系统按照预设时间周期检测管理子系统中的事务状态为结果状态的事务;若所述管理子系统中存在有事务状态为结果状态,根据该事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。通过上述步骤可以有效地减少执行子系统执行业务逻辑时出现阻塞逻辑的概率。
本发明实施例的分布式事务处理方法,通过在所述分布式系统中增加一个管理子系统,所述管理子系统对处理事务过程中的事务状态进行保存,所述执行子系统对操作的数据进行缓存。因此执行子系统对操作的数据进行了保存,所述管理子系统也对事务状态进行了保存,因此在最后阶段所述执行子系统通过从所述管理子系统中获取事务状态,根据事务状态对缓存数据进行提交或回滚操作,从而避免因为宕机或重启等原因导致系统强制关闭所造成的影响。
下面从另一角度描述所述分布式事务处理方法,所述分布式事务处理方法可包括两个流程,准备流程和确认流程。所述准备流程为事务的生成与执行;所述确认流程为执行结果的确认。
所述准备流程可包括以下步骤。
步骤P01:事务开始时,所述协调子系统向所述管理子系统发送申请事务标识的请求。
步骤P02:所述管理子系统收到申请事务标识的请求后,生成目标事务标识,保存事务标识、事务状态和创建日期,并返回该事务标识。
在一种实施方式中,初始化的事务状态为“执行中”。
步骤P03:所述协调子系统获得所述管理子系统返回的事务标识后,逐个向参与当前事务的所述执行子系统发送带有该事务标识参数的执行请求。
步骤P04:所述执行子系统执行业务逻辑,先进行确认流程,消除标记后再继续执行所述业务逻辑。
本实施例中,若该业务逻辑需要修改数据,则进行需要对需要修改的数据进行标记。
步骤P05:所述执行子系统执行业务逻辑后返回执行结果给所述协调子系统。
当所有所述执行子系统都返回“执行成功”,则所述协调子系统向所述管理子系统发出带有当前事务标识参数的修改事务状态为“成功”的请求。若其中任意所述执行子系统返回“执行失败”,则所述协调子系统向所述管理子系统请求修改的事务状态为“失败”。
步骤P06:所述管理子系统收到所述协调子系统带有事务标识参数的修改事务状态请求后,以事务标识为关键词加锁。
通过步骤P06可以防止并发修改,然后对事务状态进行修改,最后返回修改结果。本实施例中,只有该事务状态为初始状态:“执行中”才可修改,若事务状态已经事最终状态:“成功”或“失败”,则返回修改失败。
步骤P07:所述协调子系统获得所述管理子系统修改事务状态结果后,可以做进一步的业务操作。
所述确认流程可包括以下步骤。
步骤C01:所述执行子系统执行任何可能会使用到被标记数据的业务逻辑。
步骤C02:所述执行子系统进入检查环节,判断所使用的数据是否具有标记。
若判断结果为“是”,则所述执行子系统开始进行锁定环节和验证环节,只有验证环节结束才会继续执行之后的业务逻辑。验证环节是向所述管理子系统发送带有事务标识参数的查询事务状态的请求。若检查环节判断结果为“否”,则表示所使用数据没有标记,则执行步骤C07。
步骤C03:所述管理子系统收到查询事务状态的请求后,查询该事务标识当前保存的事务状态。
若事务状态为“执行中”的时长是否超时。若超时,则将事务状态修改为“失败”并返回,修改时需要以事务标识为关键词加锁防止并发修改。若未超时,则不做修改。所述执行子系统获得的事务状态为“执行中”,则不断请求查询接口直到或得的事务状态为结果状态。
步骤C04:所述执行子系统最终获得事务状态的最终状态。若事务状态为“成功”则进入步骤C05,否则进入步骤C06。
步骤C05:所述执行子系统对缓存进行提交操作:将缓存实施到原始数据中,清除原始数据的标记和缓存。
步骤C06:所述执行子系统对缓存进行回滚操作:清除原始数据的标记和缓存。
步骤C07:所述执行子系统继续执行其它业务逻辑。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种分布式事务处理方法,其特征在于,应用于分布式系统,所述分布式系统包括相互通信的协调子系统、管理子系统及执行子系统;所述分布式事务处理方法包括:
所述协调子系统向所述管理子系统发送事务标识申请,以获取目标事务标识,并向所述执行子系统发送带有所述目标事务标识的执行请求;
判断所述执行请求对应的需要操作的数据是否具有带有唯一标识符的缓存数据;若所述执行请求对应的需要操作的数据不具有带有所述唯一标识符的缓存数据,则执行步骤执行所述执行请求对应的事务;若所述执行请求对应的需要操作的数据具有带有所述唯一标识符的缓存数据,判断所述唯一标识符的缓存数据对应的事务状态是否为结果状态;若所述事务状态为结果状态,根据该事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作;
所述执行子系统接收到所述执行请求后,执行所述执行请求对应的事务;
所述执行子系统在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到所述缓存数据,包括:对所述修改的数据使用与所述目标事务标识对应的唯一标识符进行标记,将标记的数据进行缓存得到所述缓存数据;
所述执行子系统将执行结果返回给所述协调子系统;
所述协调子系统根据每个执行子系统执行结果向所述管理子系统发送所述目标事务标识对应的事务状态的更改请求,以将所述事务状态更改为所述结果状态,所述结果状态包括成功和失败;
所述执行子系统从所述管理子系统中获取所述事务状态,根据所述事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。
2.如权利要求1所述的分布式事务处理方法,其特征在于,所述方法还包括:
所述执行子系统按照预设时间周期检测管理子系统中的事务状态为结果状态的事务;
若所述管理子系统中存在有事务状态为结果状态,根据该事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。
3.如权利要求1所述的分布式事务处理方法,其特征在于,所述执行子系统在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到缓存数据的步骤之前,包括:
判断需要被缓存的数据是否被目标事务标识对应的唯一标识符标记并缓存;
当该数据不具有缓存时,再执行步骤执行子系统在判断有修改数据动作时,对修改的数据进行缓存得到缓存数据。
4.如权利要求1所述的分布式事务处理方法,其特征在于,所述方法还包括:
所述管理子系统根据所述事务标识申请生成所述目标事务标识时,初始化该目标事务标识对应的事务状态为执行中及保存事务创建时间;
所述管理子系统检测所述目标事务标识对应的事务状态为执行中的时长是否超过预设时长,若该事务状态为执行中的时长超过预设时长,将该事务状态修改为失败。
5.如权利要求1所述的分布式事务处理方法,其特征在于,在所述执行子系统在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到缓存数据之前,所述方法还包括:
对修改的数据使用锁定码进行锁定。
6.如权利要求1所述的分布式事务处理方法,其特征在于,所述执行子系统从所述管理子系统中获取所述事务状态,根据所述事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作的步骤之前,所述方法还包括:
对所述缓存数据进行提交或回滚操作对应的事务使用锁定码进行锁定。
7.一种分布式系统,其特征在于,所述分布式系统包括相互通信的协调子系统、管理子系统及执行子系统;
所述协调子系统用于向所述管理子系统发送事务标识申请,以获取目标事务标识,并向所述执行子系统发送带有所述目标事务标识的执行请求;
所述执行子系统用于判断所述执行请求对应的需要操作的数据是否具有带有唯一标识符的缓存数据;若所述执行请求对应的需要操作的数据不具有带有所述唯一标识符的缓存数据,则执行步骤执行所述执行请求对应的事务;若所述执行请求对应的需要操作的数据具有带有所述唯一标识符的缓存数据,判断所述唯一标识符的缓存数据对应的事务状态是否为结果状态;若所述事务状态为结果状态,根据该事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作;
所述执行子系统还用于接收到所述执行请求后,执行所述执行请求对应的事务;
所述执行子系统还用于在对所述执行请求对应的数据进行修改时,对修改的数据进行缓存得到所述缓存数据,包括:对所述修改的数据使用与所述目标事务标识对应的唯一标识符进行标记,将标记的数据进行缓存得到所述缓存数据;
所述执行子系统还用于将执行结果返回给所述协调子系统;
所述协调子系统还用于根据每个执行子系统执行结果向所述管理子系统发送所述目标事务标识对应的事务状态的更改请求,以将所述事务状态更改为所述结果状态,所述结果状态包括成功和失败;以及
所述执行子系统用于从所述管理子系统中获取所述事务状态,根据所述事务状态的当前值对该事务状态对应的所述缓存数据进行提交或回滚操作。
CN201810204077.9A 2018-03-13 2018-03-13 分布式事务处理方法及分布式系统 Expired - Fee Related CN108491252B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810204077.9A CN108491252B (zh) 2018-03-13 2018-03-13 分布式事务处理方法及分布式系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810204077.9A CN108491252B (zh) 2018-03-13 2018-03-13 分布式事务处理方法及分布式系统

Publications (2)

Publication Number Publication Date
CN108491252A CN108491252A (zh) 2018-09-04
CN108491252B true CN108491252B (zh) 2022-03-22

Family

ID=63338797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810204077.9A Expired - Fee Related CN108491252B (zh) 2018-03-13 2018-03-13 分布式事务处理方法及分布式系统

Country Status (1)

Country Link
CN (1) CN108491252B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669809A (zh) * 2018-09-11 2019-04-23 深圳平安财富宝投资咨询有限公司 分布式事务处理方法、分布式系统及计算机可读存储介质
CN109783203B (zh) * 2018-12-28 2023-05-09 深圳竹云科技股份有限公司 一种基于过程任务事务处理机制的实现方法
CN110825606B (zh) * 2019-11-08 2023-04-07 北京金山云网络技术有限公司 数据操作方法、装置和中台系统
CN111143040A (zh) * 2019-12-30 2020-05-12 北京三快在线科技有限公司 事务处理方法、装置、系统及存储介质
CN111580938B (zh) * 2020-03-27 2023-04-14 浪潮通用软件有限公司 一种工作单元的事务处理方法、装置、设备及介质
CN111782666B (zh) * 2020-06-19 2024-04-05 京东科技控股股份有限公司 一种缓存服务系统
CN114356888A (zh) * 2021-12-30 2022-04-15 中国民航信息网络股份有限公司 事务处理方法及装置、存储介质及电子设备
CN115756768B (zh) * 2023-01-10 2023-04-28 深圳复临科技有限公司 基于saga的分布式事务处理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046815A (zh) * 2007-03-14 2007-10-03 华为技术有限公司 事务协调器、资源使用端、服务端及分布式事务处理方法
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN103559245A (zh) * 2013-10-29 2014-02-05 华为技术有限公司 一种分布式事务提交故障的处理方法、装置和系统
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN105893395A (zh) * 2015-01-26 2016-08-24 阿里巴巴集团控股有限公司 分布式事务的消息回查方法及其系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US9165025B2 (en) * 2009-12-11 2015-10-20 International Business Machines Corporation Transaction recovery in a transaction processing computer system employing multiple transaction managers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046815A (zh) * 2007-03-14 2007-10-03 华为技术有限公司 事务协调器、资源使用端、服务端及分布式事务处理方法
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN103559245A (zh) * 2013-10-29 2014-02-05 华为技术有限公司 一种分布式事务提交故障的处理方法、装置和系统
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN105893395A (zh) * 2015-01-26 2016-08-24 阿里巴巴集团控股有限公司 分布式事务的消息回查方法及其系统

Also Published As

Publication number Publication date
CN108491252A (zh) 2018-09-04

Similar Documents

Publication Publication Date Title
CN108491252B (zh) 分布式事务处理方法及分布式系统
CN106462594B (zh) 一种大规模并行处理数据库的系统和方法
US6662196B2 (en) Collision avoidance in bidirectional database replication
CN106325978B (zh) 分布式事务的处理方法及装置
US20150278324A1 (en) Quarantine and repair of replicas in a quorum-based data storage system
US20070143299A1 (en) Commitment of transactions in a distributed system
CN104793988A (zh) 跨数据库分布式事务的实现方法和装置
CN110502319B (zh) 分布式事务的处理方法、装置、电子设备及存储介质
CN101350022B (zh) 基于数据库逻辑锁的变更处理方法
CN111522631A (zh) 分布式事务处理方法、装置、服务器及介质
CN112052264B (zh) 业务数据查询方法、装置、电子设备及可读存储介质
EP3552167B1 (en) Utilizing nonce table to resolve concurrent blockchain transaction failure
US11782793B2 (en) Blockchain-based data snapshot method and apparatus, and computer-readable storage medium
CN112559558A (zh) 一种流水号生成方法和装置、计算设备和存储介质
US20060149791A1 (en) Database-driven distributed recovery
US11113251B2 (en) Transaction manager
CN108762895B (zh) 处理分布式事务的方法及装置
CN110535939A (zh) 一种服务发现与抢占方法、装置、计算机设备及存储介质
CN111143041B (zh) 一种数据一致性方法、分布式协调器及中央协调器
JPH08504530A (ja) エラー発生時にデータベースの関係復旧を行うためのシステム
US20170242726A1 (en) Batched commit in distributed transactions
CN114356888A (zh) 事务处理方法及装置、存储介质及电子设备
CN114265900A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN111127088B (zh) 实现最终一致性的方法、装置、计算机设备及存储介质
CN112685142A (zh) 分布式数据处理系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220322

CF01 Termination of patent right due to non-payment of annual fee