数据处理方法系统及装置

文档序号:195868 发布日期:2021-11-02 浏览:18次 >En<

阅读说明:本技术 数据处理方法系统及装置 (Data processing method, system and device ) 是由 方璟 章颖强 王波 于 2021-06-24 设计创作,主要内容包括:本说明书实施例提供数据处理方法、系统及装置,其中所述数据处理方法包括:获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区,基于所述待存储数据生成第一通信报文,调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区,接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。(The embodiment of the specification provides a data processing method, a system and a device, wherein the data processing method comprises the following steps: the method comprises the steps of obtaining data to be stored, inquiring network connection in an idle state in a network connection pool, determining a data buffer area corresponding to a storage address of the network connection in a central node, generating a first communication message based on the data to be stored, calling a remote direct memory access module to write the first communication message into the data buffer area through the network connection, receiving a second communication message returned by the central node, analyzing the first communication message by the central node, and processing and generating the data to be stored obtained through analysis.)

数据处理方法系统及装置

技术领域

本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,以及一种计算机可读存储介质。

背景技术

随着信息技术的快速发展,在很多领域(例如,金融、通信、生产、交通等等)的网络系统中,通常都会有大量服务器节点参与项目执行。而为了保证正常的项目执行,通常需要在分布式数据库的各个服务器节点之间保持数据的一致性和精确性。

在这种情况下,传统的TCP(Transmission Control Protocol,传输控制协议)/IP技术,在数据处理过程中,需要经过应用服务器的操作系统及其它软件层,占用大量服务器资源和内存总线带宽,即利用TCP进行数据传输的过程中,需占用数据接收方的服务器节点的大量中央处理器资源,给数据接收方的服务器节点的CPU和内存造成沉重负担,尤其是网络带宽、处理器速度与内存带宽的不匹配性,从而会导致网络通信延迟。

发明内容

有鉴于此,本说明书实施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种数据处理方法,应用于计算节点,包括:

获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区;

基于所述待存储数据生成第一通信报文;

调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

可选地,所述在网络连接池中查询处于空闲状态的网络连接之后,还包括:

确定与所述网络连接的第一存储地址对应的第一数据缓冲区,并确定中心节点中与所述网络连接的第二存储地址对应的第二数据缓冲区;

相应的,所述调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区,包括:

将所述第一通信报文写入所述第一数据缓冲区,并调用远程直接内存访问模块通过所述网络连接,将所述第一数据缓冲区中的所述第一通信报文写入所述第二数据缓冲区。

可选地,所述在网络连接池中查询处于空闲状态的网络连接之前,还包括:

向中心节点发起网络连接请求,所述网络连接请求中包含至少一个第一数据缓冲区的第一存储地址;

接收所述中心节点返回的网络连接建立结果,所述网络连接建立结果中包含所述中心节点中至少一个第二数据缓冲区的第二存储地址以及访问权限信息;

将所述网络连接建立结果放入所述网络连接池,并保存所述网络连接建立结果中数据缓冲区的存储地址的对应关系;其中,所述对应关系用于基于所述网络连接向所述中心节点发送第一通信报文。

可选地,所述基于所述待存储数据生成第一通信报文之后,还包括:

根据分布式网络中计算节点的数量确定计算节点与中心节点间的数据传输模式;或,

根据分布式网络中计算节点与中心节点间网络连接的数量,确定计算节点与所述中心节点间的数据传输模式。

可选地,所述根据分布式网络中计算节点的数量确定计算节点与中心节点间的数据传输模式,包括:

判断分布式网络中计算节点的数量是否大于等于第一预设数量阈值;

若否,则确定计算节点与中心节点间的数据传输模式为单边传输模式,执行所述在网络连接池中查询处于空闲状态的网络连接的步骤;

若是,则确定计算节点与中心节点间的数据传输模式为双边传输模式。

可选地,所述基于所述待存储数据生成第一通信报文,包括:

获取所述第一数据缓冲区的访问权限信息,将所述访问权限信息以及所述第一存储地址作为第一通信报文的报文头部信息;

将所述待存储数据进行封装,并将封装结果作为所述第一通信报文的报文体;以及,

将第一通信报文的通知标志置为1,以生成所述第一通信报文。

可选地,所述接收所述中心节点返回的第二通信报文,包括:

接收中心节点通过调用远程直接内存访问模块在数据缓冲区写入的第二通信报文;

在检测到所述第二通信报文的通知标志变为1的情况下,对所述第二通信报文的报文体进行解析,并将解析结果进行存储。

可选地,所述数据处理方法,还包括:

调用远程直接内存访问模块根据所述中心节点中数据缓冲区对应的存储地址,从所述数据缓冲区读取对所述待存储数据进行处理生成的数据处理结果。

根据本说明书实施例的第二方面,提供了一种数据处理系统,包括:

中心节点以及至少一个计算节点;

所述至少一个计算节点,被配置为获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定所述中心节点中与所述网络连接的存储地址对应的数据缓冲区,基于所述待存储数据生成第一通信报文,调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

所述中心节点,被配置为对所述第一通信报文进行解析,对解析获得的所述待存储数据进行处理,基于处理结果生成第二通信报文并返回;

所述至少一个计算节点,被配置为接收所述第二通信报文。

可选地,所述中心节点,还被配置为:

调用主线程建立与所述至少一个计算节点间的网络连接;

将网络连接建立结果发送至工作线程,并调用所述工作线程对所述网络连接建立结果中的至少一个网络连接进行检测;

在检测到所述至少一个网络连接的存储地址对应的数据缓冲区中,存在第一通信报文的通知标志置为1,则对所述第一通信报文进行解析。

可选地,所述中心节点,还被配置为:

对所述第一通信报文进行解析,对解析获得的所述待存储数据进行处理;

基于处理结果生成第二通信报文;

将第二通信报文的通知标志置为1,并调用远程直接内存访问模块将所述第二通信报文写入所述至少一个计算节点的数据缓冲区。

可选地,所述中心节点,还被配置为:

接收所述至少一个计算节点针对共享数据提交的数据访问请求;

根据所述共享数据的全局锁状态,确定所述共享数据未被访问的情况下,为所述至少一个计算节点分配针对所述共享数据的全局锁,以允许所述至少一个计算节点对所述共享数据进行访问。

根据本说明书实施例的第三方面,提供了一种数据处理装置,包括:

获取模块,被配置为获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区;

生成模块,被配置为基于所述待存储数据生成第一通信报文;

写入模块,被配置为调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

接收模块,被配置为接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

根据本说明书实施例的第四方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:

获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区;

基于所述待存储数据生成第一通信报文;

调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据处理方法的步骤。

本说明书一个实施例通过获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区,基于所述待存储数据生成第一通信报文,调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区,接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

本说明书实施例中,计算节点利用远端直接内存访问模块(RDMA)将待存储数据传输至中心节点的数据缓冲区,由于RDMA可以将待存储数据直接从计算节点的数据缓冲区快速传输到中心节点的数据缓冲区中,在数据传输的整个过程中无需中心节点CPU的参与,因此,有利于减少中心节点的CPU在数据传输过程中的消耗,从而有利于提升系统的处理性能,并有利于减少网络通信延迟。

附图说明

图1是本说明书一个实施例提供的一种数据处理方法的处理流程图;

图2是本说明书一个实施例提供的第一种数据处理过程的示意图;

图3(a)是本说明书一个实施例提供的第一通信报文的示意图;

图3(b)是本说明书一个实施例提供的第二通信报文的示意图;

图4是本说明书一个实施例提供的第二种数据处理过程的示意图;

图5是本说明书一个实施例提供的一种数据处理系统的示意图;

图6是本说明书一个实施例提供的一种数据处理方法的交互示意图;

图7是本说明书一个实施例提供的一种数据处理装置的示意图;

图8是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

RDMA:在数据中心领域,远程直接内存访问(英语:remote direct memoryaccess,RDMA)是一种绕过远程主机操作系统内核访问其内存中数据的技术,由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。

在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

目前的应用程序在采用TCP/Socket进行数据传输的时候,服务器的CPU需要将数据从用户态拷贝到内核协议栈进行处理,然后再拷贝到网卡驱动程序中,最后网卡硬件通过DMA的方式从网卡驱动程序获取数据,然后网卡对数据处理后发送到网络上。数据到达目的节点的网卡硬件之后,还要经过一系列的反向拷贝操作,才能到达目标应用的内存中。可见通过TCP进行数据传输的过程中,服务器的CPU做了大量的内存拷贝,这会给用于接收数据的服务器的CPU和内存造成沉重负担,尤其是网络带宽、处理器速度与内存带宽的不匹配性,从而会导致网络通信延迟。

另外,目前部分分布式网络中,可能仅存在一个数据读写节点和多个数据只读节点,只能在一个数据读写节点上进行数据写入,在待写入数据较多的情况下,会影响写入性能,因此,对于这种情况,其中一种改进方式就是,在分布式网络中设置多个读写节点,但这种情况下,为了保证分布式数据库中,不同读写节点写入的数据能够实现同步,本说明书实施例在分布式网络中设置了中心节点,以将多个读写节点所写入的数据传输至中心节点,再由中心节点将这些数据来同步至其他的读写节点或只读节点。

具体的,本说明书的一个实施例提供由计算节点(读写节点)向中心节点进行数据传输的具体处理方式,即在分布式网络的每个计算节点需要和中心节点间建立网络连接,并且这些网络连接建立之后,先放在网络连接池中,在需要进行数据传输的过程中,从网络连接池中查询空闲的网络连接,然后在利用远程直接内存访问技术,通过该网络连接将待存储数据传输至中心节点的数据缓存中心。

因此,本说明书实施例将RDMA技术结合在分布式网络的服务器节点间的数据传输过程中,实现一种基于RDMA的数据处理方法。有利于减少在计算节点与中心节点间进行数据传输的过程中对中心节点CPU的干扰,从而降低中心节点的CPU在数据传输过程中的消耗,提升系统的处理性能,并有利于减少网络通信延迟。

图1示出了根据本说明书一个实施例提供的一种数据处理方法的处理流程图,包括步骤102至步骤108。

步骤102,获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区。

具体的,所述待存储数据,即需要由计算节点向中心节点传输的数据;所述网络连接池中包含多个网络连接,并且所述网络连接是在计算节点与中心节点的数据缓冲区之间建立的。

本说明书实施例提供的数据处理方法,应用于分布式网络的计算节点,所述分布式网络中包含一个中心节点以及多个计算节点,所述计算节点即为所述多个计算节点之一,在进行数据传输之前,可分别建立中心节点与多个计算节点之间的网络连接(建立中心节点中数据缓冲区的存储地址与计算节点中数据缓冲区的存储地址间的网络连接),并将建立的网络连接放入网络连接池。

在计算节点中存在待同步的数据(待存储数据)的情况下,即可从网络连接池中查询空闲的网络连接,并确定中心节点中与该空闲的网络连接的存储地址对应的数据缓冲区,然后再利用远程直接内存访问技术(RDMA),通过该网络连接将待存储数据传输至中心节点的数据缓冲区。

具体实施时,在网络连接池中查询处于空闲状态的网络连接之前,建立计算节点与中心节点间的网络连接的过程,具体可通过以下方式实现:

向中心节点发起网络连接请求,所述网络连接请求中包含至少一个第一数据缓冲区的第一存储地址;

接收所述中心节点返回的网络连接建立结果,所述网络连接建立结果中包含所述中心节点中至少一个第二数据缓冲区的第二存储地址以及访问权限信息;

将所述网络连接建立结果放入所述网络连接池,并保存所述网络连接建立结果中数据缓冲区的存储地址的对应关系;其中,所述对应关系用于基于所述网络连接向所述中心节点发送第一通信报文。

具体的,在建立计算节点与中心节点间的网络连接的过程中,可预先在中心节点和计算节点中注册多个固定大小的缓存(persistent buffer,持久化缓冲区),作为传递数据的数据缓冲区。中心节点和计算节点的数据缓冲区一一对应,并且在中心节点和计算节点的数据缓冲区间建立网络连接时,中心节点和计算节点可分别通过自身RDMA的、用于存储私有数据的数据缓冲区,将各自新注册的数据缓冲区的存储地址和访问权限信息传递给对方,因此,在计算节点与中心节点二者建立数据缓冲区间的网络连接之后,双方均可直接通过远程内存直接访问技术远程写对方的数据缓冲区中的数据。

实际应用中,在计算节点和中心节点中注册数据缓冲区后,可由计算节点向中心节点发起网络连接请求,然后由中心节点响应于该网络连接请求,建立中心节点中数据缓冲区与计算节点中数据缓冲区间的网络连接,并向计算节点返回网络连接建立结果;计算节点接收该网络连接建立结果后,将其放入网络连接池,并保存其包含的数据缓冲区的存储地址的对应关系,以在有需求的情况下,通过建立的网络连接在计算节点和中心节点间进行数据传输。

本说明书实施例提供的第一种数据处理过程的示意图如图2所示,图2中示出了计算节点的网络连接池,该网络连接池中包含计算节点的各数据缓冲区与中心节点间各数据缓冲区间的网络连接。在计算节点中存在待存储数据的情况下,即可从该网络连接池中查询空闲的网络连接,并利用该空闲的网路连接进行数据传输。

本说明书实施例中,计算节点通过网络连接池管理RDMA网络连接,预先建立计算节点与中心节点间的网络连接并将其保存在网络连接池中,需要和中心节点通信(传输数据)时,则从网络连接池中获取网络连接,结束通信后则将网络连接放回网络连接池中,从而避免频繁创建/消耗网络连接的开销。

步骤104,基于所述待存储数据生成第一通信报文。

具体实施时,基于所述待存储数据生成第一通信报文,具体可通过以下方式实现:

获取所述第一数据缓冲区的访问权限信息,将所述访问权限信息以及所述第一存储地址作为第一通信报文的报文头部信息;

将所述待存储数据进行封装,并将封装结果作为所述第一通信报文的报文体;以及,

将第一通信报文的通知标志置为1,以生成所述第一通信报文。

具体的,在采用远程内存直接访问技术由计算节点向中心节点传输数据的过程中,可采用单边操作进行数据传输。由于单边操作过程中,中心节点需明确待存储数据存储在计算节点的哪个数据缓冲区,即需要确定待存储数据所在的数据缓冲区的存储地址,以及该数据缓冲区的访问权限信息,因此,计算节点在向中心节点传输第一通信报文时,该第一通信报文即需包含这些信息,具体可将这些信息封装到第一通信报文,并作为第一通信报文的报文头部信息;另外,所述待存储数据在进行传输时,同样需以报文的形式进行传输,因此,可对所述待存储数据进行封装,并将封装结果作为第一通信报文的报文体。

本说明书实施例提供的第一通信报文的示意图如图3(a)所示,第一通信报文即请求报文,该报文的报文头(Req Header)中包含的信息即为计算节点中待存储数据所在的数据缓冲区的存储地址,以及该数据缓冲区的访问权限信息;报文体(Req Body)中包含的信息即为待存储数据;另外,所述第一通信报文中还包含通知标志(Notify Flag),计算节点将第一通信报文远程写到中心节点的数据缓冲区时,会将这个通知标志设置为1,并将第一通信报文传输至中心节点。

另外,基于所述待存储数据生成第一通信报文之后,还包括:

根据分布式网络中计算节点的数量确定计算节点与中心节点间的数据传输模式;或,

根据分布式网络中计算节点与中心节点间网络连接的数量,确定计算节点与所述中心节点间的数据传输模式。

进一步的,根据分布式网络中计算节点的数量确定计算节点与中心节点间的数据传输模式,具体可通过以下方式实现:

判断分布式网络中计算节点的数量是否大于等于第一预设数量阈值;

若否,则确定计算节点与中心节点间的数据传输模式为单边传输模式,执行所述在网络连接池中查询处于空闲状态的网络连接的步骤;

若是,则确定计算节点与中心节点间的数据传输模式为双边传输模式。

具体的,传统的RDMA网络库(例如XRDMA)一般使用双边传输接口(send/receivetwo-side API)实现远程过程调用(RPC,Remote Procedure Call Protocol),由于双边传输需要通信双方的参与,并且receive要先于send执行,这样对方才能发送数据,该过程和传统通信相似,中心节点管理和发布RDMA描述符会产生额外的开销,这进一步降低了通信性能,因此,双边传输的传输速率本身比单边传输慢。

而本说明书提供的一个实施例中,计算节点与中心节点间可采用单边操作进行远程写(Remote write),这一写过程由计算节点来执行,中心节点不需要CPU参与。计算节点将待存储数据从本地数据缓冲区中直接传输至中心节点的连续数据缓冲区中。

而在实际应用中,使用单边操作进行远程写可实现低延迟/高吞吐数据处理模式,适用于分布式网络中计算节点较少,对系统吞吐要求比较高的场景;对于分布式网络中计算节点较多或者计算节点与中心节点间网络连接数较多的场景,则可使用双边操作实现高扩展模式。

因此,具体可根据分布式网络中计算节点的数量确定计算节点与中心节点间的数据传输模式,在计算节点的数量小于第一预设数量阈值的情况下,则确定使用单边传输模式进行数据传输;在计算节点的数量大于等于第一预设数量阈值的情况下,则确定使用双边传输模式;或者,还可根据分布式网络中计算节点与中心节点间网络连接的数量,确定计算节点与所述中心节点间的数据传输模式,在计算节点与中心节点间网络连接数较多的情况下,则确定使用双边传输模式进行数据传输。

本说明书实施例通过混合使用单边传输模式(one-side)和双边传输模式(two-side)实现数据传输和处理,同时满足低延迟/高吞吐模式和大量计算节点的高扩展模式。具体即,本说明书实施例可以同时支持单边传输和双边传输这两种模式,对于当计算节点较少时,所有的RPC通信均可使用单边传输模式,使得节点间通信延迟尽量小,保证吞吐。随着计算节点增加或计算节点到中心节点的网络连接数增加,节点中工作线程进行轮询的效率会变低,分布式网络整体吞吐可能下降,此时可以将一部分不需要频繁和中心节点交互的网络连接改为双边传输通信模式,而需频繁与中心节点进行通信的网络连接仍然采用单边传输模式,从而兼顾高吞吐和高扩展两种需求。

步骤106,调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区。

具体的,基于待存储数据生成第一通信报文后,即可调用远程直接访问内存模块(RDMA)将所述第一通信报文写入中心节点中的、与前述网络连接的存储地址对应的数据缓冲区。

具体实施时,在网络连接池中查询处于空闲状态的网络连接之后,可确定与所述网络连接的第一存储地址对应的第一数据缓冲区,并确定中心节点中与所述网络连接的第二存储地址对应的第二数据缓冲区;

相应的,利用网络连接传输待存储数据的第一通信报文的过程具体如下:

将所述第一通信报文写入所述第一数据缓冲区,并调用远程直接内存访问模块通过所述网络连接,将所述第一数据缓冲区中的所述第一通信报文写入所述第二数据缓冲区。

具体的,本说明书实施例利用RDMA技术可以直接将待存储数据的第一通信报文从计算节点的数据缓冲区通过网络连接传送到另一台中心节点的数据缓冲区,具体即先将第一通信报文通过DMA方式拷贝到计算节点的网卡(第一数据缓冲区),再通过网络连接将网卡中的所述第一通信报文传输到中心节点的网卡(远端网卡,即第二数据缓冲区),然后直接到达中心节点的内存(远端内存),而无需操作系统多次在数据缓冲区之间拷贝数据,也无需CPU参与,因而能节省CPU用于改进整体系统性能,从而减少对带宽和处理器开销的需要,显著降低了时延。

因此,在网络连接池中查询到空闲的网络连接后,即可确定计算节点中,与该空闲的网络连接的第一存储地址对应的第一数据缓冲区,以及确定中心节点中,与该空闲的网络连接的第二存储地址对应的第二数据缓冲区,以将第一通信报文写入第一数据缓冲区,并调用远程直接内存访问模块通过该空闲的网络连接,将计算节点的第一数据缓冲区中的第一通信报文写入中心节点的第二数据缓冲区。

步骤108,接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

具体的,本说明书实施例提供的第二种数据处理过程的示意图如图4所示,计算节点通过网络连接将第一通信报文通过计算节点的数据缓冲区传输至中心节点,由于中心节点中的主线程(main thread)用于处理RDMA网络连接事件,包括连接建立、断开等事件。每一个新建的RDMA网络连接都会通过round robbin(轮询调度算法)的方式分配给某个工作线程(worker thread),每个工作线程负责处理一定数量的RDMA网络连接,通过循环轮询(polling)中心节点中数据缓冲区的方式感知并且处理通信报文。

因此,中心节点的工作线程遍历其管理的所有RDMA网络连接,在检测到某个数据缓冲区中第一通信报文的通知标志设置为1,则表示这个网络连接接收到了消息,由于通知标志是第一通信报文的最后一个字节,而RDMA远程写是保序的,因此,在通知标志设为1的情况下,即可以保证第一通信报文中的数据已经完整地写入到了中心节点的数据缓冲区中。

基于此,工作线程开始解析并处理这个第一通信报文的报文体包含的数据,处理完成后将处理结果写入中心节点的数据缓冲区,然后使用调用远程直接内存访问模块将处理结果远程写入到计算节点的数据缓冲区。

本说明书实施例提供的第二通信报文的示意图如图3(b)所示,第二通信报文(响应报文)的最后一个字节是完成标志,中心节点对待存储数据处理完成后,会将这个完成标志(Complete Flag)设置为1,表示消息已经处理完毕。然后将第二通信报文返回至计算节点。

具体实施时,接收所述中心节点返回的第二通信报文,具体即接收中心节点通过调用远程直接内存访问模块在数据缓冲区写入的第二通信报文,在检测到所述第二通信报文的通知标志变为1的情况下,对所述第二通信报文的报文体进行解析,并将解析结果进行存储。

具体的,计算节点将第一通信报文传输至中心节点后,会不断检查本地数据缓冲区中第二通信报文的最后一个字节(即Complete Flag),一旦其被设置成了1,表明中心节点已经处理完消息并发送了响应报文,这种情况下,计算节点可对所述第二通信报文的报文体进行解析,并将解析结果进行存储。

此外,计算节点将待存储数据传输到中心节点后,其他计算节点还可从所述中心节点读取数据,以实现不同计算节点间数据的一致性,具体即可通过调用远程直接内存访问模块根据所述中心节点中数据缓冲区对应的存储地址,从所述数据缓冲区读取对所述待存储数据进行处理生成的数据处理结果。

实际应用中,中心节点在接收到计算节点针对共享数据(对待存储数据进行处理生成)提交的数据访问请求后,需根据所述共享数据的全局锁状态,确定所述共享数据是否正在被访问,在未被访问的情况下,则可为该计算节点分配针对所述共享数据的全局锁,以允许该计算节点对所述共享数据进行访问。

基于此,本说明书一个实施例通过获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区,基于所述待存储数据生成第一通信报文,调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区,接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

本说明书实施例中,计算节点利用远端直接内存访问模块(RDMA)将待存储数据传输至中心节点的数据缓冲区,由于RDMA可以将待存储数据直接从计算节点的数据缓冲区快速传输到中心节点的数据缓冲区中,在数据传输的整个过程中无需中心节点CPU的参与,因此,有利于减少中心节点的CPU在数据传输过程中的消耗,从而有利于提升系统的处理性能,并有利于减少网络通信延迟。

图5示出了根据本说明书一个实施例提供的一种数据处理系统的示意图,包括:

中心节点502以及至少一个计算节点504;

所述至少一个计算节点504,被配置为获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定所述中心节点中与所述网络连接的存储地址对应的数据缓冲区,基于所述待存储数据生成第一通信报文,调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

所述中心节点502,被配置为对所述第一通信报文进行解析,对解析获得的所述待存储数据进行处理,基于处理结果生成第二通信报文并返回;

所述至少一个计算节点504,被配置为接收所述第二通信报文。

具体的,本说明书实施例提供的数据处理系统中包含一个中心节点502以及多个计算节点504,在进行数据传输之前,可分别建立中心节点502与多个计算节点504之间的网络连接,并将建立的网络连接放入网络连接池。

在计算节点504中存在待同步的数据(待存储数据)的情况下,即可从网络连接池中查询空闲的网络连接,并确定中心节点502中与该空闲的网络连接的存储地址对应的数据缓冲区,然后再利用远程直接内存访问技术(RDMA),通过该网络连接将基于所述待存储数据生成的第一通信报文传输至中心节点502的数据缓冲区。

中心节点502接收到第一通信报文后,可对其进行解析,并对解析获得的所述待存储数据进行处理,基于处理结果生成第二通信报文并返回至计算节点504即可。

实际应用中,无服务器的分布式数据库在一个数据库集群中设置了多个可用于数据读写的计算节点,这些计算节点可通过RDMA网络框架与中心化的中心节点(CacheCenter)进行通信(计算节点与中心节点即构成本说明书实施例的数据处理系统)。

其中,RDMA网络框架如图5所示,基于RDMA网络框架即可实现直接将数据从计算节点的内存通过网络传送到中心节点内存中,具体即首先将计算节点中的数据通过DMA方式拷贝到计算节点的网卡(数据缓冲区),再通过网络传输到中心节点网卡,然后直接到达中心节点内存,而无需操作系统多次在数据缓冲区之间拷贝数据和中心节点的CPU参与,因而能节省CPU用于改进整体系统性能,从而减少对带宽和处理器开销的需要,显著降低了时延。

另外,在数据传输过程中所涉及到的网络连接的建立以及数据的传输等均可通过调用RDMA网络框架中的相关接口实现。

例如,可调用RDMA原生接口进行数据缓冲区的注册以及消息队列的创建等;可调用中心节点网络连接管理器和计算节点网络连接管理器来建立中心节点与计算节点间的网络连接;可调用中心节点数据流管理器、计算节点数据流管理器轮询检测本地的数据缓冲区是否存在待处理的消息(实现将数据流和控制流分离);可调用远程内存直接访问模块进行通信报文的传输等。

此外,中心节点负责缓存全局的页面、锁以及事务信息。其中,中心节点中的全局缓冲区(GBP,Global Buffer Pool)负责全局页面的同步和失效,保证全局一致性;全局锁管理器(GLM,Global Lock Manager)实现了全局锁的管理,确保节点间并发控制的正确性;全局事务管理器(GTM,Global Transaction Manager)则维护了全局事务信息;同样的,计算节点中的本地缓冲区负责本地页面的同步和失效;本地锁管理器实现了本地锁的管理;本地事物管理器则维护了本地事物信息。

可选地,所述中心节点,还被配置为:

调用主线程建立与所述至少一个计算节点间的网络连接;

将网络连接建立结果发送至工作线程,并调用所述工作线程对所述网络连接建立结果中的至少一个网络连接进行检测;

在检测到所述至少一个网络连接的存储地址对应的数据缓冲区中,存在第一通信报文的通知标志置为1,则对所述第一通信报文进行解析。

可选地,所述中心节点,还被配置为:

对所述第一通信报文进行解析,对解析获得的所述待存储数据进行处理;

基于处理结果生成第二通信报文;

将第二通信报文的通知标志置为1,并调用远程直接内存访问模块将所述第二通信报文写入所述至少一个计算节点的数据缓冲区。

可选地,所述中心节点,还被配置为:

接收所述至少一个计算节点针对共享数据提交的数据访问请求;

根据所述共享数据的全局锁状态,确定所述共享数据未被访问的情况下,为所述至少一个计算节点分配针对所述共享数据的全局锁,以允许所述至少一个计算节点对所述共享数据进行访问。

本说明书实施例中,计算节点利用远端直接内存访问模块(RDMA)将待存储数据传输至中心节点的数据缓冲区,由于RDMA可以将待存储数据直接从计算节点的数据缓冲区快速传输到中心节点的数据缓冲区中,在数据传输的整个过程中无需中心节点CPU的参与,因此,有利于减少中心节点的CPU在数据传输过程中的消耗,从而有利于提升系统的处理性能,并有利于减少网络通信延迟。

上述为本实施例的一种数据处理系统的示意性方案。需要说明的是,该数据处理系统的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理系统的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

下述结合附图6,对所述数据处理方法进行进一步说明。其中,图6示出了本说明书一个实施例提供的一种数据处理方法的交互示意图,具体步骤包括步骤602至步骤620。

步骤602,计算节点向中心节点发送网络连接请求。

步骤604,中心节点建立与计算节点间的网络连接。

具体的,中心节点建立其数据缓冲区与计算节点的数据缓冲区间的网络连接。

步骤606,中心节点向计算节点返回网络连接建立结果。

计算节点接收所述网络连接建立结果后,将所述网络连接建立结果中包含的网络连接放入网络连接池。

步骤608,计算节点获取待存储数据。

步骤610,计算节点基于所述待存储数据生成第一通信报文。

步骤612,计算节点将所述第一通信报文远程写入中心节点的数据缓冲区。

计算节点生成第一通信报文后,可在网络连接池中查找空闲的网络连接,并调用远程直接内存访问模块通过该空闲的网络连接,将第一通信报文传输至中心节点。

步骤614,中心节点对所述第一通信报文进行解析,并对解析结果进行处理,生成对应的处理结果。

步骤616,中心节点基于所述处理结果生成第二通信报文。

步骤618,中心节点将第二通信报文远程写入计算节点的数据缓冲区。

具体的,中心节点通过调用远程直接内存访问模块,并通过空闲的网络连接将第二通信报文返回至计算节点。

步骤620,计算节点对所述第二通信报文进行解析,并对解析结果进行存储。

本说明书实施例中,计算节点利用远端直接内存访问模块(RDMA)将待存储数据传输至中心节点的数据缓冲区,由于RDMA可以将待存储数据直接从计算节点的数据缓冲区快速传输到中心节点的数据缓冲区中,在数据传输的整个过程中无需中心节点CPU的参与,因此,有利于减少中心节点的CPU在数据传输过程中的消耗,从而有利于提升系统的处理性能,并有利于减少网络通信延迟。

与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图7示出了本说明书一个实施例提供的一种数据处理装置的示意图。如图7所示,该装置包括:

获取模块702,被配置为获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区;

生成模块704,被配置为基于所述待存储数据生成第一通信报文;

写入模块706,被配置为调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

接收模块708,被配置为接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

可选地,所述数据处理装置,还包括:

确定模块,被配置为确定与所述网络连接的第一存储地址对应的第一数据缓冲区,并确定中心节点中与所述网络连接的第二存储地址对应的第二数据缓冲区;

相应的,所述写入模块706,进一步被配置为:

将所述第一通信报文写入所述第一数据缓冲区,并调用远程直接内存访问模块通过所述网络连接,将所述第一数据缓冲区中的所述第一通信报文写入所述第二数据缓冲区。

可选地,所述数据处理装置,还包括:

发送模块,被配置为向中心节点发起网络连接请求,所述网络连接请求中包含至少一个第一数据缓冲区的第一存储地址;

结果接收模块,被配置为接收所述中心节点返回的网络连接建立结果,所述网络连接建立结果中包含所述中心节点中至少一个第二数据缓冲区的第二存储地址以及访问权限信息;

保存模块,被配置为将所述网络连接建立结果放入所述网络连接池,并保存所述网络连接建立结果中数据缓冲区的存储地址的对应关系;其中,所述对应关系用于基于所述网络连接向所述中心节点发送第一通信报文。

可选地,所述数据处理装置,还包括:

第一传输模式确定模块,被配置为根据分布式网络中计算节点的数量确定计算节点与中心节点间的数据传输模式;或,

第二传输模式确定模块,被配置为根据分布式网络中计算节点与中心节点间网络连接的数量,确定计算节点与所述中心节点间的数据传输模式。

可选地,所述第一传输模式确定模块,进一步被配置为:

判断分布式网络中计算节点的数量是否大于等于第一预设数量阈值;

若否,则确定计算节点与中心节点间的数据传输模式为单边传输模式,执行所述在网络连接池中查询处于空闲状态的网络连接的步骤;

若是,则确定计算节点与中心节点间的数据传输模式为双边传输模式。

可选地,所述生成模块704,进一步被配置为:

获取所述第一数据缓冲区的访问权限信息,将所述访问权限信息以及所述第一存储地址作为第一通信报文的报文头部信息;

将所述待存储数据进行封装,并将封装结果作为所述第一通信报文的报文体;以及,

将第一通信报文的通知标志置为1,以生成所述第一通信报文。

可选地,所述接收模块708,进一步被配置为:

接收中心节点通过调用远程直接内存访问模块在数据缓冲区写入的第二通信报文;

在检测到所述第二通信报文的通知标志变为1的情况下,对所述第二通信报文的报文体进行解析,并将解析结果进行存储。

可选地,所述数据处理装置,还包括:

读取模块,被配置为调用远程直接内存访问模块根据所述中心节点中数据缓冲区对应的存储地址,从所述数据缓冲区读取对所述待存储数据进行处理生成的数据处理结果。

上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。

计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式的服务器。

其中,所述存储器810用于存储计算机可执行指令,处理器820用于执行如下计算机可执行指令:

获取待存储数据,在网络连接池中查询处于空闲状态的网络连接,并确定中心节点中与所述网络连接的存储地址对应的数据缓冲区;

基于所述待存储数据生成第一通信报文;

调用远程直接内存访问模块通过所述网络连接,将所述第一通信报文写入所述数据缓冲区;

接收所述中心节点返回的第二通信报文,其中,所述第二通信报文由所述中心节点对所述第一通信报文进行解析,并对解析获得的所述待存储数据进行处理生成。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于实现所述数据处理方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

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

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

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于场景配置控制GIS大屏可视化应用的方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类