事务识别方法和装置、存储介质以及电子装置与流程

文档序号:18100782发布日期:2019-07-06 11:20阅读:244来源:国知局
事务识别方法和装置、存储介质以及电子装置与流程

本发明涉及数据处理领域,具体而言,涉及一种事务识别方法和装置、存储介质以及电子装置。



背景技术:

目前,在分布式事务处理系统中,事务管理器负责管理每个节点服务器,每个节点服务器单独管理自己的执行主体,这样就形成了层次式的管理,增加了管理的开销,不能由顶层的事务管理器直接定位到最基层的执行主体。而且,基于分布式事务处理系统中的层次结构,需要遍历各个执行主体,以实现识别执行主体之间的事务关系的目的,这样将会导致识别多个执行主体所执行的任务是否属于同一个事务的效率较低。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种事务识别方法和装置、存储介质以及电子装置,以至少解决相关技术中识别多个执行主体所执行的任务是否属于同一个事务的效率较低的技术问题。

根据本发明实施例的一个方面,提供了一种事务识别方法,包括:获取第一事务识别请求,其中,所述第一事务识别请求用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务,所述第一执行主体为执行所述第一任务的进程或线程,所述第二执行主体为执行所述第二任务的进程或线程;响应于所述第一事务识别请求,获取与所述第一执行主体的标识具有映射关系的第一事务标识以及与所述第二执行主体的标识具有映射关系的第二事务标识;在所述第一事务标识与所述第二事务标识相同的情况下,识别出所述第一任务与所述第二任务属于同一个事务。

根据本发明实施例的另一方面,还提供了一种事务识别装置,包括:第一获取单元,用于获取第一事务识别请求,其中,所述第一事务识别请求用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务,所述第一执行主体为执行所述第一任务的进程或线程,所述第二执行主体为执行所述第二任务的进程或线程;第二获取单元,用于响应于所述第一事务识别请求,获取与所述第一执行主体的标识具有映射关系的第一事务标识以及与所述第二执行主体的标识具有映射关系的第二事务标识;第一识别单元,用于在所述第一事务标识与所述第二事务标识相同的情况下,识别出所述第一任务与所述第二任务属于同一个事务。

根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行本发明实施例中任意一种事务识别方法。

根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,其中,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行本发明实施例中任意一种事务识别方法。

在本发明实施例中,通过获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识,在第一事务标识与第二事务标识相同的情况下确定第一执行主体所执行的第一任务与第二执行主体所执行的第二任务属于同一个事务,达到了快速识别不同执行主体所执行的任务是否属于同一个事务的目的,进而解决了相关技术中识别多个执行主体所执行的任务是否属于同一个事务的效率较低的技术问题,从而实现了提高事务识别效率的技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的事务识别方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的事务识别方法的流程图;

图3是根据本发明优选实施例的分布式事务处理系统的结构框图;

图4是根据本发明实施例的一种可选的事务识别装置的示意图;

图5是根据本发明实施例的另一种可选的事务识别装置的示意图;

图6是根据本发明实施例的另一种可选的事务识别装置的示意图;

图7是根据本发明实施例的另一种可选的事务识别装置的示意图;

图8是根据本发明实施例的另一种可选的事务识别装置的示意图;

图9是根据本发明实施例的另一种可选的事务识别装置的示意图;

图10是根据本发明实施例的另一种可选的事务识别装置的示意图;

图11是根据本发明实施例的另一种可选的事务识别装置的示意图;

图12是根据本发明实施例的另一种可选的事务识别装置的示意图;以及

图13是根据本发明实施例的一种电子装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:

事务:是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足acid属性,也即原子性、一致性、隔离性以及持久性。一个事务可以划分为多个任务交由多个进程或者线程处理。

根据本发明实施例的一个方面,提供了一种事务识别方法。

可选地,在本实施例中,上述识别方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的事务识别方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的事务识别方法也可以是由安装在其上的客户端来执行。

图2是根据本发明实施例的一种可选的事务识别方法的流程图,如图2所示,该方法可以包括以下步骤:

步骤s202,获取第一事务识别请求,其中,第一事务识别请求用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务,第一执行主体为执行第一任务的进程或线程,第二执行主体为执行第二任务的进程或线程;

步骤s204,响应于第一事务识别请求,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识;

步骤s206,在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务。

通过上述步骤s202至步骤s206,通过获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识,在第一事务标识与第二事务标识相同的情况下确定第一执行主体所执行的第一任务与第二执行主体所执行的第二任务属于同一个事务,达到了快速识别不同执行主体所执行的任务是否属于同一个事务的目的,进而解决了相关技术中识别多个执行主体所执行的任务是否属于同一个事务的效率较低的技术问题,从而实现了提高事务识别效率的技术效果。

首先需要说明的是,本发明实施例的事务识别方法可以应用于分布式事务处理系统中,其中,分布式事务处理系统可以包括多个节点服务器,这些节点服务器可以由事务管理器管理,每个节点服务器中可以包括一个或者多个执行主体,其中,执行主体可以为执行某一任务的进程或者线程。本发明实施例的事务识别方法可以识别不同执行主体所执行的任务是否属于同一个事务,其中,不同执行主体可以是位于同一个节点服务器中的不同执行主体,也可以是位于不同节点服务器中的不同执行主体。还需要说明的是,本发明实施例中的“第一”、“第二”等仅是为了名称上起到区分作用,并不用于限定顺序。

在步骤s202提供的技术方案中,第一执行主体可以为执行第一任务的进程或线程,第二执行主体可以为执行第二任务的进程或线程,其中,第一任务与第二任务可以为同一个事务的子任务,也可以为不同事务的子任务,第一执行主体与第二执行主体可以位于分布式事务处理系统中的同一个节点服务器中,也可以位于不同节点服务器中。

本发明实施例中的第一事务识别请求可以用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务。第一事务识别请求中可以至少携带有以下信息:第一执行主体的标识、第二执行主体的标识、第一执行主体所在的节点服务器的标识,第二执行主体所在的节点服务器的标识,第一任务的描述信息、第二任务的描述信息等。需要说明的是,第一事务识别请求还可以携带有其他信息,此处不再一一举例说明。

在步骤s204提供的技术方案中,在获取到第一事务识别请求之后,本发明实施例可以对其进行响应,具体的响应过程可以包括:从第一事务识别请求中解析得到第一执行主体的标识、第二执行主体的标识以及第一执行主体所在的节点服务器的标识、第二执行主体所在的节点服务器的标识等信息,然后在获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。本发明实施例通过获取第一事务标识与第二事务标识,并判断两者是否相同,可以达到快速判断第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务的目的。

需要说明的是,为了快速识别第一任务与第二任务是否属于同一个事务,本发明实施例可以利用预先建立的映射关系直接获取第一执行主体的标识所对应的第一事务标识以及第二执行主体的标识所对应的第二事务标识,通过判断第一事务标识与第二事务标识是否相同,来确定第一任务与第二任务是否属于同一个事务。

下面首先介绍一下映射关系的具体建立过程:

作为一种可选的实施例,在获取第一事务识别请求之前,本发明实施例还可以包括:获取第一映射关系和第二映射关系,其中,第一映射关系可以为目标节点服务器中存储的、用于指示目标事务的目标事务标识与目标执行主体的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,第二映射关系可以用于指示目标事务标识、目标节点服务器的标识以及目标执行主体的标识之间的映射关系。

此处需要说明的是,目标节点服务器可以为分布式事务处理系统中的任意一个节点服务器,目标执行主体可以为目标节点服务器中执行目标事务的任意一个进程或者线程,目标事务可以为任意一个事务,本发明实施例对目标事务的类型不做具体限定。本发明实施例可以利用该可选实施例中的第一映射关系和第二映射关系获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。

可选地,获取第一映射关系和第二映射关系可以包括以下步骤s1至步骤s4,具体地:

步骤s1,根据目标事务的工作量确定执行目标事务的目标节点服务器的标识以及预估执行主体的标识,其中,预估执行主体为预估的目标节点服务器内执行目标事务所需要的进程或者线程。

需要说明的是,目标事务可以为任意一个事务,分布式事务处理系统中的事务管理器可以预估该目标事务的工作量,并根据该目标事务的工作量以及综合分布式事务处理系统中各个节点服务器的负载情况预估哪些节点服务器处理该目标事务,这些节点服务器即为目标节点服务器。进一步的,事务管理器还可以预估目标节点服务器需要分配多少个进程或者线程参与该目标事务的处理过程,这些预估的进程或者线程即为预估执行主体。事务管理器在预估目标节点服务器以及预估执行主体之后,可以生成一个映射关系表,其中,该映射关系表中可以用于指示目标事务的目标事务标识、目标节点服务器的标识、预估执行主体的标识之间的映射关系。

步骤s2,将目标事务标识以及预估执行主体的标识发送给目标节点服务器,其中,目标节点服务器用于根据预估执行主体的标识生成目标执行主体,并建立预估执行主体的标识与目标执行主体的标识之间的映射关系。

需要说明的是,在确定目标节点服务器以及预估执行主体之后,事务管理器可以将目标事务标识以及预估执行主体的标识发送给目标节点服务器。目标节点服务器在接收到事务管理器发送的预估执行主体的标识后,可以根据预估执行主体的标识个数生成对应个数的进程或者线程,也即目标执行主体,并在本地建立目标事务标识、预估执行主体的标识、目标执行主体的标识之间的映射关系。

此处还需要说明的是,预估执行主体的标识是一个虚拟的标识,表示某个节点服务器上可以启动的执行主体的名字,是一个逻辑名字,由事务管理器来生成,在节点服务器生成具体的目标执行主体后,在将目标执行主体的标识映射到预估执行主体标识。这样做的目的是在事务管理器上统一生成统一管理,避免由节点服务器生成,再发送到事务管理器;而事务管理器可以按需拉取,或者按需拉取与节点服务器定时上报相结合。这样做是因为判断执行主体与执行主体之间是否属于同一个事务,一定是执行主体生成以后才发生的事情,所以可以先由事务管理器生成虚拟的一个预估执行主体的标识,然后再由节点服务器创建目标执行主体后再建立预估执行主体的标识与目标执行主体的标识之间的映射关系,以达到减少网络开销的目的。

步骤s3,根据预估执行主体的标识与目标执行主体的标识之间的映射关系生成第一映射关系,其中,第一映射关系用于指示目标事务标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。

需要说明的是,目标节点服务器在建立预估执行主体的标识与目标执行主体的标识之间的映射关系后,可以据此在其本地生成第一映射关系,也即目标事务标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。可选地,目标节点服务器在生成第一映射关系之后,可以在本地存储该第一映射关系,以便于根据该第一映射关系快速获取到某个执行主体所对应的事务标识。

步骤s4,根据第一映射关系生成第二映射关系,其中,第二映射关系用于指示目标事务标识、目标节点服务器的标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。

需要说明的是,目标节点服务器在其本地生成第一映射关系以后,可以将该第一映射关系上报给事务管理器,事务管理器会据此更新已经生成的映射关系表,使得更新后的映射关系表可以用于指示目标事务的目标事务标识、目标节点服务器的标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系,也即事务管理器可以根据第一映射关系生成第二映射关系,其中,第二映射关系可以用于指示目标事务标识、目标节点服务器的标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。

通过该可选实施例,可以实现在目标节点服务器中存储有第一映射关系,在事务管理器中存储有第二映射关系。

基于上述第一映射关系和第二映射关系,本发明实施例可以实现快速获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。具体可以包括以下两种情况:

第一种情况:第一执行主体与第二执行主体位于同一个目标节点服务器中,则本发明实施例可以根据第一映射关系获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。

第二种情况:第一执行主体位于第一目标节点服务器中,第二执行主体位于第二目标节点服务器中,且第一目标节点服务器的标识与第二目标节点服务器的标识不同,则本发明实施例可以根据第二映射关系获取与第一执行主体的标识以及第一目标节点服务器的标识具有映射关系的第一事务标识,以及与第二执行主体的标识以及第二目标节点服务器的标识具有映射关系的第二事务标识。

需要说明的是,在第一执行主体与第二执行主体位于同一个目标节点服务器中的情况下,因为两者的目标节点服务器的标识相同,只需利用该目标节点服务器中存储的第一映射关系便可以获取第一执行主体的标识所唯一对应的第一事务标识以及第二执行主体的标识所唯一对应的第二事务标识。而在第一执行主体与第二执行主体位于不同目标节点服务器中的情况下,由于单独利用执行主体的标识无法唯一确定与其对应的事务标识,故需要利用第二映射关系,以便于确定第一执行主体的标识与第一目标节点服务器的标识所共同对应的第一事务标识以及第二执行主体的标识与第二目标节点服务器的标识所共同对应的第二事务标识。

本发明实施例针对不同的情况选择对应的映射关系来获取第一执行主体的标识所对应的第一事务标识以及第二执行主体的标识所对应的第二事务标识,能够达到缩短获取第一执行主体的标识所对应的第一事务标识以及第二执行主体的标识所对应的第二事务标识的时间,进而达到缩短根据第一事务标识和第二事务标识判断第一任务与第二任务是否属于同一个事务的时间,以实现提高事务识别效率的效果。

在步骤s206提供的技术方案中,在获取到第一事务标识与第二事务标识之后,本发明实施例可以判断两者是否相同,如果两者相同,则可以确定第一执行主体所执行的第一任务与第二执行主体所执行的第二任务属于同一个事务;如果两者不相同,则可以确定第一执行主体所执行的第一任务与第二执行主体所执行的第二任务不属于同一个事务。

下面将结合以下具体示例对上述步骤s202至步骤s206进行说明:

假设事务管理器中的存储的第二映射关系为:

{全局事务id-01,节点服务器id-01,预估执行主体id-01,目标执行主体id-001}

{全局事务id-01,节点服务器id-01,预估执行主体id-02,目标执行主体id-002}

{全局事务id-01,节点服务器id-02,预估执行主体id-01,目标执行主体id-009}

{全局事务id-02,节点服务器id-01,预估执行主体id-01,目标执行主体id-004}

{全局事务id-03,节点服务器id-03,预估执行主体id-01,目标执行主体id-005}

从上述第二映射关系可以看出:事务id-01可以在2个节点服务器(节点服务器id-01以及节点服务器id-02)上执行,其中节点服务器id-01上有2个子任务并行执行,分别对应目标执行主体id-001以及目标执行主体id-002,其中节点服务器id-02上有一个子任务执行,即目标执行主体id-009。全局事务id-01以及全局事务id-03同理。

假设节点服务器id-02中存储的第一映射关系为:

{本地的事务id-01,预估执行主体id-01,目标执行主体id-001}

{本地的事务id-01,预估执行主体id-02,目标执行主体id-002}

{本地的事务id-02,预估执行主体id-01,目标执行主体id-004}

当需要判断节点服务器id-02内的目标执行主体id-001与目标执行主体id-002是否属于同一个事务时,根据节点服务器id-02中存储的第一映射关系查找目标执行主体id-001对应的本地的事务id-01以及目标执行主体id-002对应的本地的事务id-01,两者相同,则确定目标执行主体id-001与目标执行主体id-002属于同一个事务。当需要判断节点服务器id-02内的目标执行主体id-001与目标执行主体id-004是否属于同一个事务时,根据节点服务器id-02中存储的第一映射关系查找目标执行主体id-001对应的本地的事务id-01以及目标执行主体id-004对应的本地的事务id-02,两者不相同,则确定目标执行主体id-001与目标执行主体id-004不属于同一个事务。

当需要判断节点服务器id-01内的目标执行主体id-001与节点服务器id-02内的目标执行主体id-009是否属于同一个事务时,根据事务管理器中存储的第二映射关系查找目标执行主体id-001以及节点服务器id-01所共同对应的本地的事务id-01,以及目标执行主体id-009以及节点服务器id-02所共同对应的本地的事务id-01,两者相同,则确定节点服务器id-01内的目标执行主体id-001与节点服务器id-02内的目标执行主体id-009属于同一个事务。当需要判断节点服务器id-01内的目标执行主体id-001与节点服务器id-03内的目标执行主体id-005是否属于同一个事务时,根据事务管理器中存储的第二映射关系查找目标执行主体id-001以及节点服务器id-01所共同对应的本地的事务id-01,以及目标执行主体id-005以及节点服务器id-03所共同对应的本地的事务id-03,两者不相同,则确定节点服务器id-01内的目标执行主体id-001与节点服务器id-03内的目标执行主体id-005不属于同一个事务。

需要说明的是,本发明实施例的事务识别方法不仅适用于识别不同进程或线程所执行的任务是否属于同一个事务,还可以适用于识别不同协程所执行的任务是否属于同一个事务,其中,进程或者线程可以包括至少一个协程。协程实现多任务的方式是在一个进程或线程内,划分出多个任务执行主体,此任务执行主体只是一个物理上的数据结构,每个数据结构保存任务执行需要的上下文,还保存有寄存器的地址上下文,目的是在不同的执行主体之间进行切换,便于协程快速执行且减少操作系统对进程或线程切换的损耗。而不同的协程分享了同一个进程或线程的时间片,通过协程调度器来调度协程所执行的任务。

下面将结合以下可选实施例对识别不同协程所执行的任务是否属于同一个事务的具体过程进行说明:

作为一种可选的实施例,在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,该可选实施例还可以包括以下步骤:

步骤s302,获取第二事务识别请求,其中,第二事务识别请求用于请求识别第一协程所执行的第三任务与第二协程所执行的第四任务是否属于同一个事务;

步骤s304,响应于第二事务识别请求,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识;

步骤s306,在第三事务标识与第四事务标识相同的情况下,识别出第三任务与第四任务属于同一个事务。

通过上述步骤s302至步骤s306,通过获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识,在第三事务标识与第四事务标识相同的情况下确定第一协程所执行的第三任务与第二协程所执行的第四任务属于同一个事务,达到了快速识别不同协程所执行的任务是否属于同一个事务的目的。

在步骤s302提供的技术方案中,第一协程可以执行第三任务,第二协程可以执行第四任务,其中,第三任务与第四任务可以为同一个事务的子任务,也可以为不同事务的子任务,第一协程与第二协程可以位于分布式事务处理系统中的同一个节点服务器中,也可以位于不同节点服务器中。

本发明实施例中的第二事务识别请求可以用于请求识别第一协程所执行的第三任务与第二协程所执行的第四任务是否属于同一个事务。第二事务识别请求中可以至少携带有以下信息:第一协程的标识、第二协程的标识、第一协程所在的节点服务器的标识,第二协程所在的节点服务器的标识,第三任务的描述信息、第四任务的描述信息等。需要说明的是,第二事务识别请求还可以携带有其他信息,此处不再一一举例说明。

在步骤s304提供的技术方案中,在获取到第二事务识别请求之后,本发明实施例可以对其进行响应,具体的响应过程可以包括:从第二事务识别请求中解析得到第一协程的标识、第二协程的标识以及第一协程所在的节点服务器的标识、第二协程所在的节点服务器的标识等信息,然后在获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识。本发明实施例通过获取第三事务标识与第四事务标识,并判断两者是否相同,可以达到快速判断第一协程所执行的第三任务与第二协程所执行的第四任务是否属于同一个事务的目的。

需要说明的是,为了快速识别第三任务与第四任务是否属于同一个事务,该可选实施例可以在本发明上述实施例中的第一映射关系和第二映射关系的基础上进行扩展,增加协程的标识这一元组,以得到第三映射关系和第四映射关系,使得第三映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识、目标执行主体的标识以及目标协程的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,目标执行主体包括至少一个目标协程,第四映射关系用于指示目标事务标识、目标节点服务器的标识、目标执行主体的标识以及目标协程的标识之间的映射关系。

作为一种可选的实施例,在获取第二事务识别请求之前,本发明实施例还可以包括:获取第三映射关系和第四映射关系。

需要说明的是,基于上述第三映射关系和第四映射关系,本发明实施例可以实现快速获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识。具体可以包括以下两种情况:

第一种情况:第一协程与第二协程位于同一个目标节点服务器中,则本发明实施例可以根据第三映射关系,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识。

第二种情况:第一协程位于第三目标节点服务器中,第二协程位于第四目标节点服务器中,第三目标节点服务器的标识与第四目标节点服务器的标识不同,则本发明实施例可以根据第四映射关系,获取与第一协程的标识以及第三目标节点服务器的标识具有映射关系的第三事务标识,以及与第二协程的标识以及第四目标节点服务器的标识具有映射关系的第四事务标识。

需要说明的是,在第一协程与第二协程位于同一个目标节点服务器中的情况下,因为两者的目标节点服务器的标识相同,只需利用该目标节点服务器中存储的第三映射关系便可以获取第一协程的标识所唯一对应的第三事务标识以及第二协程的标识所唯一对应的第四事务标识。而在第一协程与第二协程位于不同目标节点服务器中的情况下,由于单独利用协程的标识无法唯一确定与其对应的事务标识,故需要利用第四映射关系,以便于确定第一协程的标识与第三目标节点服务器的标识所共同对应的第三事务标识以及第二协程的标识与第四目标节点服务器的标识所共同对应的第四事务标识。

本发明实施例针对不同的情况选择对应的映射关系来获取第一协程的标识所对应的第三事务标识以及第二协程的标识所对应的第四事务标识,能够达到缩短获取第一协程的标识所对应的第三事务标识以及第二协程的标识所对应的第四事务标识的时间,进而达到缩短根据第三事务标识和第四事务标识判断第三任务与第四任务是否属于同一个事务的时间,以实现提高事务识别效率的效果。

在步骤s306提供的技术方案中,在获取到第三事务标识与第四事务标识之后,本发明实施例可以判断两者是否相同,如果两者相同,则可以确定第一协程所执行的第三任务与第二协程所执行的第四任务属于同一个事务;如果两者不相同,则可以确定第一协程所执行的第三任务与第二协程所执行的第四任务不属于同一个事务。

通过该可选实施例,可以实现识别不同协程所执行的任务是否属于同一个事务,而且通过第三映射关系和第四映射关系可以快速获取不同协程的标识所对应的事务标识,进而达到提高不同协程所执行的任务是否属于同一个事务的识别效率的效果。

作为一种可选的实施例,在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,该可选实施例还可以包括以下步骤s402至步骤s408,具体地:

步骤s402,获取数据处理请求,其中,数据处理请求用于请求对第五目标节点服务器中的目标数据项进行处理,目标数据项为第五事务已经处理过的数据项,数据处理请求中携带有请求处理目标数据项的第六目标节点服务器的标识以及请求处理目标数据项的第三执行主体的标识。

在上述步骤s402中,第五目标节点服务器可以为分布式事务处理系统中的任意节点服务器,第五目标节点服务器中可以包括至少一个数据项,其中,至少一个数据项包括目标数据项。在该可选实施例中,第五目标节点服务器中的目标数据项已经被第五事务处理过了,需要说明的是,第五事务对第五目标节点服务器中的目标数据项进行的处理操作可以为读取操作、也可以为写入操作。该可选实施例中的数据处理请求可以用于请求对第五目标节点服务器中的目标数据项进行处理,具体可以为请求对第五目标节点服务器中的目标数据项进行读取操作,也可以为请求对第五目标节点服务器中的目标数据项进行写入操作。

还需要说明的是,数据处理请求中可以携带有请求处理目标数据项的第六目标节点服务器的标识以及请求处理目标数据项的第三执行主体的标识,其中,第三执行主体为第六目标节点服务器中的进程或者线程。需要说明的是,数据处理请求中还可以包括其他信息,此处不再一一举例说明。

步骤s404,响应于数据处理请求,获取与第六节点服务器的标识以及第三执行主体的标识具有映射关系的第六事务标识。

在上述步骤s404中,在获取到数据处理请求之后,可以对其进行响应,具体响应过程可以包括对数据处理请求进行解析,从中获取到请求处理目标数据项的第六目标节点服务器的标识以及请求处理目标数据项的第三执行主体的标识,然后获取与第六节点服务器的标识以及第三执行主体的标识具有映射关系的第六事务标识。可选地,该可选实施例可以根据事务管理器中存储的第二映射关系获取与第六节点服务器的标识以及第三执行主体的标识具有映射关系的第六事务标识,以达到缩短获取第六事务标识的时间,进而达到提高数据处理效率的效果。此处需要说明的是,事务管理器中的第二映射关系的建立过程已经在本发明上述实施例中进行了详细介绍,此处不再赘述。

步骤s406,在第六事务标识与第五事务的第五事务标识相同的情况下,确定允许对目标数据项进行处理。

步骤s408,在第六事务标识与第五事务标识不相同的情况下,获取与第五事务标识、第五目标节点服务器的标识以及目标数据项的标识具有映射关系的锁信息,其中,锁信息用于指示第五事务对目标数据项进行的处理操作;根据锁信息确定是否允许对目标数据项进行处理。

在上述步骤s406和步骤s408中,在获取到第六事务标识之后,该可选实施例可以将其与第五事务的第五事务标识进行相同判断,如果两者相同,则说明第三执行主体所执行的任务属于第五事务,则允许对目标数据项进行处理;如果两者不相同,则说明第三执行主体所执行的任务不属于第五事务,则需要进一步根据与第五事务标识、第五目标节点服务器的标识以及目标数据项的标识具有映射关系的锁信息确定是否允许对目标数据项进行处理。此处需要说明的是,事务管理器中可以存储有事务的标识、目标节点服务器的标识、目标数据项的标识以及锁信息之间的映射关系,根据该映射关系可以获取与第五事务标识、第五目标节点服务器的标识以及目标数据项的标识具有映射关系的锁信息,其中,该锁信息可以用于指示第五事务对第五目标节点服务器中的目标数据项进行的处理操作,例如读取操作,或者写入操作等。

在获取到与第五事务标识、第五目标节点服务器的标识以及目标数据项的标识具有映射关系的锁信息之后,该可选实施例可以根据获取到的锁信息确定是否允许对目标数据项进行处理,具体可以包括以下四种情况:

第一种情况:在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求读取目标数据项的情况下,确定允许对目标数据项进行处理。

第二种情况:在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理。

第三种情况:在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求读取目标数据项的情况下,确定不允许对目标数据项进行处理。

第四种情况:在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理。

该可选实施例通过将同一个事务的识别与锁信息相结合以此来确定是否允许对目标数据项进行处理,可以实现快速且准确地判定是否允许对目标数据项进行处理的目的。

本发明还提供了一种优选实施例,该优选实施例提供了一种分布式事务处理系统事务识别的方案,该方案通过将分布式事务语义附加到执行主体的机制,使得在分布式数据处理中需要事务语义的场景中对于分布式计算保持事务特性,快速识别不同执行主体是否属于同一个事务,可以在数据库、大数据处理、分布式事务中间件等基于单机多进程、单机多线程、多机多进程和多线程系统的事务执行变得更加的灵活、可靠、快捷,使得分布式事务的实现更加简单和快速。

该优选实施例为了满足大数据量的计算需求,对传统的分布式事务处理系统进行了扩展,如图3所示,该分布式事务处理系统中可以包括多个节点服务器(在该优选实施例中简称为节点),其中,每个节点中可以包括多个执行主体,此处的执行主体可以是进程或者线程,而每个进程或者线程中又可以包括多个子进程或子线程。在该分布式事务处理中,事务管理器负责统筹所有的节点,每个节可以有多个执行主体参与同一个事务的任务,用并行加速事务的执行。

为了在如图3所示的分布式系统中对事务进行并行处理,需要对同一个事务进行标识,也即判断多个执行主体所执行的任务是否属于同一个事务。此处需要说明,多个执行主体并不仅限于一个节点,而是在分布式事务处理系统中的所有节点中。

下面将详细说明如何快速判断多个执行主体所执行的任务是否属于同一个事务,具体地:

首先,事务管理器建立全局事务index表,表示全局事务id和{节点id,执行主体id}之间的关系。为提高效率,采取优化方式如下:

1.事务管理器配合执行计划以及综合各节点的负载情况可以预估事务的工作量,并根据工作量计算需要哪些节点参与事务计算、计算某个节点需要多少个执行主体,然后生成全局的index表(命名为global_index),其中,执行主体id和节点id为key,事务id是一个在事务管理器中唯一的、逻辑上的事务标识。global_index如下所示:

{全局事务id-01,节点id-01,执行主体id-01,执行主体的物理id-001}

{全局事务id-01,节点id-01,执行主体id-02,执行主体的物理id-002}

{全局事务id-01,节点id-02,执行主体id-01,执行主体的物理id-009}

{全局事务id-02,节点id-02,执行主体id-01,执行主体的物理id-004}

{全局事务id-03,节点id-03,执行主体id-01,执行主体的物理id-005}

{全局事务id-n,节点id-n,执行主体id-n,执行主体的物理id-n}

需要说明的是,上述global_index中的执行主体id相当于本发明上述实施例中的预估执行主体的标识,执行主体的物理id相当于本发明上述实施例中的目标执行主体的标识。

还需要说明的是:上述前三个映射关系表明:同一个事务(全局事务id-01)可以在2个节点上执行(分别为节点id-01以及节点id-02),其中节点id-01上有2个子任务(分别为执行主体的物理id-001以及执行主体的物理id-002)并行执行。

2.上述“执行主体id”是一个虚拟的id,表示某个物理机器上可以启动的执行主体的名字,是一个逻辑名字,由事务管理器来生成。由节点生成具体的执行主体后,获取为执行主体分配的进程id或线程id,映射到此“执行主体id”。目的是在事务管理器上统一生成统一管理,以避免由节点生成再发送到事务管理器;而事务管理器可以按需拉取或者按需拉取与节点定时上报相结合,这样做是因为判断执行主体与执行主体之间是否属于同一个事务,一定是执行主体生成以后才发生的事情,所以可以先由事务管理器生成一个虚拟的“执行主体id”,然后再由节点创建物理的执行主体后再建立“执行主体id与执行主体的物理id”之间的映射关系,这样的过程会减少网络开销。

3.事务管理器下发与节点相关的信息到相关的节点。

4.各个节点根据需要生成的执行主体的个数,生成相应的执行主体,获取执行主体的物理id(也即进程id或线程id),将其映射到执行主体id上。然后建立index表(命名为node_index),表示节点本地的事务id和执行主体之间的关系,执行主体物理id为key,node_index如下所示:

{本地的事务id-01,执行主体id-01,执行主体的物理id-001}

{本地的事务id-01,执行主体id-02,执行主体的物理id-002}

{本地的事务id-02,执行主体id-03,执行主体的物理id-003}

5.各个节点把执行主体的物理id上传到事务管理器,更新global_index。需要说明的是,上述上传是在成功生成执行主体的物理id后上传的,并可在事务管理器需要使用时,由事务管理器通过“拉取”的方式获得,最大程度避免了网络开销。

当需要识别节点内的不同执行主体是否属于同一个事务时,可以根据执行主体物理id查该节点的node_index,判断不同执行主体的本地事务id是否相同,如果相同,则说明属于同一个事务;如果不相同,则说明不属于同一个事务。如此避免了执行主体之间需要存储指针等建立引用的操作,遍历查找时避免了根据前述存储的指针找执行主体之间归属同一个事务的逻辑关系,快速便捷。

当需要识别所有节点内的不同执行主体(不同的节点id和执行主体的id)是否属于同一个事务时,可以根据节点id和执行主体的id查global_index,判断来自不同节点的不同执行主体的全局事务id是否相同,如果相同,则说明属于同一个事务;如果不相同,则说明不属于同一个事务。

该优选实施例还可以适用于协程单机系统,协程实现多任务的方式是在一个进程或线程内,划分出多个任务执行主体,此任务执行主体只是一个物理上的数据结构,每个数据结构保存任务执行需要的上下文,还保存有寄存器的地址上下文,目的是在不同的执行主体之间进行切换,便于协程快速执行且减少操作系统对进程或线程切换的损耗。而不同的协程分享了同一个进程或线程的时间片,协程调度器来调度协程所执行的任务。

这样就给本方案带来一个问题:之前使用“获取执行主体的物理id”就不再适用,而协程的使用,使得具体承担一个事务的子任务的实体变为了协程,所以多了一层映射关系。因此,本方案将global_index更新为:{节点id-01,执行主体id-01,执行主体的物理id-001,协程id},将node_index更新为:{事务id,执行主体id-01,执行主体的物理id-001,协程id}。

当需要识别节点内的不同执行主体的多个协程所承载的任务是否属于同一个事务时,可以根据本协程id找到其载体,也即执行主体的物理id,然后根据执行主体的物理id查node_index,判断不同执行主体的本地事务id是否相同,如果相同,则说明属于同一个事务;如果不相同,则说明不属于同一个事务。

当需要识别所有节点的不同执行主体的多个协程所承载的任务是否属于同一个事务时,可以根据本协程id找到其载体,也即执行主体的物理id,进而找到对应的执行主体id,然后根据节点id和执行主体id查global_index,判断来自不同节点的不同执行主体的全局事务id是否相同,如果相同,则说明属于同一个事务;如果不相同,则说明不属于同一个事务。

上述识别不同协程所执行的任务是否属于同一个事务的具体过程可以参见本发明上述实施例中对步骤s302至步骤s306的详细描述,此处不再赘述。

本发明优选实施例,针对使用了封锁并发访问控制协议的分布式事务处理系统,当存在多个副本时,一些副本被用于为只读事务提供数据,主副本更新则其他副本更新,只读操作不影响事务的数据一致性。此时需要识别不同节点内的不同执行主体是否属于同一个事务,即全局的多副本上的读写操作,是否是同一个事务的读写操作。具体识别过程可以描述如下:

各个节点可以把锁信息上传给事务管理器,其中,锁信息可以用于指示对数据库中的数据项所进行的处理操作。

事务管理器接收到各个节点上报的锁信息后,可以生成锁表,其中,锁表中可以维护{事务id,节点id,锁信息、数据项id}这样的信息。事务管理器锁表中维护的“锁信息”是一个逻辑信息,其逻辑含义是所有副本上的锁信息的叠加。例如,副本1被写,副本2被读,副本3上没有操作进行,则副本1上的写锁和副本2上的读锁合并为同时存在读写信息,即事务管理器锁表中维护的“锁信息”是“读写”,而并不是单纯的某个副本的锁信息。事务管理器建立了全局的、屏蔽了多节点和多副本的锁信息,全局用一个统一的逻辑锁表作为封锁判断依据。全局的逻辑锁表称为global_locks。

需要说明的是,逻辑的锁信息负责为封锁并发访问控制技术提供判断依据。当对某个数据项的一个副本进行操作时,在序列化隔离级别下,只允许全局的同一个事务同时操作,而其他并发事务则根据封锁协议被排斥(对于其他事务,读读操作不互斥,其他操作被排斥)。该具体过程可以参见本发明上述实施例中对步骤s402至步骤s408的详细描述,此处不再赘述。

通过实现本发明优选实施例中的技术方案,可以带来的以下几个好处:

1.消除了单进程/线程执行的瓶颈,把sql执行扩展到了多进程、多线程或多实例节点并行执行,极大地加快了sql执行的速度。

2.能够快速判断分布式操作是否属于同一个事务。如果属于同一个事务,则授予锁或允许继续执行相关的操作的速度会大大加快。如果不属于同一个事务,则利用锁表判断锁是否相容的速度也会加快。

3.把本方案扩展到了协程技术实现的系统中,使得本方案适用于协程、线程、进程这样的系统。

本发明优选实施例提出了一种全局事务id与局部执行主体映射的数据结构来快速识别事务间的关系的实现方案,针对分布式事务处理的需要,可以极大提高物理执行主体和事务间关系的识别效率,从而加速事务处理的整体速度。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

根据本发明实施例的另一个方面,还提供了一种用于实施上述事务识别方法的事务识别装置。图4是根据本发明实施例的一种可选的事务识别装置的示意图,如图4所示,该装置可以包括:

第一获取单元42,用于获取第一事务识别请求,其中,第一事务识别请求用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务,第一执行主体为执行第一任务的进程或线程,第二执行主体为执行第二任务的进程或线程;第二获取单元44,用于响应于第一事务识别请求,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识;第一识别单元46,用于在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务。

需要说明的是,该实施例中的第一获取单元42可以用于执行本申请实施例中的步骤s202,该实施例中的第二获取单元44可以用于执行本申请实施例中的步骤s204,该实施例中的第一识别单元46可以用于执行本申请实施例中的步骤s206。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

作为一种可选的实施例,如图5所示,该事务识别装置还可以包括:第三获取单元41,用于在获取第一事务识别请求之前,获取第一映射关系和第二映射关系,其中,第一映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识与目标执行主体的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,第二映射关系用于指示目标事务标识、目标节点服务器的标识以及目标执行主体的标识之间的映射关系。

可选地,如图5所示,第三获取单元41可以包括:确定模块412,用于根据目标事务的工作量确定执行目标事务的目标节点服务器的标识以及预估执行主体的标识,其中,预估执行主体为预估的目标节点服务器内执行目标事务所需要的进程或者线程;发送模块414,用于将目标事务标识以及预估执行主体的标识发送给目标节点服务器,其中,目标节点服务器用于根据预估执行主体的标识生成目标执行主体,并建立预估执行主体的标识与目标执行主体的标识之间的映射关系;第一生成模块416,用于根据预估执行主体的标识与目标执行主体的标识之间的映射关系生成第一映射关系,其中,第一映射关系用于指示目标事务标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系;第二生成模块418,用于根据第一映射关系生成第二映射关系,其中,第二映射关系用于指示目标事务标识、目标节点服务器的标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。

作为一种可选的实施例,第一执行主体与第二执行主体位于同一个目标节点服务器中,其中,如图6所示,第二获取单元44可以包括:第一获取模块442,用于根据第一映射关系,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。

作为一种可选的实施例,第一执行主体位于第一目标节点服务器中,第二执行主体位于第二目标节点服务器中,第一目标节点服务器的标识与第二目标节点服务器的标识不同,其中,如图7所示,第二获取单元44可以包括:第二获取模块444,用于根据第二映射关系,获取与第一执行主体的标识以及第一目标节点服务器的标识具有映射关系的第一事务标识,以及与第二执行主体的标识以及第二目标节点服务器的标识具有映射关系的第二事务标识。

作为一种可选的实施例,如图8所示,该事务识别装置还可以包括:第四获取单元48,用于在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,获取第二事务识别请求,其中,第二事务识别请求用于请求识别第一协程所执行的第三任务与第二协程所执行的第四任务是否属于同一个事务;第五获取单元410,用于响应于第二事务识别请求,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识;第二识别单元412,用于在第三事务标识与第四事务标识相同的情况下,识别出第三任务与第四任务属于同一个事务。

作为一种可选的实施例,如图9所示,该事务识别装置还可以包括:第六获取单元47,用于在获取第二事务识别请求之前,获取第三映射关系和第四映射关系,其中,第三映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识、目标执行主体的标识以及目标协程的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,目标执行主体包括至少一个目标协程,第四映射关系用于指示目标事务标识、目标节点服务器的标识、目标执行主体的标识以及目标协程的标识之间的映射关系。

作为一种可选的实施例,第一协程与第二协程位于同一个目标节点服务器中,其中,如图10所示,第五获取单元410可以包括:第三获取模块4102,用于根据第三映射关系,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识。

作为一种可选的实施例,第一协程位于第三目标节点服务器中,第二协程位于第四目标节点服务器中,第三目标节点服务器的标识与第四目标节点服务器的标识不同,其中,如图11所示,第五获取单元410可以包括:第四获取模块4104,用于根据第四映射关系,获取与第一协程的标识以及第三目标节点服务器的标识具有映射关系的第三事务标识,以及与第二协程的标识以及第四目标节点服务器的标识具有映射关系的第四事务标识。

作为一种可选的实施例,如图12所示,该事务识别装置还可以包括:第七获取单元414,用于在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,获取数据处理请求,其中,数据处理请求用于请求对第五目标节点服务器中的目标数据项进行处理,目标数据项为第五事务已经处理过的数据项,数据处理请求中携带有请求处理目标数据项的第六目标节点服务器的标识以及请求处理目标数据项的第三执行主体的标识;第八获取单元416,用于响应于数据处理请求,获取与第六节点服务器的标识以及第三执行主体的标识具有映射关系的第六事务标识;第一确定单元418,用于在第六事务标识与第五事务的第五事务标识相同的情况下,确定允许对目标数据项进行处理;第九获取单元420,用于在第六事务标识与第五事务标识不相同的情况下,获取与第五事务标识、第五节点服务器的标识以及目标数据项的标识具有映射关系的锁信息,其中,锁信息用于指示第五事务对目标数据项进行的处理操作;第二确定单元422,用于根据锁信息确定是否允许对目标数据项进行处理。

可选地,如图12所示,第二确定单元422用于在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求读取目标数据项的情况下,确定允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求读取目标数据项的情况下,确定不允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

通过上述模块,可以解决了相关技术中识别多个执行主体所执行的任务是否属于同一个事务的效率较低的技术问题,进而达到提高事务识别效率的技术效果。

根据本发明实施例的又一个方面,还提供了一种用于实施上述事务识别方法的电子装置。

图13是根据本发明实施例的一种电子装置的结构框图,如图13所示,该电子装置可以包括:一个或多个(图中仅示出一个)处理器201、存储器203,其中,存储器203中可以存储有计算机程序,处理器201可以被设置为运行所述计算机程序以执行本发明实施例的事务识别方法。

其中,存储器203可用于存储计算机程序以及模块,如本发明实施例中的事务识别方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的计算机程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的事务识别方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

可选地,如图13所示,该电子装置还可以包括:传输装置205以及输入输出设备207。其中,传输装置205用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

本领域普通技术人员可以理解,图13所示的结构仅为示意,电子装置可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图13其并不对上述电子装置的结构造成限定。例如,电子装置还可以包括比图13中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图13所示不同的配置。

可选地,在本实施例中,上述存储器203可以用于存储计算机程序。

可选地,在本实施例中,上述处理器可以被设置为运行计算机程序,以执行以下步骤:获取第一事务识别请求,其中,第一事务识别请求用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务,第一执行主体为执行第一任务的进程或线程,第二执行主体为执行第二任务的进程或线程;响应于第一事务识别请求,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识;在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务。

处理器201还用于执行下述步骤:在获取第一事务识别请求之前,获取第一映射关系和第二映射关系,其中,第一映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识与目标执行主体的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,第二映射关系用于指示目标事务标识、目标节点服务器的标识以及目标执行主体的标识之间的映射关系。

处理器201还用于执行下述步骤:根据目标事务的工作量确定执行目标事务的目标节点服务器的标识以及预估执行主体的标识,其中,预估执行主体为预估的目标节点服务器内执行目标事务所需要的进程或者线程;将目标事务标识以及预估执行主体的标识发送给目标节点服务器,其中,目标节点服务器用于根据预估执行主体的标识生成目标执行主体,并建立预估执行主体的标识与目标执行主体的标识之间的映射关系;根据预估执行主体的标识与目标执行主体的标识之间的映射关系生成第一映射关系,其中,第一映射关系用于指示目标事务标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系;根据第一映射关系生成第二映射关系,其中,第二映射关系用于指示目标事务标识、目标节点服务器的标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。

处理器201还用于执行下述步骤:在第一执行主体与第二执行主体位于同一个目标节点服务器中的情况下,根据第一映射关系,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。

处理器201还用于执行下述步骤:在第一执行主体位于第一目标节点服务器中,第二执行主体位于第二目标节点服务器中,第一目标节点服务器的标识与第二目标节点服务器的标识不同的情况下,根据第二映射关系,获取与第一执行主体的标识以及第一目标节点服务器的标识具有映射关系的第一事务标识,以及与第二执行主体的标识以及第二目标节点服务器的标识具有映射关系的第二事务标识。

处理器201还用于执行下述步骤:在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,获取第二事务识别请求,其中,第二事务识别请求用于请求识别第一协程所执行的第三任务与第二协程所执行的第四任务是否属于同一个事务;响应于第二事务识别请求,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识;在第三事务标识与第四事务标识相同的情况下,识别出第三任务与第四任务属于同一个事务。

处理器201还用于执行下述步骤:在获取第二事务识别请求之前,获取第三映射关系和第四映射关系,其中,第三映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识、目标执行主体的标识以及目标协程的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,目标执行主体包括至少一个目标协程,第四映射关系用于指示目标事务标识、目标节点服务器的标识、目标执行主体的标识以及目标协程的标识之间的映射关系。

处理器201还用于执行下述步骤:在第一协程与第二协程位于同一个目标节点服务器中的情况下,根据第三映射关系,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识。

处理器201还用于执行下述步骤:在第一协程位于第三目标节点服务器中,第二协程位于第四目标节点服务器中,第三目标节点服务器的标识与第四目标节点服务器的标识不同的情况下,根据第四映射关系,获取与第一协程的标识以及第三目标节点服务器的标识具有映射关系的第三事务标识,以及与第二协程的标识以及第四目标节点服务器的标识具有映射关系的第四事务标识。

处理器201还用于执行下述步骤:在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,获取数据处理请求,其中,数据处理请求用于请求对第五目标节点服务器中的目标数据项进行处理,目标数据项为第五事务已经处理过的数据项,数据处理请求中携带有请求处理目标数据项的第六目标节点服务器的标识以及请求处理目标数据项的第三执行主体的标识;响应于数据处理请求,获取与第六节点服务器的标识以及第三执行主体的标识具有映射关系的第六事务标识;在第六事务标识与第五事务的第五事务标识相同的情况下,确定允许对目标数据项进行处理。

处理器201还用于执行下述步骤:在第六事务标识与第五事务标识不相同的情况下,获取与第五事务标识、第五节点服务器的标识以及目标数据项的标识具有映射关系的锁信息,其中,锁信息用于指示第五事务对目标数据项进行的处理操作;根据锁信息确定是否允许对目标数据项进行处理。

处理器201还用于执行下述步骤:在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求读取目标数据项的情况下,确定允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求读取目标数据项的情况下,确定不允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

采用本发明实施例,提供了一种事务识别的方案。通过获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识,在第一事务标识与第二事务标识相同的情况下确定第一执行主体所执行的第一任务与第二执行主体所执行的第二任务属于同一个事务,达到了快速识别不同执行主体所执行的任务是否属于同一个事务的目的,进而解决了相关技术中识别多个执行主体所执行的任务是否属于同一个事务的效率较低的技术问题,从而实现了提高事务识别效率的技术效果。

根据本发明实施例的又一个方面,还提供了一种存储介质。该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述实施例中事务识别方法的步骤。

可选地,在本实施例中,存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的计算机程序:

s1,获取第一事务识别请求,其中,第一事务识别请求用于请求识别第一执行主体所执行的第一任务与第二执行主体所执行的第二任务是否属于同一个事务,第一执行主体为执行第一任务的进程或线程,第二执行主体为执行第二任务的进程或线程;

s2,响应于第一事务识别请求,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识;

s3,在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在获取第一事务识别请求之前,获取第一映射关系和第二映射关系,其中,第一映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识与目标执行主体的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,第二映射关系用于指示目标事务标识、目标节点服务器的标识以及目标执行主体的标识之间的映射关系。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:根据目标事务的工作量确定执行目标事务的目标节点服务器的标识以及预估执行主体的标识,其中,预估执行主体为预估的目标节点服务器内执行目标事务所需要的进程或者线程;将目标事务标识以及预估执行主体的标识发送给目标节点服务器,其中,目标节点服务器用于根据预估执行主体的标识生成目标执行主体,并建立预估执行主体的标识与目标执行主体的标识之间的映射关系;根据预估执行主体的标识与目标执行主体的标识之间的映射关系生成第一映射关系,其中,第一映射关系用于指示目标事务标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系;根据第一映射关系生成第二映射关系,其中,第二映射关系用于指示目标事务标识、目标节点服务器的标识、预估执行主体的标识以及目标执行主体的标识之间的映射关系。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在第一执行主体与第二执行主体位于同一个目标节点服务器中的情况下,根据第一映射关系,获取与第一执行主体的标识具有映射关系的第一事务标识以及与第二执行主体的标识具有映射关系的第二事务标识。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在第一执行主体位于第一目标节点服务器中,第二执行主体位于第二目标节点服务器中,第一目标节点服务器的标识与第二目标节点服务器的标识不同的情况下,根据第二映射关系,获取与第一执行主体的标识以及第一目标节点服务器的标识具有映射关系的第一事务标识,以及与第二执行主体的标识以及第二目标节点服务器的标识具有映射关系的第二事务标识。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,获取第二事务识别请求,其中,第二事务识别请求用于请求识别第一协程所执行的第三任务与第二协程所执行的第四任务是否属于同一个事务;响应于第二事务识别请求,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识;在第三事务标识与第四事务标识相同的情况下,识别出第三任务与第四任务属于同一个事务。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在获取第二事务识别请求之前,获取第三映射关系和第四映射关系,其中,第三映射关系为目标节点服务器中存储的、用于指示目标事务的目标事务标识、目标执行主体的标识以及目标协程的标识之间的映射关系,目标执行主体为目标节点服务器内执行目标事务的进程或者线程,目标执行主体包括至少一个目标协程,第四映射关系用于指示目标事务标识、目标节点服务器的标识、目标执行主体的标识以及目标协程的标识之间的映射关系。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在第一协程与第二协程位于同一个目标节点服务器中的情况下,根据第三映射关系,获取与第一协程的标识具有映射关系的第三事务标识以及与第二协程的标识具有映射关系的第四事务标识。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在第一协程位于第三目标节点服务器中,第二协程位于第四目标节点服务器中,第三目标节点服务器的标识与第四目标节点服务器的标识不同的情况下,根据第四映射关系,获取与第一协程的标识以及第三目标节点服务器的标识具有映射关系的第三事务标识,以及与第二协程的标识以及第四目标节点服务器的标识具有映射关系的第四事务标识。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在获取第一事务识别请求之前,或者在第一事务标识与第二事务标识相同的情况下,识别出第一任务与第二任务属于同一个事务之后,获取数据处理请求,其中,数据处理请求用于请求对第五目标节点服务器中的目标数据项进行处理,目标数据项为第五事务已经处理过的数据项,数据处理请求中携带有请求处理目标数据项的第六目标节点服务器的标识以及请求处理目标数据项的第三执行主体的标识;响应于数据处理请求,获取与第六节点服务器的标识以及第三执行主体的标识具有映射关系的第六事务标识;在第六事务标识与第五事务的第五事务标识相同的情况下,确定允许对目标数据项进行处理。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在第六事务标识与第五事务标识不相同的情况下,获取与第五事务标识、第五节点服务器的标识以及目标数据项的标识具有映射关系的锁信息,其中,锁信息用于指示第五事务对目标数据项进行的处理操作;根据锁信息确定是否允许对目标数据项进行处理。

可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求读取目标数据项的情况下,确定允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行读取操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求读取目标数据项的情况下,确定不允许对目标数据项进行处理;在锁信息指示第五事务对目标数据项进行写入操作,且数据处理请求请求写入目标数据项的情况下,确定不允许对目标数据项进行处理。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1