请求处理方法和装置、电子设备和存储介质与流程

文档序号:26305800发布日期:2021-08-17 13:47阅读:61来源:国知局
本申请涉及数据处理领域,尤其涉及一种请求处理方法和装置、电子设备和存储介质。
背景技术
::对于分布式数据库,分布式事务是弹性的必备特性。在分库分表的场景下,一般会将数据库的一张逻辑表拆分成若干个物理子表。对于某一个分片上,一张逻辑表会对应若干张物理子表,每张物理子表通过后缀序号进行区分。当对逻辑表有一个写请求时,通常情况下会转成一个串行事务来执行。在数据拆分之前,上述更新只有一条sql(structuredquerylanguage,结构化查询语言),而在数据拆分之后,变成了多条sql,增加了多次网络交互成本,导致性能下降。由此可见,相关技术中的请求处理方法,存在由于需要进行多次网络交互导致的网络交互成本高、处理效率低的问题。技术实现要素:本申请提供了一种请求处理方法和装置、电子设备和存储介质,以至少解决相关技术中的请求处理方法存在由于需要进行多次网络交互导致的网络交互成本高、处理效率低的问题。根据本申请实施例的一个方面,提供了一种请求处理方法,包括:接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;在所述第一子表的数量为多张的情况下,生成目标内部事务,其中,所述目标内部事务包含多条子写入请求,一条所述子写入请求用于请求对一张所述第一子表执行所述第一写入操作;执行所述目标内部事务的多条所述子写入请求,以对多张所述第一子表分别执行所述第一写入操作。可选地,在接收所述目标计算节点发送的所述第一写入请求之后,所述方法还包括:对所述第一写入请求进行解析,得到所述第一写入请求所需访问的所述第一子表。可选地,在接收所述目标计算节点发送的所述第一写入请求之后,所述方法还包括:从所述第一写入请求中提取出所述第一子表的目标子表标识,其中,所述目标子表标识是由所述目标计算节点对接收的第二写入请求进行解析得到的,所述第二写入请求用于请求对所述目标逻辑表包含的多张第二子表分别执行第二写入操作,多张所述第二子表包含所述第一子表。可选地,在接收所述目标计算节点发送的所述第一写入请求之前,所述方法还包括:通过目标计算节点接收目标客户端发送的第二写入请求,其中,所述第二写入请求用于请求对所述目标逻辑表包含的多张第二子表执行第二写入操作,多张所述第二子表包含所述第一子表;通过所述目标计算节点确定多张所述第二子表存储在的至少一个分片,其中,每个所述分片上存储有至少一张所述第二子表;通过所述目标计算节点向每个所述分片发送第三写入请求,其中,所述第三写入请求用于请求对每个所述分片上存储的至少一张所述第二子表执行所述第二写入操作,所述第三写入请求包含所述第一写入请求。可选地,执行所述目标内部事务的多条所述子写入请求包括:通过多个目标线程并发执行所述目标内部事务的多条所述子写入请求,其中,一个所述目标线程用于执行一条所述子写入请求。可选地,在执行所述目标内部事务的多条所述子写入请求的过程中,所述方法还包括:按照执行时间的先后顺序串行执行与每条所述子写入请求对应的目标回滚日志的记录操作,其中,该目标回滚日志用于对所述目标内部事务进行回滚。可选地,在执行所述目标内部事务的多条所述子写入请求之后,所述方法还包括:在多条所述子写入请求中的最后一个所述子写入请求执行完成的情况下,提交所述目标内部事务;向所述目标计算节点发送目标执行结果,其中,所述目标执行结果用于指示所述第一写入请求已执行完成。根据本申请实施例的另一个方面,还提供了一种请求处理装置,包括:第一接收单元,用于接收目标计算节点发送的第一写入请求,其中,所述第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;生成单元,用于在所述第一子表的数量为多张的情况下,生成目标内部事务,其中,所述目标内部事务包含多条子写入请求,一条所述子写入请求用于请求对一张所述第一子表执行所述第一写入操作;第一执行单元,用于执行所述目标内部事务的多条所述子写入请求,以对多张所述第一子表分别执行所述第一写入操作。可选地,所述装置还包括:解析单元,用于在接收所述目标计算节点发送的所述第一写入请求之后,对所述第一写入请求进行解析,得到所述第一写入请求所需访问的所述第一子表。可选地,所述装置还包括:提取单元,用于在接收所述目标计算节点发送的所述第一写入请求之后,从所述第一写入请求中提取出所述第一子表的目标子表标识,其中,所述目标子表标识是由所述目标计算节点对接收的第二写入请求进行解析得到的,所述第二写入请求用于请求对所述目标逻辑表包含的多张第二子表分别执行第二写入操作,多张所述第二子表包含所述第一子表。可选地,所述装置还包括:第二接收单元,用于在接收所述目标计算节点发送的所述第一写入请求之前,通过目标计算节点接收目标客户端发送的第二写入请求,其中,所述第二写入请求用于请求对所述目标逻辑表包含的多张第二子表执行第二写入操作,多张所述第二子表包含所述第一子表;确定单元,用于通过所述目标计算节点确定多张所述第二子表存储在的至少一个分片,其中,每个所述分片上存储有至少一张所述第二子表;第一发送单元,用于通过所述目标计算节点向每个所述分片发送第三写入请求,其中,所述第三写入请求用于请求对每个所述分片上存储的至少一张所述第二子表执行所述第二写入操作,所述第三写入请求包含所述第一写入请求。可选地,所述第一执行单元包括:执行模块,用于通过多个目标线程并发执行所述目标内部事务的多条所述子写入请求,其中,一个所述目标线程用于执行一条所述子写入请求。可选地,所述装置还包括:第二执行单元,用于在执行所述目标内部事务的多条所述子写入请求的过程中,按照执行时间的先后顺序串行执行与每条所述子写入请求对应的目标回滚日志的记录操作,其中,所述目标回滚日志用于对所述目标内部事务进行回滚。可选地,所述装置还包括:提交单元,用于在执行所述目标内部事务的多条所述子写入请求之后,在多条所述子写入请求中的最后一个所述子写入请求执行完成的情况下,提交所述目标内部事务;第二发送单元,用于向所述目标计算节点发送目标执行结果,其中,所述目标执行结果用于指示所述第一写入请求已执行完成。根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。在本申请实施例中,采用通过一个写入请求完成对一个分片上的所有子表的写入操作的方式,通过接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作;执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作,由于每个分片仅接收一次写入请求,而不是每个子表均接收依次写入请求,从而可以实现减少网络交互次数的目的,达到了降低网络交互成本、提高请求处理效率的技术效果,进而解决了相关技术中的请求处理方法存在由于需要进行多次网络交互导致的网络交互成本高、处理效率低的问题。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是根据本申请实施例的一种可选的请求处理方法的硬件环境的示意图;图2是根据本申请实施例的一种可选的请求处理方法的流程示意图;图3是根据本申请实施例的一种可选的请求处理方法的示意图;图4是根据本申请实施例的另一种可选的请求处理方法的示意图;图5是根据本申请实施例的另一种可选的请求处理方法的流程示意图;图6是根据本申请实施例的一种可选的请求处理装置的结构框图;图7是根据本申请实施例的一种可选的电子设备的结构框图。具体实施方式为了使本
技术领域
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。可选地,在本实施例中,上述读时间戳的获取方法可以应用于如图1所示的由终端102、计算节点104和存储节点106所构成的硬件环境中。如图1所示,计算节点104可以与终端102和存储节点106分别进行连接。存储节点106中可以存储有业务数据,计算节点104可以用于接收终端102的处理请求,并将处理请求或者与处理请求对应的子请求转发至对应的存储节点106,由存储节点106对所存储的业务数据执行对应的业务操作。上述连接可以是通过网络所进行的连接,也可以是通过数据总线等数据线进行的连接。上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wirelessfidelity,无线保真),蓝牙等。本申请实施例的读时间戳的获取方法可以由存储节点106来执行,也可以由存储节点106和计算节点104共同执行。以由存储节点106来执行本实施例中的读时间戳的获取方法为例,根据本申请实施例的一个方面,提供了一种请求处理方法。图2是根据本申请实施例的一种可选的请求处理方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:步骤s202,接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作。本实施例中的请求处理方法可以应用于分布式数据库中进行数据写入的场景,上述分布式数据库可以是sql(structuredquerylanguage,结构化查询语言)数据库,对于其他类型的分布式数据库,本实施例中的请求处理方法同样适用。分布式数据库可以但不限于包含:位于计算层的ds(dataserver,数据服务器),ds可以是上述计算节点;位于存储层的dd(database,数据库),dd可以是上述存储节点,可以作为分布式数据库中的分片。例如,对于如图3所示的分布式数据库,该分布式数据库可以包含ds(位于计算层)和dd(位于存储层),其中,ds可以用于执行以下操作:接收sql(即,业务请求),sql解析,sql路由,sql分发,dd可以用于执行以下操作:接收分发的sql,对业务数据执行sql,返回sql执行结果。在分库分表的场景下,一般会将数据库的一张逻辑表拆分成若干张物理子表。对于某一个分片上,一张逻辑表可以对应该分片上的若干张物理子表。当ds接收到一个逻辑表的写入请求(即,query),该写入请求可能会涉及到该逻辑表在同一分区上的多张子表。相关技术中,会向该分区发送多个子写入请求(即,sub-query),以分别请求对该分区上的各张子表执行写入操作。比如,对tablea有一个update(更新)请求,需要修改tablea在分区1上的4张子表,该update请求会转成一个串行事务来执行,即:begin;updatetablea_1……updatetablea_2……updatetablea_3……updatetablea_4……commit.在数据拆分之前,上述更新只需要一条sql,即,updatetablea……。而在数据拆分之后,则变成了多条sql,增加了多次网络交互成本,导致性能下降。可选地,在本实施例中,对于一个分片上同一逻辑表的子表的写入操作通过一个写入请求进行指示。例如,目标存储节点(即,目标分片)上可以存储有属于目标逻辑表的至少一张子表。该目标存储节点可以接收目标计算节点发送的第一写入请求(其可以是一条sub_query),该第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作。第一子表可以是目标写入请求所需修改的、目标逻辑表的一张或多张子表。步骤s204,在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作。第一子表的数量可以为一张或多张。如果仅有一张第一子表,目标存储节点可以对该第一子表执行与第一写入请求所对应的写入操作。如果第一子表的数量为多张,也就是,第一写入请求需要对目标存储节点上目标逻辑表的多张子表执行写入操作,目标存储节点可以自动形成一个显式事务,即,目标内部事务。该目标内部事务可以包含多条子写入请求,子写入请求的条数和第一子表的张数是相同的,两者具有一一对应关系,即,多条子写入请求与多张第一子表一一对应,一条子写入请求用于请求对一张第一子表执行第一写入操作。例如,对于上述tablea的update请求,ds会向tablea_1、tablea_2、tablea_3和tablea_4所在的分片发送一条update请求(可以是前述update请求,也可以是新的update请求)。在收到ds发送的update请求之后,该分片可以生成一个内部事务(可以为显示事务),该内部事务可以包含四条子update请求,每条子update请求用于对tablea_1、tablea_2、tablea_3和tablea_4中的一张子表执行写入操作。步骤s206,执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作。在生成目标内部事务之后,目标存储节点可以执行目标内部事务,也就是,执行目标内部事务的多条子写入请求,每条子写入请求在执行时可以对对应的第一子表执行第一写入操作。对于不同的第一子表,对其执行的第一写入操作可以是相同的,也可以是不同的。如果目标内部事务执行结束,也就完成了对所有第一子表的第一写入操作,那么,第一写入请求所需写入的业务数据就写入到各个第一子表。通过上述步骤s202至步骤s206,接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作;执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作,解决了相关技术中的请求处理方法存在由于需要进行多次网络交互导致的网络交互成本高、处理效率低的问题,降低了网络交互成本,提高了请求的处理效率。作为一种可选的实施例,在接收目标计算节点发送的第一写入请求之后,上述方法还包括:s11,对第一写入请求进行解析,得到第一写入请求所需访问的第一子表。可选地,在本实施例中,解析出第一写入请求所需访问的上述第一子表可以是由目标存储节点执行的。第一写入请求可以是目标计算节点不对接收到的写入请求做处理或者做较少的处理之后得到的。目标存储节点可以对接收到的第一写入请求进行解析,确定第一写入请求所需访问的第一子表,也就是,目标存储节点上目标逻辑表需要执行写入操作的子表。通过本实施例,由存储节点对接收到的写入请求进行解析,可以减少计算节点的操作,同时减少对于写入请求的修改,提高请求处理的兼容性。作为一种可选的实施例,在接收目标计算节点发送的第一写入请求之后,上述方法还包括:s21,从第一写入请求中提取出第一子表的目标子表标识,其中,目标子表标识是由目标计算节点对接收的第二写入请求进行解析得到的,第二写入请求用于请求对目标逻辑表包含的多张第二子表分别执行第二写入操作,多张第二子表包含第一子表。可选地,在本实施例中,解析出第一写入请求所需访问的上述第一子表可以是由目标计算节点执行的。目标计算节点在对接收的第二写入请求进行解析之后,可以得到第一子表的目标子表标识,并将目标子表标识携带在第一写入请求中。第二写入请求可以是由目标客户端发送,其可以用于请求对目标逻辑表包含的多张第二子表分别执行第二写入操作。多张第二子表可以包含第一子表。对应地,对第二子表执行的第二写入操作为上述第一写入操作。第一写入请求中携带的可以是所有第二子表的子表标识,也可以携带第一子表的目标子表标识。目标存储节点可以接收目标计算节点发送的上述第一写入请求。如果第一写入请求中携带的所有第二子表的子表标识,目标存储节点可以存储有本分片上的物理子表和逻辑表的映射关系,从而可以从第二子表的子表标识中确定出第一子表的目标子表标识。如果第一写入请求中仅携带的第一子表的目标子表标识,目标存储节点可以直接从第一写入请求中提取出目标子表标识。由于计算节点需要判断接收到的写入请求所需访问的子表所在的分片,从而向分片发送写入请求或者子写入请求,因此,通过接入请求直接携带子表标识的方式,可以减少节点的处理操作,减少计算资源的消耗。作为一种可选的实施例,在接收目标计算节点发送的第一写入请求之前,上述方法还包括:s31,通过目标计算节点接收目标客户端发送的第二写入请求,其中,第二写入请求用于请求对目标逻辑表包含的多张第二子表执行第二写入操作,多张第二子表包含第一子表;s32,通过目标计算节点确定多张第二子表存储在的至少一个分片,其中,每个分片上存储有至少一张第二子表;s33,通过目标计算节点向每个分片发送第三写入请求,其中,第三写入请求用于请求对每个分片上存储的至少一张第二子表执行第二写入操作,第三写入请求包含第一写入请求。第一写入请求可以是目标计算节点在接收到目标客户端的第二写入请求之后生成并发送的。在目标计算节点侧,目标计算节点可以通过网络与目标客户端相连,并通过两者之间的网络连接接收目标客户端发送的第二写入请求,该第二写入请求用于请求对目标逻辑表执行写入操作。由于目标逻辑表是一张逻辑表,其可以包含多张子表,该第二写入请求实际用于请求对目标逻辑表包含的多张第二子表执行写入操作。多张第二子表可能存储在同一个分片上,也可能存储在多个分片上。目标计算节点可以确定多张第二子表所存储在的至少一个分片,每个分片上存储有至少一张第二子表。这里,至少一个分片包含了上述目标分片,也即,目标存储分片。目标计算节点可以分别向每个分片发送第三写入请求,以请求每个分片对其上存储的至少一张第二子表执行第二写入操作。第三写入请求包含上述的第一写入请求,对应地,多张第二子表包含上述第一子表。第三写入请求可以是直接转发的第二写入请求,或者,对第二写入请求执行一些简单处理之后得到的写入请求。第三写入请求也可以是重新生成的写入请求,每个第三写入请求中可以携带有所有的第二子表的子表标识,或者,携带有对应分片上的第二子表的子表标识,本实施例中对此不作限定。通过本实施例,通过计算节点向每个分片上发送一条写入请求来请求对对应分片上所需操作的所有子表执行写入操作,可以减少计算节点与各个分片之间的网络交互次数,节省网络开销。作为一种可选的实施例,执行目标内部事务的多条子写入请求包括:s41,通过多个目标线程并发执行目标内部事务的多条子写入请求,其中,一个目标线程用于执行一条子写入请求。在目标内部事务内部可以串行执行每张第一子表的写入操作。可选地,在目标内部事务内部也可以通过多线程并发执行每张第一子表的写入操作,即,目标计算节点可以通过多个目标线程并发执行目标内部事务的多条子写入请求,每个目标线程可以用于执行一条子写入请求。例如,存储节点可以按照物理子表的粒度把业务sql(第一写入请求的一种示例)拆解成属于同一个内部事务(即,目标内部事务)的多条子query(多条子写入请求的一种示例)。在数据库中,多张物理子表的存储方式为采用多个物理文件进行存储,对于每张物理子表,都有自己的b+树的数据组织结构。在事务内部,多条子query可以并行执行,可以包括但不限于以下至少之一:数据查找,page锁(即,数据页锁),行锁,redolog(即,重做日志)的生成和写入。作为一种示例,可以通过多线程并行通过b+树进行的叶子节点(即,数据页)查找,行扫描页面数据并进行修改,并行进行wallog(预写式日志)的生成和写入。通过本实施例,通过多线程并发执行多张子表的写入操作,可以提高写入请求的处理效率。作为一种可选的实施例,在执行目标内部事务的多条子写入请求的过程中,上述方法还包括:s51,按照执行时间的先后顺序串行执行与每条子写入请求对应的目标回滚日志的记录操作,其中,目标回滚日志用于对目标内部事务进行回滚。为了保证事务的acid属性(至少保证原子性),可以记录目标内部事务的回滚日志,该回滚日志可以用于对目标内部事务进行回滚,可以是事务变更的之前的数据内容(即,undo日志)。上述acid属性是指:atomicity,原子性;consistency,一致性;isolation,隔离性;durability,耐久性。由于回滚日志(例如,undolog)按照事务分配,而多条子写入请求(例如,多个子query)属于同一个事务,属于同一个回滚段,因此在记录回滚日志的逻辑中,需要串行执行。目标存储节点可以串行执行与每条子写入请求对应的目标回滚日志的记录操作,例如,按照执行时间的先后顺序串行执行上述记录操作。通过本实施例,通过串行记录各个子写入请求对应的回滚日志,可以保证事务执行的原子性(即,保证一个事务内的多条操作要么都成功,要么都失败),提高事务执行的合理性。作为一种可选的实施例,在执行目标内部事务的多条子写入请求之后,上述方法还包括:s61,在多条子写入请求中的最后一个子写入请求执行完成的情况下,提交目标内部事务;s62,向目标计算节点发送目标执行结果,其中,目标执行结果用于指示第一写入请求已执行完成。在本实施例中,当最后一个子写入请求(例如,子query)执行完时,可以自动提交内部事务,并返回业务结果。这里,写入请求是一个业务请求(例如,业务sql),因此,向计算节点返回的是该业务请求的执行结果。对于目标内部事务,在多条子写入请求中的最后一个子写入请求执行完成的情况下,目标存储节点可以自动提交上述目标内部事务,并向目标计算节点发送第一写入请求的执行结果,即,目标执行结果,该目标执行结果用于指示第一写入请求已执行完成。可选地,在本实施例中,对于目标计算节点,目标计算节点可以从各个分片获取各个第三写入请求的执行结果,从而确定出第二写入请求的执行结果,并将第二写入请求的执行结果发送给目标客户端。通过本实施例,在最后一个子写入请求执行完时自动提交内部事务,并向计算节点返回写入请求的执行结果,可以提高写入请求的执行结果返回的及时性。下面结合可选示例对本申请实施例中的请求处理方法进行解释说明。在本示例中,分布式数据库为sql数据库,使用的关系型数据库管理系统是mysql,第一写入请求为一条sql,多条子写入请求为多条子query。本示例中的请求处理方法是一种基于子表拆分的高性能写入方案,存储节点可以按照物理子表粒度把业务sql拆解成属于同一个内部事务的多条子query。在mysql内部,将多子表的写入操作自动形成一个显式事务,而在事务内部,通过多线程并发执行每个子表的写入操作。结合如图4和图5,本可选示例中的请求处理方法的流程可以包括以下步骤:步骤s502,存储节点生成内部事务。在存储节点中可以存储本分片的物理子表和逻辑表的映射关系。当存储节点接收到一条sql(例如,updatetableasetxxx),在sql解析之后,判断该条sql是否要访问本分片的多张子表。当需要访问多张子表时,存储节点可以生产一个内部事务。步骤s504,存储节点并发执行物理子表的写请求。存储节点可以按照物理子表粒度,把业务sql拆解成属于同一个内部事务的多条子query。多条子query可以通过多线程并行执行。由于多个子query属于同一个事务,属于同一个回滚段,因此,可以串行执行记录undolog的逻辑。当多条子query中的最后一条子query执行完之后,可以自动提交前述内部事务,并返回业务结果。通过本实施例,通过内部事务加并行执行子query的方式,在拆库拆表的场景下,既保证了原有sql执行的原子性,又不引入额外的网络开销,同时可以大幅减少性能开销。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom(read-onlymemory,只读存储器)/ram(randomaccessmemory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。根据本申请实施例的另一个方面,还提供了一种用于实施上述请求处理方法的请求处理装置。图6是根据本申请实施例的一种可选的请求处理装置的结构框图,如图6所示,该装置可以包括:第一接收单元602,用于接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;生成单元604,与第一接收单元602相连,用于在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作;第一执行单元606,与生成单元604相连,用于执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作。需要说明的是,该实施例中的第一接收单元602可以用于执行上述步骤s202,该实施例中的生成单元604可以用于执行上述步骤s204,该实施例中的第一执行单元606可以用于执行上述步骤s206。通过上述模块,接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作;执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作,解决了相关技术中的请求处理方法存在由于需要进行多次网络交互导致的网络交互成本高、处理效率低的问题,降低了网络交互成本,提高了请求的处理效率。作为一种可选的实施例,上述装置还包括:解析单元,用于在接收目标计算节点发送的第一写入请求之后,对第一写入请求进行解析,得到第一写入请求所需访问的第一子表。作为一种可选的实施例,上述装置还包括:提取单元,用于在接收目标计算节点发送的第一写入请求之后,从第一写入请求中提取出第一子表的目标子表标识,其中,目标子表标识是由目标计算节点对接收的第二写入请求进行解析得到的,第二写入请求用于请求对目标逻辑表包含的多张第二子表分别执行第二写入操作,多张第二子表包含第一子表。作为一种可选的实施例,上述装置还包括:第二接收单元,用于在接收目标计算节点发送的第一写入请求之前,通过目标计算节点接收目标客户端发送的第二写入请求,其中,第二写入请求用于请求对目标逻辑表包含的多张第二子表执行第二写入操作,多张第二子表包含第一子表;确定单元,用于通过目标计算节点确定多张第二子表存储在的至少一个分片,其中,每个分片上存储有至少一张第二子表;第一发送单元,用于通过目标计算节点向每个分片发送第三写入请求,其中,第三写入请求用于请求对每个分片上存储的至少一张第二子表执行第二写入操作,第三写入请求包含第一写入请求。作为一种可选的实施例,第一执行单元606包括:执行模块,用于通过多个目标线程并发执行目标内部事务的多条子写入请求,其中,一个目标线程用于执行一条子写入请求。作为一种可选的实施例,上述装置还包括:第二执行单元,用于在执行目标内部事务的多条子写入请求的过程中,按照执行时间的先后顺序串行执行与每条子写入请求对应的目标回滚日志的记录操作,其中,目标回滚日志用于对目标内部事务进行回滚。作为一种可选的实施例,上述装置还包括:提交单元,用于在执行目标内部事务的多条子写入请求之后,在多条子写入请求中的最后一个子写入请求执行完成的情况下,提交目标内部事务;第二发送单元,用于向目标计算节点发送目标执行结果,其中,目标执行结果用于指示第一写入请求已执行完成。此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。根据本申请实施例的又一个方面,还提供了一种用于实施上述请求处理方法的电子设备,该电子设备可以是服务器、终端、或者其组合。图7是根据本申请实施例的一种可选的电子设备的结构框图,如图7所示,包括处理器702、通信接口704、存储器706和通信总线708,其中,处理器702、通信接口704和存储器706通过通信总线708完成相互间的通信,其中,存储器706,用于存储计算机程序;处理器702,用于执行存储器706上所存放的计算机程序时,实现如下步骤:接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作;执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作。可选地,在本实施例中,上述的通信总线可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线、或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。存储器可以包括ram,也可以包括非易失性存储器(non-volatilememory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。作为一种示例,上述存储器706中可以但不限于包括上述请求处理装置中的第一接收单元602、生成单元604以及第一执行单元606。此外,还可以包括但不限于上述请求处理装置中的其他模块单元,本示例中不再赘述。上述处理器可以是通用处理器,可以包含但不限于:cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。本领域普通技术人员可以理解,图7所示的结构仅为示意,实施上述请求处理方法的设备可以是终端设备,该终端设备可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图7其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示的不同的配置。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、rom、ram、磁盘或光盘等。根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项请求处理方法的程序代码。可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:接收目标计算节点发送的第一写入请求,其中,第一写入请求用于请求对目标逻辑表包含的第一子表执行第一写入操作;在第一子表的数量为多张的情况下,生成目标内部事务,其中,目标内部事务包含多条子写入请求,一条子写入请求用于请求对一张第一子表执行第一写入操作;执行目标内部事务的多条子写入请求,以对多张第一子表分别执行第一写入操作。可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上所述仅是本申请的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1