CN115858668A - 分布式事务处理方法、装置、电子装置及存储介质 - Google Patents
分布式事务处理方法、装置、电子装置及存储介质 Download PDFInfo
- Publication number
- CN115858668A CN115858668A CN202211493431.7A CN202211493431A CN115858668A CN 115858668 A CN115858668 A CN 115858668A CN 202211493431 A CN202211493431 A CN 202211493431A CN 115858668 A CN115858668 A CN 115858668A
- Authority
- CN
- China
- Prior art keywords
- transaction
- gtid
- local
- gtm
- issuing
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种分布式事务处理方法、装置、电子装置及存储介质,该方法包括:接收业务端发送的事务下发请求,并生成本地GTID,事务下发请求携带有事务下发参数;基于事务下发参数,计算事务分片,每个事务分片对应一个数据节点DN;在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并在将所述本地GTID上报至全局事务管理节点GTM后,从所述事务下发参数中,获取所述目标事务分片对应的目标事务数据,将所述本地GTID和所述目标事务数据下发至所述目标事务分片对应的第一DN,以使所述第一DN进行事务提交。通过本申请,实现了将本地GTID同步至GTM,无需从GTM申请GTID,减少了跟GTM之间的交互,降低了GTM的压力的有益效果。
Description
技术领域
本申请涉及分布式数据库技术领域,尤其涉及一种分布式事务处理方法、装置、电子装置及存储介质。
背景技术
在分布式数据库领域,为保证事务的一致性,具有不同的解决方案;在相关技术中,基于全局事务管理来保证事务一致性,为较为常见的技术方案,例如:GoldenDB分布式数据库,提出了使用计算节点、数据节点、全局事务管理节点相互配合保证了事务的一致性的方案。
在相关技术中,GoldenDB分布式数据库在事务开始时通过中间组件计算节点(Computer Node,简称CN)从全局事务管理节点(Global Transaction Manager Node,简称GTM)申请全局事务唯一标识(Global Transaction ID,简称GTID),并加入到活跃列表中,然后下发到数据节点(Data Node,简称DN)并记录到每条数据中,在事务结束时释放GTID,并且从活跃列表中移除,从而保证事务一致性。
在相关技术中,为保障分布式事务,按多分片事务方式进行对应的事务处理,但并非所有的事务都需要申请GTID并判断GTID是否活跃,对于只涉及到一个分片的事务(例如:单节点事务),并不需要从GTM申请GTID,当采用分布式事务中所有事务都从GTM获取GTID和活跃列表,会造成GTM压力大、数据传输量、网络延迟的问题。
针对相关技术中分布式事务中所有事务都无差别地从GTM获取GTID及活跃列表,易造成GTM压力大、数据传输量、网络延迟的问题,尚未有较佳技术方案。
发明内容
本申请提供了一种分布式事务处理方法、装置、电子装置及存储介质,以至少解决相关技术中分布式事务中所有事务都无差别地从GTM获取GTID及活跃列表,易造成GTM压力大、数据传输量、网络延迟的问题。
第一方面,本申请提供了一种分布式事务处理方法,应用于中间组件计算节点CN,包括:接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,所述事务下发请求携带有事务下发参数;基于所述事务下发参数,计算事务分片,其中,每个所述事务分片对应一个数据节点DN;在所述事务分片为多个的情况下,从多个所述事务分片中选定当前待下发的目标事务分片,并在将所述本地GTID上报至全局事务管理节点GTM后,从所述事务下发参数中,获取所述目标事务分片对应的目标事务数据,并将所述本地GTID和所述目标事务数据下发至所述目标事务分片对应的第一DN,以使所述第一DN进行事务提交。
第二方面,本申请提供了一种分布式事务处理装置,应用于中间组件计算节点CN,包括:
生成模块,用于接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,所述事务下发请求携带有事务下发参数;
计算模块,用于基于所述事务下发参数,计算事务分片,其中,每个所述事务分片对应一个数据节点DN;
处理模块,用于在所述事务分片为多个的情况下,从多个所述事务分片中选定当前待下发的目标事务分片,并在将所述本地GTID上报至全局事务管理节点GTM后,从所述事务下发参数中,获取所述目标事务分片对应的目标事务数据,并将所述本地GTID和所述目标事务数据下发至所述目标事务分片对应的第一DN,以使所述第一DN进行事务提交。
第三方面,提供了一种电子装置,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的分布式事务处理方法的步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的分布式事务处理方法的步骤。
与相关技术相比,本实施例中提供了分布式事务处理方法、装置、电子装置和存储介质,通过接收业务端发送的事务下发请求,并生成本地GTID,其中,事务下发请求携带有事务下发参数;基于事务下发参数,计算事务分片,其中,每个事务分片对应一个数据节点DN;在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并在将所述本地GTID上报至全局事务管理节点GTM后,从所述事务下发参数中,获取所述目标事务分片对应的目标事务数据,并将所述本地GTID和所述目标事务数据下发至所述目标事务分片对应的第一DN,以使所述第一DN进行事务提交,解决相关技术中分布式事务中所有事务都无差别地从GTM获取GTID及活跃列表,易造成GTM压力大、数据传输量、网络延迟的问题,实现了将本地GTID同步至GTM,无需从GTM申请GTID,减少了跟GTM之间的交互,降低了GTM的压力的有益效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分布式事务处理方法的流程示意图;
图2是根据本申请优选实施例的分布式事务处理方法的流程示意图;
图3是本申请实施例中单节点本地GTID的处理流程;
图4是本申请实施例中多事务分片下发使用本地GTID的处理流程;
图5是本申请实施例提供的一种分布式事务处理装置的结构框图;
图6是本申请实施例的电子装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
图1为本申请实施例提供的一种分布式事务处理方法的流程示意图。如图1所示,本申请实施例提供了一种分布式事务处理方法,应用于中间组件计算节点CN,该方法包括如下步骤:
步骤S101,接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,事务下发请求携带有事务下发参数。
在本实施例中,执行本申请中的分布式事务处理方法的执行主体为分布式数据库中的中间组件计算节点CN,同时,CN通过与业务端(例如:应用程序APP)和全局事务管理节点GTM进行交互,从而完成分布式事务的一致性读。
在本实施例中,事务下发请求携带的事务下发参数包括对应的事务数据和事务数需要下发到的数据节点的节点信息,其中,事务数据包括但不限于结构化查询语言(Structured Query Language,简称SQL)语句,例如:insert写SQL语句、查询select语句。
在本实施例中,生成的本地GTID是unsigned long long 64位整形的字符,占8个字节,分别由时间戳信息Timestamp、数据节点信息CNid及全局变量Seq组成,其中,Timestamp由全局事务管理节点GTM定时推送,以防止时钟回拨,保证每次生成本地GTID的时间都是按同样的标准生成的;CNid由CN自行调用内部接口实现,在分布式数据库***(例如:GoldenDB数据库)中,会存在多个CN,每个CN都可以向GTM推送生成的本地GTID,为区分来自不同的CN,通过在生成本地GTID时加上CNid来实现;Seq为定义的全局变量,用于表征加读写锁,Seq每次是通过worker线程获取的,并通过worker线程先判断GTM是否推送了新的Timastamp,若是,则Seq从1重新开始获取,若否,则在前一次推送的Timastam的基础上往后递增。
步骤S102,基于事务下发参数,计算事务分片,其中,每个事务分片对应一个数据节点DN。
在本实施例中,在申请本地GTID,也就是生成本地GTID后,会进行事务分片的计算,以确定当前业务是单节点事务(单分片事务)还是多分片事务;在本实施例中,计算出的每个事务分片会对应一个下发到的数据节点DN,籍以在将对应的事务数据下发到DN后进行事务的提交。
步骤S103,在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并在将本地GTID上报至全局事务管理节点GTM后,从事务下发参数中,获取目标事务分片对应的目标事务数据,并将本地GTID和目标事务数据下发至目标事务分片对应的第一DN,以使第一DN进行事务提交。
在本实施例中,如果当前业务是多分片事务时,在对目标事务分片进行下发之前,获取从本地生成的本地GTID,当需要对目标事务分片进行下发时,则将本地生成的本地GTID上报给GTM,GTM根据所接收到的本地GTID生成及维护对应的活跃列表,进而使的CN在后续进行GTID是否活跃判断时,能从GTM获取GTM所维护的活跃列表,并基于该活跃列表实现事务是否活跃的判断;同时,CN带上本地GTID给DN,DN在事务上报的时候维护分布式事务对应的GTID,以保证切换后能正常工作。
在本实施例中,在目标事务分片之前的事务分片,也就是对应事务的首个事务分片是不用跟GTM交互的,采用将CN本地生成的本地GTID和对应的事务数据(例如:SQL语句)一起下发给对应的DN;在需要对目标事务分片进行下发之前,将本地生成的本地GTID上报给GTM,当需要对目标事务分片进行下发时,CN带上本地GTID给对应的第一DN,第一DN在事务上报的时候维护分布式事务对应的GTID。
在本实施例中,当DN完成事务提交之后,CN发送消息至GTM,以使GTM在其所维护的活跃列表中删除该GTID,CN发送消息至对应的DN,以使对应的DN在其自身维护的活跃列表中删除该GTID,而且,CN通过异步处理实现通知对应的DN删除其活跃列表中的该GTID;同时,对应的CN进行活跃冲突判断需要从GTM获取所有的活跃列表,然后进行活跃冲突判断。
通过上述步骤S101至步骤S103,采用接收业务端发送的事务下发请求,并生成本地GTID,其中,事务下发请求携带有事务下发参数;基于事务下发参数,计算事务分片,其中,每个事务分片对应一个数据节点DN;在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并在将本地GTID上报至全局事务管理节点GTM后,从事务下发参数中,获取目标事务分片对应的目标事务数据,并将本地GTID和目标事务数据下发至目标事务分片对应的第一DN,以使第一DN进行事务提交,解决相关技术中分布式事务中所有事务都无差别地从GTM获取GTID及活跃列表,易造成GTM压力大、数据传输量、网络延迟的问题,实现了将本地GTID同步至GTM,无需从GTM申请GTID,减少了跟GTM之间的交互,降低了GTM的压力的有益效果。
需要说明的是,在分布式数据库***(例如:GoldenDB数据库)中,所定义的无差别从GTM申请GTID指的是在以携带提示hint标记的方式告知业务该事务是单节点事务的情形下,都默认是多分片事务,从GTM申请GTID,从GTM查询获取活跃列表,从而判断活跃冲突,而在业务为单节点事务时,并不需要从GTM申请GTID并获取活跃列表;在本实施例中,通过生成本地GTID,在当前业务是多分片事务场景的情形时,则在事务数据所对应的SQL语句还未涉及目标事务分片时,获取从CN本地生成的本地GTID,到SQL语句需要下发目标事务分片时,则将本地生成的本地GTID上报给GTM,GTM维护该活跃列表,CN通过带上分布式事务标识给DN,DN在事务提交commit的时候维护分布式事务对应的GTID,保证切换后能正常工作,事务提交之后,CN去GTM上删除活跃事务列表,CN去DN上删除活跃事务列表。
需要进一步说明的是,在当前事务分片下发时,CN是无需与GTM进行交互的;当下发目标事务分片时,无需从GTM申请对应的GTID,只需要将本地生成的本地GTID上报GTM,减少了跟GTM之间的交互,降低了GTM的压力。
在其中一些实施例中,在将本地GTID上报至全局事务管理节点GTM之后,还实施如下步骤:
步骤21、获取GTM所维护的活跃列表,其中,GTM所维护的活跃列表是GTM基于所接收的本地GTID所生成的。
步骤22、在GTM所维护的活跃列表中,检测所上报的本地GTID,并根据检测结果,确定本地GTID是否活跃。
步骤23、基于本地GTID是否活跃,确定对应的事务提交结果。
在本实施例中,获取GTM所维护的活跃列表可以是在从事务下发参数中,获取目标事务分片对应的目标事务数据,并将本地GTID和目标事务数据下发至目标事务分片对应的第一DN之后,第一DN进行事务提交过程中和/或DN将结果上报至CN后,CN通过获取GTM所维护的活跃列表,并在对应的活跃列表中检测本地GTID,并进行本地GTID是否活跃的判断,从而确定事务提交结果,例如:当判断到本地GTID活跃,则表示事务提交进行中;获取GTM所维护的活跃列表还可以是在当前事务对应的多个事务分片完成下发,且所有事务分片对应的DN完成事务上报之后,此时,通过进行活跃判断,确定当前事务下发至对应的DN后,是否完成对应的事务上报,例如:从GTM获取的活跃列表中查询到本地GTID不在活跃列表中了,则可对业务端发送事务上报成功,并返回查询的结果集。通过上述步骤中的获取GTM所维护的活跃列表;在GTM所维护的活跃列表中,检测本地GTID,并根据检测结果,确定本地GTID是否活跃;基于本地GTID是否活跃,确定对应的事务提交结果,实现了本地GTID是否活跃的判断,从而确定事务提交结果。
在其中一些实施例中,在多个事务分片对应的所有DN完成对应的事务提交之后,还实施如下步骤:向GTM发送事务标识删除指令,以使GTM将本地GTID从GTM所维护的活跃列表中移除。
在其中一些实施例中,在多个事务分片对应的所有DN完成对应的事务提交之后,还实施如下步骤:向多个事务分片对应的所有DN发送事务标识删除指令,以使对应的DN将本地GTID从对应的DN所维护的活跃列表中移除。
在其中一些实施例中,事务下发参数包括第一事务数据和第一节点信息,基于事务下发参数,计算事务分片,通过如下步骤实现:
步骤31、在事务下发参数中,检测第一事务数据所对应的第一节点信息,其中,第一节点信息用于表征对应的第一事务数据下发到的DN的目标信息。
在本实施例中,第一并非对事务数据的限定,仅用于表示在不同实施例对应的事务数据;在本实施例中,业务端在发送事务下发请求时,会在事务下发请求携带对应的事务数据,也就是第一事务数据,同时还携带对应的第一事务数据需要下发到的数据节点DN的目标信息,通过对应的目标信息,从而确定对应的第一事务数据下发的地址。
步骤32、根据检测出的第一节点信息,计算得到事务分片及事务分片的个数。
在本实施例中,将第一节点信息对应的数据节点所关联的第一事务数据作为一个对应的事务分片,以此确定出对应的事务分片和事务分片的个数。
通过上述步骤中的在事务下发参数中,检测第一事务数据所对应的第一节点信息,其中,第一节点信息用于表征对应的第一事务数据下发到的DN的目标信息;根据检测出的第一节点信息,计算得到事务分片及事务分片的个数,实现了计算出事务分片,进而确定当前事务是单节点事务还是多分片事务,进而确定对应的事务处理流程。
在其中一些实施例中,生成本地GTID,通过如下步骤实现:
步骤41、接收由GTM推送的时间戳信息,并获取CN对应的目标信息。
步骤42、至少根据时间戳信息和目标信息,生成本地GTID。
通过上述步骤中的接收由GTM推送的时间戳信息,并获取CN对应的目标信息;至少根据时间戳信息和目标信息,生成本地GTID,实现了在CN本地生成本地GTID。
图2是根据本申请优选实施例的分布式事务处理方法的流程图,参考图2,该流程包括如下步骤:
步骤S201,接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,事务下发请求携带有事务下发参数。
步骤S202,基于事务下发参数,计算事务分片,其中,每个事务分片对应一个数据节点DN。
步骤S203,在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并将本地GTID上报至全局事务管理节点GTM后,从事务下发参数中,获取目标事务分片对应的目标事务数据,并将本地GTID和目标事务数据下发至目标事务分片对应的第一DN,以使第一DN进行事务提交。
步骤S204,在事务分片为单个的情况下,将本地GTID和事务下发参数中的第二事务数据下发至事务分片对应的第二DN,以使第二DN进行事务提交。
在本实施例中,对应为单节点场景,可以直接在本地获取GTID,判断活跃冲突也可直接在DN进行。与之前携带hint标记相比,不需要人工判断,也不存在对业务的侵入;与不携带hint标记相比,无需再向GTM申请GTID,判断活跃也无需向GTM查询活跃列表,减少了跟GTM交互,减少了网络延迟,减少了数据传输。
在本实施例中,用户从业务端发送事务下发请求,事务下发请求中携带对应的事务数据(例如:insert写sql语句),CN在本地进行本地GTID生成,并计算下发的事务分片,若计算当前事务对应的事务分片是事务数据只下发单一的事务分片,则将本地生成的本地GTID连同事务数据(SQL语句)一起下发给DN;DN在事务上报的时候维护自己的一份活跃列表,同样将本地GTID放进活跃列表。
通过上述步骤S201至步骤S204中的接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,事务下发请求携带有事务下发参数;
图3是本申请实施例中单节点本地GTID的处理流程,图4是本申请实施例中多事务分片下发使用本地GTID的处理流程,参考图1、图2、图3、图4,以对本申请的分布式事务的处理进行说明如下:
在当前事务为对于单节点事务,如图3所示,业务流程直接简化,无需跟GTM交互,直接将本地生成的GTID连通数据一起下发到DN即可。
在当前事务为多分片事务时,如图4所示,使用本地GTID的处理流程以及活跃冲突的处理流程包括如下:
步骤1、用户从业务端下发insert写语句,申请本地GTID,计算下发的事务分片。
步骤2、若当前的insert写语句只下发事务分片1(参考图4中),则不做其他操作。
步骤3、将生成的本地GTID连同insert写语句一起下发给DN。
步骤4、DN在事务上报的时候维护自身的活跃列表,同样将本地GTID放进活跃列表。
步骤5、若业务端的insert语句在下发到事务分片1并开始要下发事务分片2时,则把当前的本地GTID推送给GTM,GTM维护自身的活跃列表,将GTID放进活跃列表。
步骤6、若出现查询select语句,则先去GTM获取活跃列表,最后在查询结果返回时去活跃列表中查询对应的GTID是否活跃,若活跃则等待,之后再进行活跃重试。
步骤7、所有事务分片对应的DN成功完成事务上报之后,写语句返回insert ok的结果。
步骤8、CN发送消息使GTM从活跃列表移除该对应的GTID。
步骤9、活跃重试查询,此时从GTM获取的活跃列表中查询到GTID不在活跃列表中了,则可对业务端发送select ok,并返回查询的结果集。
步骤10、CN发送消息至DN判断GTID是否在各个分片的活跃列表中,若在则移除。
在本实施例中还提供了一种分布式事务处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本申请实施例提供的一种分布式事务处理装置的结构框图,如图5所示,本申请实施例提供一种分布式事务处理装置,该装置包括:
生成模块51,用于接收业务端发送的事务下发请求,并生成本地GTID,其中,事务下发请求携带有事务下发参数;
计算模块52,与生成模块51耦合连接,用于基于事务下发参数,计算事务分片,其中,每个事务分片对应一个数据节点DN;
处理模块53,与计算模块52耦合连接,用于在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并在将本地GTID上报至全局事务管理节点GTM后,从事务下发参数中,获取目标事务分片对应的目标事务数据,并将本地GTID和目标事务数据下发至目标事务分片对应的第一DN,以使第一DN进行事务提交。
通过本申请实施例的分布式事务处理装置,采用接收业务端发送的事务下发请求,并生成本地GTID,其中,事务下发请求携带有事务下发参数;基于事务下发参数,计算事务分片,其中,每个事务分片对应一个数据节点DN;在事务分片为多个的情况下,从多个事务分片中选定当前待下发的目标事务分片,并在将本地GTID上报至全局事务管理节点GTM后,从事务下发参数中,获取目标事务分片对应的目标事务数据,并将本地GTID和目标事务数据下发至目标事务分片对应的第一DN,以使第一DN进行事务提交,解决相关技术中分布式事务中所有事务都无差别地从GTM获取GTID及活跃列表,易造成GTM压力大、数据传输量、网络延迟的问题,实现了将本地GTID同步至GTM,无需从GTM申请GTID,减少了跟GTM之间的交互,降低了GTM的压力的有益效果。
在其中一些实施例中,在将本地GTID上报至全局事务管理节点GTM之后,该分布式事务处理装置还用于获取GTM所维护的活跃列表,其中,GTM所维护的活跃列表是GTM基于所接收到的本地GTID所生成的;在GTM所维护的活跃列表中,检测本地GTID,并根据检测结果,确定本地GTID是否活跃;基于本地GTID是否活跃,确定对应的事务提交结果。
在其中一些实施例中,在多个事务分片对应的所有DN完成对应的事务提交之后,该分布式事务处理装置还用于向GTM发送事务标识删除指令,以使GTM将本地GTID从GTM所维护的活跃列表中移除。
在其中一些实施例中,在多个事务分片对应的所有DN完成对应的事务提交之后,该分布式事务处理装置还用于向多个事务分片对应的所有DN发送事务标识删除指令,以使对应的DN将本地GTID从对应的DN所维护的活跃列表中移除。
在其中一些实施例中,事务下发参数包括第一事务数据和第一节点信息,该计算模块52进一步包括:
第一检测单元,用于在事务下发参数中,检测第一事务数据所对应的第一节点信息,其中,第一节点信息用于表征对应的第一事务数据下发到的DN的目标信息。
第一计算单元,与第一检测单元耦合连接,用于根据检测出的第一节点信息,计算得到事务分片及事务分片的个数。
在其中一些实施例中,该生成模块51还用于接收由GTM推送的时间戳信息,并获取CN对应的目标信息;至少根据时间戳信息和目标信息,生成本地GTID。
在其中一些实施例中,在事务分片为单个的情况下,该分布式事务处理装置还用于将本地GTID和事务下发参数中的第二事务数据下发至事务分片对应的第二DN,以使第二DN进行事务提交。
图6是本申请实施例的电子装置的结构示意图,如图6所示,本申请实施例提供了一种电子装置,包括处理器61、通信接口62、存储器63和通信总线64,其中,处理器61,通信接口62,存储器63通过通信总线64完成相互间的通信,
存储器63,用于存放计算机程序;
处理器61,用于执行存储器63上所存放的程序时,实现图1中的方法步骤。
该电子装置中的处理实现图1中的方法步骤,所带来的技术效果与上述实施例执行图1中的分布式事务处理方法的技术效果一致,在此不再赘述。
上述电子装置提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子装置与其他设备之间的通信。
存储器可以包括随机存取存储器(RandomAccess Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的分布式事务处理方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的分布式事务处理方法的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种分布式事务处理方法,应用于中间组件计算节点CN,其特征在于,包括:
接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,所述事务下发请求携带有事务下发参数;
基于所述事务下发参数,计算事务分片,其中,每个所述事务分片对应一个数据节点DN;
在所述事务分片为多个的情况下,从多个所述事务分片中选定当前待下发的目标事务分片,并在将所述本地GTID上报至全局事务管理节点GTM后,从所述事务下发参数中,获取所述目标事务分片对应的目标事务数据,并将所述本地GTID和所述目标事务数据下发至所述目标事务分片对应的第一DN,以使所述第一DN进行事务提交。
2.根据权利要求1所述的方法,其特征在于,在将所述本地GTID上报至全局事务管理节点GTM之后,所述方法还包括:
获取所述GTM所维护的活跃列表,其中,所述GTM所维护的活跃列表是所述GTM基于所接收到的所述本地GTID所生成的;
在所述GTM所维护的活跃列表中,检测所上报的所述本地GTID,并根据检测结果,确定所述本地GTID是否活跃;
基于所述本地GTID是否活跃,确定对应的事务提交结果。
3.根据权利要求2所述的方法,其特征在于,在多个所述事务分片对应的所有所述DN完成对应的事务提交之后,所述方法还包括:向所述GTM发送事务标识删除指令,以使所述GTM将所述本地GTID从所述GTM所维护的活跃列表中移除。
4.根据权利要求2所述的方法,其特征在于,在多个所述事务分片对应的所有所述DN完成对应的事务提交之后,所述方法还包括:向多个所述事务分片对应的所有所述DN发送事务标识删除指令,以使对应的所述DN将所述本地GTID从对应的所述DN所维护的活跃列表中移除。
5.根据权利要求1所述的方法,其特征在于,所述事务下发参数包括第一事务数据和第一节点信息,基于所述事务下发参数,计算事务分片,包括:
在所述事务下发参数中,检测所述第一事务数据所对应的所述第一节点信息,其中,所述第一节点信息用于表征对应的所述第一事务数据下发到的所述DN的目标信息;
根据检测出的所述第一节点信息,计算得到所述事务分片及所述事务分片的个数。
6.根据权利要求1所述的方法,其特征在于,生成本地GTID,包括:
接收由所述GTM推送的时间戳信息,并获取所述CN对应的目标信息;
至少根据所述时间戳信息和所述目标信息,生成所述本地GTID。
7.根据权利要求1所述的方法,其特征在于,在所述事务分片为单个的情况下,所述方法还包括:将所述本地GTID和所述事务下发参数中的第二事务数据下发至所述事务分片对应的第二DN,以使所述第二DN进行事务提交。
8.一种分布式事务处理装置,应用于中间组件计算节点CN,其特征在于,包括:
生成模块,用于接收业务端发送的事务下发请求,并生成本地全局事务唯一标识GTID,其中,所述事务下发请求携带有事务下发参数;
计算模块,用于基于所述事务下发参数,计算事务分片,其中,每个所述事务分片对应一个数据节点DN;
处理模块,用于在所述事务分片为多个的情况下,从多个所述事务分片中选定当前待下发的目标事务分片,并在将所述本地GTID上报至全局事务管理节点GTM后,从所述事务下发参数中,获取所述目标事务分片对应的目标事务数据,并将所述本地GTID和所述目标事务数据下发至所述目标事务分片对应的第一DN,以使所述第一DN进行事务提交。
9.一种电子装置,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一项所述的分布式事务处理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的分布式事务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211493431.7A CN115858668A (zh) | 2022-11-25 | 2022-11-25 | 分布式事务处理方法、装置、电子装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211493431.7A CN115858668A (zh) | 2022-11-25 | 2022-11-25 | 分布式事务处理方法、装置、电子装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858668A true CN115858668A (zh) | 2023-03-28 |
Family
ID=85666653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211493431.7A Pending CN115858668A (zh) | 2022-11-25 | 2022-11-25 | 分布式事务处理方法、装置、电子装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858668A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737744A (zh) * | 2023-08-14 | 2023-09-12 | 金篆信科有限责任公司 | 数据库的控制***、方法、计算机设备及存储介质 |
-
2022
- 2022-11-25 CN CN202211493431.7A patent/CN115858668A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737744A (zh) * | 2023-08-14 | 2023-09-12 | 金篆信科有限责任公司 | 数据库的控制***、方法、计算机设备及存储介质 |
CN116737744B (zh) * | 2023-08-14 | 2023-11-24 | 金篆信科有限责任公司 | 数据库的控制***、方法、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10439937B2 (en) | Service addressing in distributed environment | |
CN109284073B (zh) | 数据存储方法、装置、***、服务器、控制节点及介质 | |
CN109815291B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN108255620B (zh) | 一种业务逻辑处理方法、装置、业务服务器及*** | |
CN111427859B (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
CN111104392A (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN110413650B (zh) | 一种业务数据的处理方法、装置、设备和存储介质 | |
CN109213604B (zh) | 一种数据源的管理方法和装置 | |
CN110008041B (zh) | 一种消息处理方法及装置 | |
WO2019076102A1 (zh) | 一种数据回滚方法、***、设备及计算机可读存储介质 | |
CN109684270B (zh) | 数据库归档方法、装置、***、设备及可读存储介质 | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
CN111159160B (zh) | 一种版本回滚方法、装置、电子设备及存储介质 | |
CN111382206B (zh) | 一种数据存储方法及装置 | |
US20130055269A1 (en) | Transaction concurrent execution control system, transaction concurrent execution control method and program | |
CN115858668A (zh) | 分布式事务处理方法、装置、电子装置及存储介质 | |
CN111125240A (zh) | 一种分布式事务实现方法、装置、电子设备及存储介质 | |
WO2020029588A1 (zh) | 数据读取方法、装置及***、分布式*** | |
CN111355765A (zh) | 一种网络请求的处理、发送方法及装置 | |
CN111124751B (zh) | 数据恢复方法及***、数据存储节点、数据库管理节点 | |
CN111930528A (zh) | 消息中间件的消息写入方法、装置、设备及可读存储介质 | |
CN111367694A (zh) | 事件处理方法、服务器及计算机存储介质 | |
CN110727895B (zh) | 一种敏感词发送方法、装置、电子设备及存储介质 | |
CN110955460A (zh) | 一种服务进程启动方法、装置、电子设备和存储介质 | |
CN111309693A (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 |