嵌入式分布式事务协调器基于数据库表的事务恢复方法与流程

文档序号:29712305发布日期:2022-04-16 17:58阅读:140来源:国知局
嵌入式分布式事务协调器基于数据库表的事务恢复方法与流程

1.本技术实施例涉及信息技术领域,尤其涉及一种嵌入式分布式事务协调器基于数据库表的事务恢复方法。


背景技术:

2.在处理分布式事务的过程中,在分布式集群(也可以称为分布式系统)中包括多个节点,多个节点配合完成一个业务的处理,每一节点中处理业务中的每一事务。可知,一个业务包括多个服务,每一服务包括多个事务,事务在节点中进行处理。在业务的各事务被执行的过程中,节点会出现宕机等问题,进而导致事务无法被正常执行,需要进行事务一致性的事务恢复处理。
3.现有技术中,部署一个分布式事务协调器,分布式事务协调器通过注册中心平台检测是否出现事务发生了中断,分布式事务协调器通过注册中心平台若确定事务发生了中断,则分布式事务协调器通过注册中心平台向分布式集群中的其他节点发送恢复请求;接收到恢复请求的节点恢复事务上下文,进而完成事务一致性的事务恢复处理。
4.在实现本技术过程中,发明人发现现有技术中至少存在如下问题:分布式事务协调器需要注册中心平台感知节点的变化,导致分布式事务协调器依赖于注册中心平台,若注册中心平台出现问题,则分布式事务协调器无法进行事务一致性的事务恢复处理。


技术实现要素:

5.本技术实施例提供一种嵌入式分布式事务协调器基于数据库表的事务恢复方法,用以解决注册中心平台出现问题,则分布式事务协调器无法进行事务一致性的事务恢复处理的问题。
6.第一方面,本技术实施例提供一种嵌入式分布式事务协调器基于数据库表的事务恢复方法,所述方法包括:
7.扫描预设的事务生命周期表,并根据所述事务生命周期表,确定当前事务对应的最大执行时间,其中,所述事务生命周期表中包括每一事务对应的业务的最大执行时间;
8.根据当前事务对应的业务的最大执行时间,确定检测到中断事件,所述中断事件表征事务发生了中断;
9.扫描预设的事务现场数据表,并根据所述事务现场数据表,其中,所述事务现场数据表中包括每一业务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况,调取所述当前事务对应的业务下的事务的执行信息,并对所述中断事件进行恢复处理。
10.进一步地,根据当前事务对应的业务的最大执行时间,确定检测到中断事件,包括:
11.若确定扫描时间大于第一预设时间,则确定检测到中断事件,并确定与当前事务对应的业务下的事务为中断的事务;其中,所述第一预设时间为事务开始时间与预设的事
务中断过期时间之和,所述事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和,所述事务中断过期时间为最大执行时间;
12.更新所述事务生命周期表中的当前事务对应的业务的最大执行时间,为第二预设时间,所述第二预设时间为当前时间与预设的事务恢复超时时间之和。
13.进一步地,所述方法,还包括:
14.若未在所述事务恢复超时时间之内调取所述当前事务对应的业务下的事务的执行信息,则再次执行扫描预设的事务生命周期表的步骤。
15.进一步地,在扫描预设的事务现场数据表之前,还包括:
16.更新所述事务生命周期表中的当前事务对应的业务的最大执行时间,为第三预设时间;其中,所述第三预设时间为当前时间与预设的事务中断过期时间之和,所述事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和。
17.进一步地,在扫描预设的事务生命周期表之前,还包括:
18.基于抢占机制,确定扫描预设的事务生命周期表。
19.进一步地,根据所述事务现场数据表,调取所述当前事务对应的业务下的事务的执行信息,并对所述中断事件进行恢复处理,包括:
20.根据所述事务现场数据表,调取所述当前事务对应的业务下的事务的执行信息;
21.若根据所调取的执行信息确定出发生中断的事务的节点,则接管所述中断的事务对应的业务。
22.进一步地,所述分布式系统中的每一节点中部署有嵌入式分布式事务协调器。
23.第二方面,本技术实施例提供一种嵌入式分布式事务协调器基于数据库表的事务恢复装置,所述方法包括:
24.第一扫描单元,用于扫描预设的事务生命周期表;
25.第一确定单元,用于根据所述事务生命周期表,确定当前事务对应的最大执行时间,其中,所述事务生命周期表中包括每一事务对应的业务的最大执行时间;
26.第二确定单元,用于根据当前事务对应的业务的最大执行时间,确定检测到中断事件,所述中断事件表征事务发生了中断;
27.第二扫描单元,用于扫描预设的事务现场数据表;
28.处理单元,用于根据所述事务现场数据表,其中,所述事务现场数据表中包括每一业务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况,调取所述当前事务对应的业务下的事务的执行信息,并对所述中断事件进行恢复处理。
29.进一步地,所述第二确定单元,包括:
30.第一确定模块,用于若确定扫描时间大于第一预设时间,则确定检测到中断事件,并确定与当前事务对应的业务下的事务为中断的事务;其中,所述第一预设时间为事务开始时间与预设的事务中断过期时间之和,所述事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和,所述事务中断过期时间为最大执行时间;
31.第一更新模块,用于更新所述事务生命周期表中的当前事务对应的业务的最大执行时间,为第二预设时间,所述第二预设时间为当前时间与预设的事务恢复超时时间之和。
32.进一步地,所述装置,还包括:
33.执行单元,用于若未在所述事务恢复超时时间之内调取所述当前事务对应的业务
下的事务的执行信息,则再次执行所述第一扫描单元。
34.进一步地,所述装置,还包括:
35.第二更新模块,用于在所述第二扫描单元扫描预设的事务现场数据表之前,更新所述事务生命周期表中的当前事务对应的业务的最大执行时间,为第三预设时间;其中,所述第三预设时间为当前时间与预设的事务中断过期时间之和,所述事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和。
36.进一步地,所述第一扫描单元,具体用于:基于抢占机制,确定扫描预设的事务生命周期表。
37.进一步地,所述处理单元,包括:
38.调取模块,用于根据所述事务现场数据表,调取所述当前事务对应的业务下的事务的执行信息;
39.执行模块,用于若根据所调取的执行信息确定出发生中断的事务的节点,则接管所述中断的事务对应的业务。
40.进一步地,所述分布式系统中的每一节点中部署有嵌入式分布式事务协调器。
41.第三方面,本技术实施例提供一种电子设备,所述电子设备包括:存储器,处理器;存储器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行第一方面所述的方法。
42.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面所述的方法。
43.第五方面,本技术实施例提供一种计算机程序产品,所述计算机程序产品包括:计算机程序,所述计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得电子设备执行第一方面所述的方法。
44.本技术实施例提供的嵌入式分布式事务协调器基于数据库表的事务恢复方法,扫描预设的事务生命周期表,并根据事务生命周期表,确定与当前事务对应的执行时间,事务生命周期表中包括每一事务对应的业务的最大执行时间;根据与当前事务对应的业务的最大执行时间,确定检测到中断事件;扫描预设的事务现场数据表,并根据事务现场数据表,调取当前事务对应的业务下的事务的执行信息,并对中断事件进行恢复处理,其中,事务现场数据表中包括每一业务下的每一事务的执行信息。基于分布式系统中的节点完成中断事件的检测,并且部署了一个事务生命周期表,节点通过扫描该事务生命周期表就可以确定节点是否宕机,可以快速的检测到中断事件,即,中断事务。部署简单,不需要依赖于注册中心平台,仅需要分布式系统中的节点和事务生命周期表去检测中断事务;并且节点基于事务现场数据表进行事务恢复。不需要依赖于注册中心平台,保证可以正常进行事务一致性的事务恢复处理。并且,不需要单独考虑分布式事务协调器的高可用,简化了部署复杂度;避免了分布式事务协调器挂掉后对全部系统产生影响的风险,保证了风险隔离。本实施例提供的方法,可以封装为spring boot插件,进而嵌入到节点中。
附图说明
45.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
46.图1为本技术实施例提供的一种嵌入式分布式事务协调器基于数据库表的事务恢复方法的流程图;
47.图2为本技术实施例提供的另一种嵌入式分布式事务协调器基于数据库表的事务恢复方法的流程图;
48.图3为本技术实施例提供的事务恢复的架构图;
49.图4为本技术实施例提供的一种嵌入式分布式事务协调器基于数据库表的事务恢复装置的结构示意图;
50.图5为本技术实施例提供的一种电子设备的结构示意图;
51.图6是本技术实施例提供的一种电子设备的框图。
52.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
53.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
54.随着微服务技术的飞速发展,分布式系统也得到的发展。分布式系统(也可以称为分布式集群)包括个独立部署的节点,多个节点配合完成一个业务(业务,也可以称为服务)的处理,每一节点中处理业务中的每一事务。可知,一个业务包括多个服务,每一服务包括多个事务,事务在节点中进行处理。整个分布式事务(一个分布式事务,称为一个业务)由多个分支的事务构成;分布式系统需要保证事务的一致性。在业务的各事务被执行的过程中,节点会出现宕机等问题,进而导致事务无法被正常执行,需要进行事务一致性的事务恢复处理。
55.在对事务进行管理、以及进行事务一致性的事务恢复处理的过程中,需要考虑高可用问题。高可用保证的原则是“集群化”,“集群化”也可以称为“冗余”。“集群化”,指的是,由于业务下的各事务分别由各接执行,只要有一个节点宕机,则整体的业务就会受到影响;若有备份的节点,则在节点宕机之后,还可以由其他节点顶上,由其他节点执行事务。但是上述过程,只能使得新的业务不受到影响;但是做到中途的业务依然会受到影响,接管的新节点无法对该类异常业务进行后续处理。从而,高可用需要解决未结束业务在接管的新节点自动继续执行的问题。因此高可用的概念可以理解为“集群化”+“异常业务自动恢复”。
56.一个示例中,可以部署一个分布式事务协调器;在分布式事务协调器的方案中,高可用的概念可以理解为“集群化”+“中断事务自动恢复”。分布式事务协调器通过注册中心平台检测是否出现事务发生了中断,分布式事务协调器通过注册中心平台若确定事务发生了中断,则分布式事务协调器通过注册中心平台向分布式集群中的其他节点发送恢复请
求;接收到恢复请求的节点通过数据库中的日志恢复事务上下文,进而完成事务一致性的事务恢复处理。其中,上述过程中,分布式事务协调器依赖于注册中心平台。可知,分布式事务协调器的冗余通过集群部署来实现;中断事务恢复机制依赖节点与分布式事务协调器之间的交互。
57.但是上述方式中,分布式事务协调器需要注册中心平台感知节点的变化,导致分布式事务协调器依赖于注册中心平台,若注册中心平台出现问题,则分布式事务协调器无法进行事务一致性的事务恢复处理;并且,分布式事务协调器在进行事务恢复的时候,依赖于数据库。从而,导致事务恢复的复杂度较高。
58.并且,上述方式中,由于业务下的各事务的节点全部宕机,则所有涉及分布式事务的系统都将停止服务,风险不能隔离,不满足分布式系统可靠性要求。并且,分布式事务协调器独立于各个节点,分布式事务协调器的可靠性设计需要更高级别,增加了系统维护的复杂度,提高了成本。
59.本技术实施例提供的嵌入式分布式事务协调器基于数据库表的事务恢复方法,旨在解决现有技术的如上技术问题。
60.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
61.图1为本技术实施例提供的一种嵌入式分布式事务协调器基于数据库表的事务恢复方法的流程图,如图1所示,该方法包括:
62.101、扫描预设的事务生命周期表,并根据事务生命周期表,确定当前事务对应的最大执行时间,其中,事务生命周期表中包括每一事务对应的业务的最大执行时间。
63.示例性地,在分布式系统(即,分布式集群)中包括多个节点,多个节点配合完成一个业务的处理,每一节点中处理业务中的每一事务。可知,业务包括多个服务,每一服务包括多个事务,每一事务在每一节点中进行处理。
64.事务,指的是,提供一种机制将一个活动所涉及的所有操作纳入一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任何一操作执行失败,都会导致整个事务回滚。
65.分布式系统会把一个应用系统拆分为可独立部署的多个服务,为了保证多个服务之间的事务数据一致性,需要通过服务之间的远程协作完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成的事务称之为分布式事务。各个服务上的事务是整个分布式事务的组成部分,下面将各个服务上的事务称为分支事务,将完成的分布式事务称为全局事务。可知,一个业务包括多个服务,每一服务包括多个事务。可以将布式事务框架以spring boot插件形式嵌入应用系统的内部。
66.在分布式事务执行的过程中,可以采用使用多种方式解决分布式事务的问题;例如,两阶段提交xa模式、改良的两阶段提交tcc模式、基于补偿的saga模式,其中tcc模式和saga模式是解决服务之间分布式事务问题的最常用模式。
67.其中,tcc模式是一种两阶段提交协议,每个分支事务(分支事务,即,事务)都需要提供try、confirm、cancel三个处理过程,其中,try为第一阶段,confirm/cancel为第二阶段。第一阶段中,所有分支事务执行try操作,完成资源的预留;若第一阶段中所有分支事务
的资源均预留成功,则在第二阶段中执行confirm操作以完成全部分支事务的提交;否则,在第二阶段中执行cancel操作,释放预留资源。
68.saga模式是一个长活事务(long live transaction,简称llt),saga模式可被分解成可以交错运行的分支事务集合。其中,每个分支事务都是一个保持数据库一致性的真实事务。每个本地事务均有对应的补偿定义。若本地事务出现异常导致分布式事务执行失败的情况,则需要调用全部已经提交的本地事务的补偿定义。
69.本实施例中,提供了事务生命周期表,事务生命周期表中包括每一事务对应的业务的最大执行时间。例如,事务1、事务2和事务3对应同一个业务,从而事务1的正常的执行时间、事务2的正常的执行时间、以及事务3的正常的执行时间三者之和,为业务的最大执行时间。从而,事务生命周期表用于记录业务的生命周期,即,记录分布式事务执行过程的生命周期。
70.事务生命周期表可以存储在分布式系统的某一个节点中。分布式系统的一个节点扫描预设的事务生命周期表,针对于待分析的当前事务,节点从事务生命周期表中查询与当前事务对应的执行时间。
71.一个示例中,事务生命周期表包括业务标识、服务标识、事务标识、每一事务的执行时间,每一业务标识与多个服务标识对应,每一服务标识与多个事务标识对应,每一事务标识与每一事务的执行时间之间一一对应。从而,可以从事务生命周期表中调取与当前事务的事务标识对应的事务的执行时间,从事务生命周期表中调取与当前事务归属于同一业务的各事务的执行时间;对与当前事务的事务标识对应的事务的执行时间、以及与当前事务归属于同一业务的各事务的执行时间计算总和,得到与当前事务对应的业务的最大执行时间。
72.或者,一个示例中,事务生命周期表包括业务标识、服务标识、事务标识、每一事务的执行时间、每一业务的最大执行时间,每一业务标识与多个服务标识对应,每一服务标识与多个事务标识对应,每一事务标识与每一事务的执行时间之间一一对应,每一业务标识与每一业务的最大执行时间之间一一对应。从而,从事务生命周期表中确与当前事务的事务标识对应的业务标识,进而依据业务标识确定对应的业务的最大执行时间,从而得到与当前事务对应的业务的最大执行时间。
73.102、根据当前事务对应的业务的最大执行时间,确定检测到中断事件,中断事件表征事务发生了中断。
74.一个示例中,步骤102包括:
75.若确定扫描时间大于第一预设时间,则确定检测到中断事件,并确定与当前事务对应的业务下的事务为中断的事务;其中,第一预设时间为事务开始时间与预设的事务中断过期时间之和,事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和,事务中断过期时间为最大执行时间。
76.更新事务生命周期表中的当前事务对应的业务的最大执行时间,为第二预设时间,第二预设时间为当前时间与预设的事务恢复超时时间之和。
77.示例性地,依据与当前事务对应的业务的执最大行时间,确定发生了事务中断,即,确定是否检测到了中断事件。
78.一个示例中,事务生命周期表包括业务标识、服务标识、事务标识、每一事务的执
行时间,每一业务标识与多个服务标识对应,每一服务标识与多个事务标识对应,每一事务标识与每一事务的执行时间之间一一对应。或者,事务生命周期表包括业务标识、服务标识、事务标识、每一事务的执行时间、每一业务的最大执行时间,每一业务标识与多个服务标识对应,每一服务标识与多个事务标识对应,每一事务标识与每一事务的执行时间之间一一对应,每一业务标识与每一业务的最大执行时间之间一一对应。
79.从而,将业务的最大执行时间记录在事务生命周期表中;若不存在节点宕机等异常情况,事务执行成功后,将从事务生命周期表中删除业务的最大执行时间。若出现了节点宕机等异常情况,则与宕机的节点对应的事务所对应的业务的最大执行时间,会一直记录事务生命周期表中,这是由于节点出现了宕机,而本来是需要这个节点清理掉对应的最大执行时间的。从而,若一个事务对应的业务的最大执行时间,或者一个事务的执行时间,长期未被清理,将会被认定为该事务为异常的分布式事务。
80.其中,每一个正常的节点均会有一个中断事务扫描线程,每一个正常的节点通过该中断事务扫描线程,去扫描事务生命周期表,进而检测与该节点对应的事务的业务的最大执行时间,是否已经达到了过期时间,以检测中断事务。
81.若确定扫描时间大于第一预设时间,则确定检测到中断事件,并确定与当前事务对应的业务下的事务为中断的事务。第一预设时间为事务开始时间与预设的事务中断过期时间之和,事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和。事务中断过期时间为上述“过期时间”。例如,事务中断过期时间为1小时。
82.然后,随着时间的进行,在确定检测到中断事件之后,还可以更新事务生命周期表中的与当前事务对应的业务的最大执行时间,将之前检测到的业务的最大执行时间更新为第二预设时间;其中,第二预设时间为当前时间与预设的事务恢复超时时间之和;进而将与当前事务对应的业务的过期时间,退出了一个事务恢复超时时间。例如,事务恢复超时时间为5分钟。
83.其中,执行本实施例的节点可以为执行当前事务的节点;或者,执行本实施例的节点为用于对各事务进行检测的节点,即,执行本实施例的节点可以针对各个事务,去扫描事务生命周期表。
84.若执行本实施例的节点仅用于对当前事务进行检测,则执行本实施例的节点若确定与当前事务对应的业务的最大执行时间小于等于第一预设时间,则确定未检测到中断事件;然后,执行本实施例的节点在一段时间之后再重新扫描事务生命周期表。
85.若执行本实施例的节点用于对各个事务进行检测,则执行本实施例的节点若确定扫描时间小于等于第一预设时间,则确定未检测到中断事件;然后,执行本实施例的节点在一段时间之后再重新扫描事务生命周期表。
86.103、扫描预设的事务现场数据表,并根据事务现场数据表,其中,事务现场数据表中包括每一业务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况,调取当前事务对应的业务下的事务的执行信息,并对中断事件进行恢复处理。
87.一个示例中,还可以包括以下步骤:若未在事务恢复超时时间之内调取当前事务对应的业务下的事务的执行信息,则再次执行扫描预设的事务生命周期表的步骤。
88.示例性地,需要接管中断事件对应的事务。
89.本实施例提供还提供了一个事务现场数据表,事务现场数据表中包括每一业务中每一服务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况。执行情况,例如是节点出现宕机、事务被成功执行完毕、事务正在被执行中。可知,事务现场数据表中包括用于记录分布式事务执行过程的事件日志。
90.事务现场数据表可以存储在分布式系统中的某一个节点中。例如,事务生命周期表与事务现场数据表可以存储于同一个节点中。上述事务生命周期表与事务现场数据表均采用数据库表。
91.确定与当前事务对应的业务的最大执行时间小于第一预设时间,即,确定检测到了中断事件。然后,扫描预设的事务现场数据表;从事务现场数据表中,调取当前事务对应的业务下的事务的执行信息;由于执行信息表征出了业务下的每一事务的执行情况,进而可以确定出发生宕机的节点,进而确定出发生宕机的节点下的事务是哪一个,然后对该事务进行恢复处理。并且,需要在事务恢复超时时间所表征的时间段内,开始对事务进行恢复处理;否则,将重新执行扫描事务生命周期表的步骤。
92.通过设置一个事务恢复超时时间,使得节点在事务恢复超时时间所表征的时间段内,开始对事务进行恢复处理。进而防止节点在恢复分布式事务的过程中也发生了宕机等不可扭转的异常事件的时候,这个没有恢复成功的事务将会由其他正常节点在另一个事务恢复超时时间(例如,5分钟)之后被检测到,进而再次进行事务的恢复和回滚。
93.本实施例中,多个节点共同扫描事务生命周期表(事务生命周期表中包括每一事务对应的业务的最大执行时间)抢占任务;多个节点中的任一节点根据当前扫描时间与中断事务对应的业务的最大执行时间,确定检测到中断事件;然后该节点扫描事务现场数据表,并根据事务现场数据表,事务现场数据表中包括每一业务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况,对中断事件进行恢复处理。该方法可以快速的检测到中断事务,无需依赖于注册中心平台,不需要依赖于注册中心平台,仅需要分布式系统中的节点和事务生命周期表去检测中断事务;并且节点基于事务现场数据表进行事务恢复。无需单独考虑分布式事务协调器的高可用,简化了部署复杂度。不需要依赖于注册中心平台,保证可以正常进行事务一致性的事务恢复处理。并且,不需要单独考虑分布式事务协调器的高可用,简化了部署复杂度;避免了分布式事务协调器挂掉后对全部系统产生影响的风险,保证了风险隔离。本实施例提供的方法,可以封装为spring boot插件,进而嵌入到节点中。
94.图2为本技术实施例提供的另一种嵌入式分布式事务协调器基于数据库表的事务恢复方法的流程图,如图2所示,该方法包括:
95.201、基于抢占机制,确定扫描预设的事务生命周期表。
96.示例性地,在分布式系统(即,分布式集群)中包括多个节点,多个节点配合完成一个业务的处理,每一节点中处理业务中的每一事务。可知,业务包括多个服务,每一服务包括多个事务,每一事务在每一节点中进行处理。可以在每一节点中部署嵌入式分布式事务协调器,其中,嵌入式分布式事务协调器作为一个spring boot插件集成到节点中。
97.分布式系统中的各个节点基于抢占机制,确定出一个去扫描事务生命周期表的节点。分布式系统中的某一个节点优先抢到了这个权利,进而该节点确定扫描预设的事务生命周期表。
98.例如,各个节点基于自己的运行效率,确定出具有优先处理性能的节点,该节点抢占到了可以扫描事务生命周期表的权利。
99.202、扫描预设的事务生命周期表,并根据事务生命周期表,确定当前事务对应的最大执行时间,其中,事务生命周期表中包括每一事务对应的业务的最大执行时间。
100.示例性地,本步骤可以参见步骤101,不再赘述。
101.203、根据当前事务对应的业务的最大执行时间,确定检测到中断事件,中断事件表征事务发生了中断。
102.示例性地,本步骤可以参见步骤102,不再赘述。其中,节点可以基于嵌入式分布式事务协调器,完成步骤202和步骤203。
103.上述步骤中的节点检测到中断事件,然后该节点需要进行事务恢复的处理。
104.例如,各个节点基于自己的运行效率,确定出具有优先处理性能的节点,该节点抢占到了可以检测到中断事件的权利,然后该节点进行事务恢复的处理的权利。
105.204、更新事务生命周期表中的当前事务对应的业务的最大执行时间,为第三预设时间;其中,第三预设时间为当前时间与预设的事务中断过期时间之和,事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和。
106.示例性地,首先更新事务生命周期表中的与当前事务对应的业务的最大执行时间。随着时间的进行,将与当前事务对应的业务的最大执行时间,更新为第三预设时间;其中,第三预设时间为当前时间与预设的事务中断过期时间之和,事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和。事务中断过期时间为上述“过期时间”。例如,事务中断过期时间为1小时。
107.从而在处理中断事件的时候,更新事务的开始处理时间为当前时间;并且将再次更新事务生命周期表中的与当前事务对应的业务的最大执行时间(该时间是一个时刻点,不是一个时间段)。
108.205、扫描预设的事务现场数据表,并根据事务现场数据表,其中,事务现场数据表中包括每一业务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况,调取当前事务对应的业务下的事务的执行信息,并对中断事件进行恢复处理。
109.一个示例中,步骤205在调取当前事务对应的业务下的事务的执行信息,并对中断事件进行恢复处理的时候,包括以下步骤:
110.根据事务现场数据表,调取当前事务对应的业务下的事务的执行信息;若根据所调取的执行信息确定出发生中断的事务的节点,则接管中断的事务对应的业务。
111.示例性地,启动新的分布式事务处理过程,节点中部署有分布式事务协调器,进而节点基于分布式事务协调器开始进行事务的调度,以完成事务恢复。其中,节点可以基于嵌入式分布式事务协调器完成步骤204-205。
112.扫描预设的事务现场数据表。从事务现场数据表中,调取当前事务对应的业务下的事务的执行信息;由于执行信息表征出了业务下的每一事务的执行情况,进而可以确定出发生宕机的节点,进而确定出发生宕机的节点下的事务是哪一个。由于事务未被处理完毕,进而导致事务不一致,例如,导致系统内各个服务之间的数据是不一致的,从而对该事务进行恢复处理。接管发送故障的节点(例如,发送宕机的节点)所遗留的中断事务,并恢复
分布式事务的现场数据,完成后续所有已经提交的分支事务的回滚处理,从而保证各个服务之间的数据恢复到一致状态。
113.一个示例中,一个节点基于抢占机制,确定扫描上述事务生命周期表,检测到了事务发生了中断;然后,由于执行信息中表征出了节点是否发生宕机,进而该节点根据所调取的执行信息,若执行信息表征节点发生宕机,则确定该节点下事务为发生中断的事务,进而确出发生中断的事务的节点是哪一个。然后,节点接管发生中断的事务下的节点所对应的业务。此时,若多个节点出现宕机,依然可以完成事务的恢复。
114.例如,节点a1处理事务1,节点b处理事务2,节点c处理事务3,事务1、事务2、以及事务3归属于同一个业务。图3为本技术实施例提供的事务恢复的架构图,如图3所示,节点a2对事务1进行检测,节点a2根据事务生命周期表,确定出与事务1对应的业务的最大执行时间a。节点a2若确定扫描时间大于第一预设时间,则确定发生了中断事件。节点a2基于抢占机制,扫描事务现场数据表;节点a2从事务现场数据表中读取出与事务1对应的执行信息、与事务2对应的执行信息、与事务3对应的执行信息,节点a2基于上述执行信息,确定出与事务1对应的执行信息表征节点a1发生宕机,进而节点a2接管节点a1。
115.再例如,节点a1处理事务1,节点b处理事务2,节点c处理事务3,事务1、事务2、以及事务3归属于同一个业务。如图3所示,节点a2对事务1进行检测,节点a2根据事务生命周期表,确定出与事务1对应的业务的最大执行时间a。节点a2若确定扫描时间大于第一预设时间,则确定发生了中断事件。节点a2抢占机制,扫描事务现场数据表;节点a2从事务现场数据表中读取出与事务1对应的执行信息、与事务2对应的执行信息、与事务3对应的执行信息,节点a2基于上述执行信息,确定出与事务2对应的执行信息表征节点b发生宕机,进而节点a2接管节点a1,进而节点a2接管事务。
116.然后,在恢复处理之后,扫描事务生命周期表,删除事务生命周期表中与当前事务对应的业务的最大执行时间;若没有完成恢复处理,则不删除事务生命周期表中与当前事务对应的业务的最大执行时间,并重新执行步骤201,再次开始一次新的处理流程。
117.可知,在本技术中,分布式事务协调器嵌入到了节点中。事务生命周期表和事务现场数据表,是整个分布式系统的各个节点所共用的,即,整个分布式系统的各个节点共用一条数据库。
118.本实施例还可以执行以下步骤。
119.第一步骤、响应于用户的第一操作指令,开启事务检测功能。
120.示例性地,分布式系统的一个节点可以向用户提供一个界面,用户在该界面上输入触控操作,进而节点接收到用户的第一操作指令;节点基于第一操作指令,开启事务检测功能。并且节点将该第一操作指令同步给分布式系统中的其他节点。进而可以执行本实施例的步骤201-205。
121.第二步骤、响应于用户的第二操作指令,关闭事务检测功能。
122.示例性地,分布式系统的一个节点可以向用户提供一个界面,用户在该界面上输入触控操作,进而节点接收到用户的第二操作指令;节点基于第二操作指令,关闭事务检测功能。并且节点将该第二操作指令同步给分布式系统中的其他节点。进而可以不再执行本实施例的步骤201-205。
123.从而通过配置项,提供了事务检测功能的开启和关闭。并且,由于事务检测功能的
开启或关闭是可配置的,进而满足不同系统个性化需求。
124.本实施例中,在上述实施例的基础上,可以在节点中部署嵌入式分布式事务协调器,其中,嵌入式分布式事务协调器作为一个spring boot插件集成到节点中;可以基于嵌入式分布式事务协调器,去扫描事务生命周期表,进而检测出发生故障的节点,即,确定出中断的事务。然后,基于嵌入式分布式事务协调器,扫描事务现场数据表,进而对中断的事务进行事务恢复的处理。基于嵌入式分布式事务协调器中断事务的检测和恢复,从而实现了嵌入式分布式事务协调器的高可用性;并且,无需额外部署中间件事务协调器系统,降低了处理分布式事务的成本,并减少接入中间件事务协调器的网络开销。并且,发现发生故障的节点的之后,由接管发生故障的节点的事务,进而执行中断事务的恢复;从而,分布式系统中的各节点均具备事务协调的能力,可以处理事务,也可以对异常节点下的事务进行恢复,从而解决中间件事务协调器的不能风险隔离的问题,提高了事务恢复的可靠性。同时通过配置项,提供了事务检测功能的开启和关闭;由于事务检测功能的开启或关闭是可配置的,进而满足不同系统个性化需求。
125.图4为本技术实施例提供的一种嵌入式分布式事务协调器基于数据库表的事务恢复装置的结构示意图,如图4所示,该装置包括:
126.第一扫描单元31,用于扫描预设的事务生命周期表。
127.第一确定单元32,用于根据事务生命周期表,确定当前事务对应的最大执行时间,其中,事务生命周期表中包括每一事务对应的业务的最大执行时间。
128.第二确定单元33,用于根据当前事务对应的业务的最大执行时间,确定检测到中断事件,中断事件表征事务发生了中断。
129.第二扫描单元34,用于扫描预设的事务现场数据表。
130.处理单元35,用于根据事务现场数据表,其中,事务现场数据表中包括每一业务下的每一事务的执行信息,每一事务的执行信息指示出了执行该事务的节点的执行情况,调取当前事务对应的业务下的事务的执行信息,并对中断事件进行恢复处理。
131.一个示例中,第二确定单元32,包括:
132.第一确定模块,用于若确定扫描时间大于第一预设时间,则确定检测到中断事件,并确定与当前事务对应的业务下的事务为中断的事务;其中,第一预设时间为事务开始时间与预设的事务中断过期时间之和,事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和,事务中断过期时间为最大执行时间。
133.第一更新模块,用于更新事务生命周期表中的当前事务对应的业务的最大执行时间,为第二预设时间,第二预设时间为当前时间与预设的事务恢复超时时间之和。
134.一个示例中,本实施例提供的装置,还包括:
135.执行单元,用于若未在事务恢复超时时间之内调取当前事务对应的业务下的事务的执行信息,则再次执行第一扫描单元31。
136.一个示例中,本实施例提供的装置,还包括:
137.第二更新模块,用于在第二扫描单元34扫描预设的事务现场数据表之前,更新事务生命周期表中的当前事务对应的业务的最大执行时间,为第三预设时间;其中,第三预设时间为当前时间与预设的事务中断过期时间之和,事务中断过期时间为与当前事务对应的业务下的各业务的执行时长之和。
138.一个示例中,第一扫描单元31,具体用于:基于抢占机制,确定扫描预设的事务生命周期表。
139.一个示例中,处理单元35,包括:
140.调取模块,用于根据事务现场数据表,调取当前事务对应的业务下的事务的执行信息;
141.执行模块,用于若根据所调取的执行信息确定出发生中断的事务的节点,则接管中断的事务对应的业务。
142.一个示例中,分布式系统中的每一节点中部署有嵌入式分布式事务协调器。
143.示例性地,本实施例可以参见上述方法实施例,其原理和技术效果类似,不再赘述。
144.图5为本技术实施例提供的一种电子设备的结构示意图,如图5所示,电子设备包括:存储器71,处理器72。
145.存储器71;用于存储处理器72可执行指令的存储器。
146.其中,处理器72被配置为执行如上述实施例提供的方法。
147.电子设备还包括接收器73和发送器74。接收器73用于接收外部设备发送的指令和数据,发送器74用于向外部设备发送指令和数据。
148.图6是本技术实施例提供的一种电子设备的框图,该电子设备可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。电子设备为上述节点。
149.装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)接口812,传感器组件814,以及通信组件816。
150.处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
151.存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
152.电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
153.多媒体组件808包括在装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而
且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
154.音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
155.i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
156.传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
157.通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
158.在示例性实施例中,装置800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
159.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
160.本技术实施例还提供了一种非临时性计算机可读存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例提供的方法。
161.本技术实施例还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
162.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其
它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
163.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1