数据传输方法及装置与流程

文档序号:19281725发布日期:2019-11-29 23:00阅读:188来源:国知局
数据传输方法及装置与流程

本公开涉及数据传输技术领域。具体而言,涉及一种数据传输方法及装置。



背景技术:

海量并行处理结构(massiveparallelprocessing,mpp)是一种基于postgre结构化查询语言(postgrestructuredquerylanguage,postgresql)的分布式数据库集群服务器系统架构,其采用完全无共享(sharednothing)架构,由多个对称多处理服务器(symmetricalmulti-processing,smp)通过节点互联网络连接,组成服务器系统,其中,节点代指每个smp服务器。

mpp服务器系统由主服务器(masterserver)、备用服务器(standbyserver)和多个数据服务器(segmentserver)组成。其中,master节点负责处理客户端的请求,分发执行计划到各segment节点并汇总结果;同时,master节点还会基于传输控制协议/因特网互联协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)架构,通过流复制的方式不间断地将master节点的所有事务日志(xlog)同步至standby节点。

但是,现有的tcp/ip协议架构要经过多次内存拷贝、中断处理、以及上下文切换,当进行大数据量插入查询或者大量客户端连接时,节点互联网络若出现过高延迟则会造成master节点和standby节点之间流复制失败,使得master节点不能及时将事务日志同步至standby节点,导致master节点和standby节点的数据不同步,进而引发mpp服务器系统产生故障。



技术实现要素:

本公开的目的在于,提供一种数据传输方法及装置,用于解决现有mpp服务器系统中master节点不能及时将事务日志同步至standby节点,导致master节点和standby节点的数据不同步,进而引发mpp服务器系统产生故障的问题。

第一方面,本公开实施例提供一种数据传输方法,该方法应用于mpp服务器系统中的主节点,主节点设有第一缓冲区和第一rdma网卡,主节点通过第一rdma网卡与备用节点通信连接;该方法包括:

接收备用节点发送的数据请求,数据请求包含第一缓冲区的地址;

根据数据请求,通过第一rdma网卡向备用节点发送第一缓冲区中的待传数据,第一缓冲区的地址为固定地址。

可选地,上述接收备用节点发送的数据请求之前,该方法还包括:

接收到备用节点发送的连接请求后,采用固定地址的内存空间建立第一缓冲区;

将第一缓冲区的地址注册至第一rdma网卡;

通过第一rdma网卡向备用节点发送第一缓冲区的地址。

可选地,上述接收备用节点发送的数据请求之前,该方法还包括:

将原始数据切分为多个预设大小的数据块;

封装每个数据块,得到封装后的数据块作为待传数据拷贝至第一缓冲区。

第二方面,本公开实施例还提供一种数据传输方法,该方法应用于mpp服务器系统中的备用节点,备用节点设有第二缓冲区和第二rdma网卡,备用节点通过第二rdma网卡与主节点通信连接;该方法包括:

根据主节点的第一缓冲区的地址,向主节点发送数据请求,数据请求包含第一缓冲区的地址,第一缓冲区的地址为固定地址;

通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据。

可选地,上述根据主节点的第一缓冲区的地址,向主节点发送数据请求之前,该方法还包括:

通过第二rdma网卡接收主节点发送的第一缓冲区的地址。

可选地,上述通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据之后,该方法还包括:

将待传数据拷贝至第二缓冲区;

对第二缓冲区中的待传数据进行解封装,得到预设大小的数据块。

可选地,上述通过第二rdma网卡接收主节点发送的第一缓冲区的地址之前,该方法还包括:

进行初始化,采用固定地址的内存空间建立第二缓冲区;

将第二缓冲区的地址注册至第二rdma网卡;

向主节点发送连接请求。

第三方面,本公开实施例提供一种数据传输系统,该数据传输系统为mpp服务器系统,mpp服务器系统包括主节点和备用节点;主节点与备用节点通信连接;

主节点用于执行如第一方面所述的数据传输方法。

备用节点用于执行如第二方面所述的数据传输方法。

第四方面,本公开实施例还提供一种数据传输装置,该装置应用于海量并行处理结构mpp服务器系统中的主节点,主节点设有第一缓冲区和第一远程直接内存访问rdma网卡,主节点通过第一rdma网卡与备用节点通信连接;该装置包括:

第一接收模块,用于接收备用节点发送的数据请求,数据请求包含第一缓冲区的地址;

第一发送模块,用于根据数据请求,通过第一rdma网卡向备用节点发送第一缓冲区中的待传数据,第一缓冲区的地址为固定地址。

可选地,该装置还包括:第一建立模块和第一注册模块;

在第一接收模块接收备用节点发送的数据请求之前,第一建立模块,用于接收到备用节点发送的连接请求后,采用固定地址的内存空间建立第一缓冲区;

第一注册模块,用于将第一缓冲区的地址注册至第一rdma网卡;

第一发送模块,还用于通过第一rdma网卡向备用节点发送第一缓冲区的地址。

可选地,该装置还包括:切分模块和封装模块;

在第一接收模块接收备用节点发送的数据请求之前,切分模块用于将原始数据切分为多个预设大小的数据块;

封装模块,用于封装每个数据块,得到封装后的数据块作为待传数据拷贝至第一缓冲区。

第五方面,本公开实施例还提供一种数据传输装置,该装置应用于海量并行处理结构mpp服务器系统中的备用节点,备用节点设有第二缓冲区和第二rdma网卡,备用节点通过第二rdma网卡与主节点通信连接;该装置包括:

第二发送模块,用于根据主节点的第一缓冲区的地址,向主节点发送数据请求,数据请求包含第一缓冲区的地址,第一缓冲区的地址为固定地址;

第二接收模块,用于通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据。

可选地,第二接收模块,还用于在第二发送模块根据主节点的第一缓冲区的地址,向主节点发送数据请求之前,通过第二rdma网卡接收主节点发送的第一缓冲区的地址。

可选地,该装置还包括:拷贝模块和解封装模块;

在第二接收模块通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据之后,拷贝模块,用于将待传数据拷贝至第二缓冲区;

解封装模块,用于对第二缓冲区中的待传数据进行解封装,得到预设大小的数据块。

可选地,该装置还包括:第二建立模块和第二注册模块;

在第二接收模块通过第二rdma网卡接收主节点发送的第一缓冲区的地址之前,第二建立模块,用于采用固定地址的内存空间建立第二缓冲区;

第二注册模块,用于将第二缓冲区的地址注册至第二rdma网卡。

第六方面,本公开实施例还提供一种电子设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行如第一方面或第二方面所述的数据传输方法。

第七方面,本公开实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行如第一方面或第二方面所述的数据传输方法。

本公开的有益效果是:

本公开实施例中,主节点通过接收备用节点发送的数据请求,数据请求包含第一缓冲区的地址,并根据数据请求,通过第一rdma网卡向备用节点发送第一缓冲区中的待传数据,第一缓冲区的地址为固定地址,使得mpp服务器系统中的主节点和备用节点之间可以实现基于rdma技术,绕过主节点和备用节点中的cpu和高速缓冲存储器(cache)而实现在网络传输过程中待传数据的直接传递,从而提高待传数据的传输速度;同时,第一缓冲区的地址为固定地址还使得主节点只需完成一次对待传数据的数据源地址注册到第一rdma网卡的操作,之后每次传输待传数据时,备用节点可以直接从第一缓冲区中读取待传数据,而无需主节点再频繁进行地址注册过程,减少了由于地址注册所造成的额外的开销和网络延时。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了mpp服务器系统的结构示意图;

图2示出了现有mpp服务器系统中流复制方式的流程示意图;

图3示出了本公开实施例提供的数据传输方法的流程示意图;

图4示出了本公开实施例提供的数据传输方法的另一流程示意图;

图5示出了本公开实施例提供的数据传输方法的又一流程示意图;

图6示出了本公开实施例提供的数据传输方法的又一流程示意图;

图7示出了本公开实施例提供的数据传输方法的又一流程示意图;

图8示出了本公开实施例提供的数据传输方法的又一流程示意图;

图9示出了本公开实施例提供的数据传输方法的又一流程示意图;

图10示出了本公开实施例提供的数据传输装置的结构示意图;

图11示出了本公开实施例提供的数据传输装置的另一结构示意图;

图12示出了本公开实施例提供的数据传输装置的又一结构示意图;

图13示出了本公开实施例提供的数据传输装置的又一结构示意图;

图14示出了本公开实施例提供的数据传输装置的又一结构示意图;

图15示出了本公开实施例提供的数据传输装置的又一结构示意图;

图16示出了本公开实施例提供的电子设备的结构示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

图1示出了mpp服务器系统的结构示意图。

如图1所示,mpp服务器系统包括:主节点(masterhost)110、备用节点(standbyhost)120和多个数据节点(segmenthost)130。master节点、standby节点和多个segment节点可通过节点互联网连接,构成mpp数据库集群。其中,每个节点均为smp服务器,用于连接各节点的节点互联网可以是以太网(ethernet)。

可选地,用户可以基于客户端向master节点110发起任务请求,例如,可以通过客户端输入结构化查询语言(structuredquerylanguage,sql)命令,sql命令可以是对数据库进行插入、更新、删除、提交、回退和数据库模式变化等。其中,客户端可以是安装于计算机、手机或平板电脑等具备输入能力的电子设备。

master节点110可以用于负责处理客户端的任务请求,分发执行计划到各segment节点130并汇总结果。各segment节点130用于执行master节点110下发的执行计划,以响应用户在客户端发起的任务请求。另外,master节点110还可以基于传输控制协议/因特网互联协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)架构,通过流复制的方式不间断地将master节点110的所有事务日志(xlog)同步至standby节点120进行存储。其中,事务日志用于记录master节点110的所有执行动作以及执行计划的内容,如,可以记录对数据库进行的插入、更新、删除、提交、回退和数据库模式变化等所有更改。

以用户所发起的任务请求为修改数据库中的某个数据为例,当用户提交任务请求来修改某个数据的时候,修改数据的执行操作可以使用预写日志进行保存,也就是先将用户要改动的结果保存在预写日志(writeaheadlog,wal)中,然后,在实际通过segment节点130修改数据库的同时,将wal备份至standby节点120进行存储。通过wal可以解决服务器宕机出现的数据丢失的问题。

图2示出了现有mpp服务器系统中流复制方式的流程示意图。

如图2所示,在现有mpp服务器系统中,master节点事务日志同步至standby节点的过程,需要分别在master节点和standby节点的内核或中央处理器(centralprocessingunit,cpu)中完成多次的复制和拷贝。例如,在master节点中,事务日志首先需要通过预写日志发送进程(writeaheadlogsender,walsender)发送至ip接口,然后,事务日志需要依次经历ip接口(ipsockets)、tcp传输层、网卡驱动(networkinterfacecarddriver,nicdriver)完成多次复制和拷贝,并最终通过nic发送至standby节点;相反的,在standby节点中,事务日志则需要经历相反的流程,完成多次复制和拷贝,才可以到达standby节点的预写日志接收进程(writeaheadlogreceiver,walreceiver)并进行存储。上述通过流复制进行事务日志同步的过程会在后台不间断地进行。

但是,当mpp服务器系统正在进行大数据量的数据插入或查询时,传统的网卡(千兆或万兆卡)和复杂的tcp/ip协议处理(tcp/ip协议架构要经过多次内存拷贝、中断处理、以及上下文切换)会造成较高的延迟。节点互联网络若出现过高延迟则会造成master节点和standby节点之间流复制失败,使得master节点不能及时将事务日志同步至standby节点,导致master节点和standby节点的数据不同步,进而引发mpp服务器系统产生故障。

基于此,本公开实施例提供一种数据传输方法,能够解决mpp服务器系统中因为网络延迟所导致的数据库集群异常或故障的问题。

该数据传输方法应用于mpp服务器系统中的主节点,主节点设有第一缓冲区和第一远程直接内存访问(remotedirectmemoryaccess,rdma)网卡,主节点通过第一rdma网卡与备用节点通信连接。

其中,rdma网卡是指适配于rdma技术(或带rdma功能)的网卡。rdma技术可以实现在网络传输过程中两个节点之间数据缓冲区数据的直接传递,在本节点可以直接将数据通过网络传送到远程节点的内存中,绕过操作系统内的多次内存拷贝,相比于传统的网络传输,rdma无需操作系统和tcp/ip协议的介入,可以相对容易地实现超低延时的数据处理、超高吞吐量传输,不需要远程节点cpu等资源的介入,不必因为数据的处理和迁移耗费过多的资源。

图3示出了本公开实施例提供的数据传输方法的流程示意图。

如图3所示,该数据传输方法包括:

s301、接收备用节点发送的数据请求,数据请求包含第一缓冲区的地址。

可选地,主节点和备用节点可以建立起基于以太网的rdma(rdmaoverconvergedethernet,roce)连接关系,以支持在以节点互联网(即,以太网)上承载无线带宽技术(infiniband,ib)协议,实现基于以太网的rdma技术,提高主节点和备用节点之间的数据传输吞吐量。

可选地,对于已经建立roce连接的主节点和备用节点而言,备用节点可以向主节点发起数据请求,以启动主节点和备用节点之间的流复制进程。主节点所接收到的数据请求中包含有主节点的第一缓冲区的地址,该数据请求用于备用节点请求从主节点的第一缓冲区中获取数据。

s302、根据数据请求,通过第一rdma网卡向备用节点发送第一缓冲区中的待传数据,第一缓冲区的地址为固定地址。

对于主节点而言,第一缓冲区可以为主节点中具有固定地址的一块内存空间,用于存放待传数据,即可以是内存中的一块区域用来存待传数据。

其中,待传数据是指主节点需要发送给备用节点的数据,如,可以是用于记录主节点的所有执行动作以及执行计划内容的事务日志;主节点的执行动作和执行计划可以包括对数据库进行的插入、更新、删除、提交、回退和数据库模式变化等操作。

主节点接收到备用节点发送的数据请求后,可以根据数据请求中所包含的第一缓冲区的地址,从第一缓冲区中获取存放的待传数据,并通过第一rdma网卡发送给备用节点。

可选地,本公开中实施例中,主节点和备用节点之间可以通过该数据传输方法,将主节点的第一缓冲区中的待传数据以流复制的方式发送至备用节点。

以事务日志为例,通过该数据传输方法,可以将主节点的所有事物日志(xlog)通过流复制的方式不间断地同步至备用节点进行存储。例如,主节点所记录的多个wal日志之间可以不间断地同步至备用节点;或者也可以是主节点所记录的wal日志可以以每一条预写日志记录(walrecord)为单位不间断地同步至备用节点,可以降低主节点和备用节点之间的数据传输延迟。

一般现有技术中,通过rdma技术进行数据传输时,不同待传数据往往具有不同的数据源地址,主节点每次将待传数据发送给备用节点之前,都需要待传数据的数据源地址注册到第一rdma网卡,并将待传数据的数据源地址发送给备用节点,备用节点才可以有权限读取该地址上的待传数据。

而本公开实施例中的第一缓冲区的地址为固定地址,将具有固定地址的第一缓冲区作为待传数据的消息缓冲区(buffer),即,作为主节点基于rdma向备用节点进行数据传输的数据源,可以使得在完成对数据源地址注册到第一rdma网卡的第一次操作之后,每次传输待传数据时,备用节点可以直接从第一缓冲区中读取待传数据,而无需进行重复的地址注册过程,减少由于地址注册所造成的额外的开销和网络延时。

由上所述,本公开实施例中,主节点通过接收备用节点发送的数据请求,数据请求包含第一缓冲区的地址,并根据数据请求,通过第一rdma网卡向备用节点发送第一缓冲区中的待传数据,第一缓冲区的地址为固定地址,使得mpp服务器系统中的主节点和备用节点之间可以实现基于rdma技术,绕过主节点和备用节点中的cpu和高速缓冲存储器(cache)而实现在网络传输过程中待传数据的直接传递,从而提高了待传数据的传输速度;同时,第一缓冲区的地址为固定地址还使得主节点只需完成一次对待传数据的数据源地址注册到第一rdma网卡的操作,之后每次传输待传数据时,备用节点可以直接从第一缓冲区中读取待传数据,而无需主节点再频繁进行地址注册过程,减少了由于地址注册所造成的额外的开销和网络延时。

可选地,上述接收备用节点发送的数据请求之前,该数据传输方法还包括:通过第一rdma网卡向备用节点发送第一缓冲区的地址。

如上所述,主节点在接收备用节点发送的数据请求之前,需要先将通过第一rdma网卡将第一缓冲区的地址发送给备用节点,备用节点可以基于主节点所发送的第一缓冲区的地址向主节点发起数据请求,以能够读取第一缓冲区中存放的待传数据。

本公开中,第一缓冲区的地址是固定地址,那么可以只向备用节点发送一次第一缓冲区的地址,后续可以重复使用,从而节约了交互开销。

图4示出了本公开实施例提供的数据传输方法的另一流程示意图。

可选地,如图4所示,上述通过第一rdma网卡向备用节点发送第一缓冲区的地址之前,该数据传输方法还包括:

s401、接收到备用节点发送的连接请求后,采用固定地址的内存空间建立第一缓冲区。

具体地,在主节点和备用节点开始流复制进程之前,备用节点需要先向主节点发送连接请求,与主节点之间建立连接。主节点接收到备用节点发送的连接请求后,会选取一块固定地址的内存空间建立第一缓冲区,作为存放待传数据的数据源。

可选地,主节点在选取固定地址的内存空间时,可以任意选取处于空闲状态或容量充足的内存空间作为第一缓冲区,并获取该内存空间的固定地址。在建立第一缓冲区时,对于内存空间的选取方式,本公开在此不作限定,只需满足可以存放待传数据和具有固定地址两个条件即可。

s402、将第一缓冲区的地址注册至第一rdma网卡。

进一步地,在建立固定地址的第一缓冲区后,可以将第一缓冲区的地址注册至第一rdma网卡,以使得主节点和备用节点之间通过第一rdma网卡进行数据传输时,备用节点后续可以从第一缓冲区中直接读取待传数据。

图5示出了本公开实施例提供的数据传输方法的又一流程示意图。

可选地,如图5所示,上述接收备用节点发送的数据请求之前,该方法还包括:

s501、将原始数据切分为多个预设大小的数据块。

具体地,对于主节点中需要备份或存储至备用节点的原始数据,一般可以先对原始数据进行切分,将其切分为多个预设大小的数据块,其中,预设大小是指预设设置的数据块大小,其单位可以是千字节(kilobyte,kb)、兆字节(megabyte,mb)、吉字节(gigabyte,gb)等。

可选地,本公开实施例中,预设大小只有一个值,主节点对原始数据进行切分所得到的所有数据块的大小均相同,从而可以提高数据传输效率。

s502、封装每个数据块,得到封装后的数据块作为待传数据拷贝至第一缓冲区。

对于上述对原始数据进行切分所得到的多个数据块,可以对其进行封装,以便于主节点和备用节点之间的数据传输。例如,可以对每个数据块加上对应的消息头,将其封装为消息(message),并将封装后所得的message拷贝至第一缓冲区中,等待备用节点的读取。

可选地,本公开实施例中,主节点在建立第一缓冲区时,还可以创建第一缓冲区的加密信息(locketkey,lkey),并将第一缓冲区的地址和lkey一起发送给备用节点,备用节点在从第一缓冲区中读取待传数据时,需要通过lkey进行验证,以保证待传数据的安全性。相应的,由于本公开实施例中,第一缓冲区的地址为固定地址,所以,主节点也只需要将lkey向备用节点发送一次即可。

可选地,本公开实施例中,主节点和备用节点在进行待传数据的传输过程中,主节点还可以向备用节点发送心跳信息,备用节点可以向主节点回应该心跳信息,以使得主节点可以随时获取到备用节点的状态信息。

图6示出了本公开实施例提供的数据传输方法的又一流程示意图。基于前述实施例,本公开实施例还提供一种数据传输方法,应用于mpp服务器系统中的备用节点,备用节点设有第二缓冲区和第二rdma网卡,备用节点通过第二rdma网卡与主节点通信连接。如图6所示,该数据传输方法包括:

s601、根据主节点的第一缓冲区的地址,向主节点发送数据请求,数据请求包含第一缓冲区的地址,第一缓冲区的地址为固定地址。

与前述实施例相对应地,主节点会将第一缓冲区的地址通过第一rdma网卡发送给备用节点。备用节点在接收到主节点发送的第一缓冲区的地址后,可以根据第一缓冲区的地址,向主节点发起数据请求。该数据请求中包含有第一缓冲区的固定地址,用于请求从第一缓冲区中读取待传数据。

s602、通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据。

具体地,备用节点向主节点发送数据请求后,主节点会根据数据请求将第一缓冲区中存放的待传数据,通过第一rdma网卡发送给备用节点;相应的,备用节点可以通过第二rdma网卡接收主节点所发送的待传数据。

由于本公开实施例提供的该数据传输方法应用于mpp服务器系统中的备用节点,与前述实施例中所述的应用于主节点的数据传输方法相对应,所以,其能够实现与前述实施例中所述相同的有益效果,本公开在此不再赘述。

可选地,上述根据主节点的第一缓冲区的地址,向主节点发送数据请求之前,该数据传输方法还包括:

通过第二rdma网卡接收主节点发送的第一缓冲区的地址。

如上所述,备用节点在向主节点发送数据请求之前,需要先通过第二rdma网卡接收到第一缓冲区的地址,然后,基于第一缓冲区的地址向主节点发送数据请求,以能够向主节点请求读取第一缓冲区中存放的待传数据。

图7示出了本公开实施例提供的数据传输方法的又一流程示意图。

可选地,如图7所示,上述通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据之后,该数据传输方法还包括:

s701、将待传数据拷贝至第二缓冲区。

s702、对第二缓冲区中的待传数据进行解封装,得到预设大小的数据块。

具体地,当待传数据为主节点进行封装后的消息时,备用节点需要将接收到的消息进行解封装,然后进行存储。如前述实施例中步骤s501和步骤s502中所述,待传数据为主节点将原始数据切分为预设大小的数据块,并对每个数据块进行封装后所得。相应的,备用节点可以先将接收到的待传数据拷贝至第二缓冲区,并按照相反的步骤对第二缓冲区进行解封装,得到预设大小的数据块,将其还原为原始数据进行存储。例如,待传数据可以主节点封装后的消息,备用节点可以去掉消息的消息头,从而得到每个消息中的数据块,并根据每个数据块中包含的数据确定原始数据进行存储。

图8示出了本公开实施例提供的数据传输方法的又一流程示意图。

可选地,如图8所示,上述通过第二rdma网卡接收主节点发送的第一缓冲区的地址之前,该方法还包括:

s801、进行初始化,采用固定地址的内存空间建立第二缓冲区。

具体地,初始化是指备用节点创建并初始化第二rnic(本公开中第二rdma网卡也用第二rnic表示)的队列对(queuepairs,qp)和完成队列(completequeue,cq)。其中,qp包含用于发送数据的发送队列(sendqueue,sq)和用于接收数据的接收队列(receiverqueue,rq);cq用于通知上层应用有数据接收完成。流复制启动之前,备用节点可以启动walreceiver进程,并进行上述初始化操作。

可选地,备用节点也可以采用固定地址的内存空间建立第二缓冲区,具体建立过程与前述主节点建立第一缓冲区的过程类似,在此不再赘述。

s802、将第二缓冲区的地址注册至第二rdma网卡。

由于备用节点通过第二rdma网卡接收到待传数据后,需要将待传数据拷贝至第二缓冲区以进行下一步操作,因此,在建立第二缓冲区后,还需要将第二缓冲区的地址也注册至第二rdma网卡。

需要说明的是,本公开实施例中,只需要保证主节点的第一缓冲区的地址为固定地址,即可实现减少由于地址注册所造成的额外的开销和网络延时的有益效果;备用节点的第二缓冲区可以是固定地址,也可以是非固定地址,本公开对此不作要求。当第二缓冲区的地址也为固定地址时,仅仅为本公开的更优实施例而已。

s803、向主节点发送连接请求。

具体地,备用节点在完成上述步初始化过程后,即可根据初始化信息向主节点发起连接请求。相应的,主节点接收到备用节点发送的连接请求后,可以启动walsender进程,也进行初始化步骤,也即,创建并初始化主节点端的qp和cq,然后,与备用节点建立起连接。

本公开实施例还提供一种数据传输系统、以及应用于该数据传输系统的数据传输方法。其中,该数据传输系统为mpp服务器系统,mpp服务器系统包括主节点(master节点)和备用节点(standby节点),master节点与standby节点通信连接。

图9示出了本公开实施例提供的数据传输方法的又一流程示意图。

如图9所示,该数据传输方法,包括:

s910、standby节点启动walreceiver进程,创建并初始化第二rnic的qp和cq。

s911、standby节点采用固定地址的内存空间建立第二缓冲区,并注册至第二rnic。

s912、standby节点根据初始化信息向master节点发送连接请求。

s913、master节点接收到连接请求后,启动walsender进程,创建并初始化第一rnic的qp和cq。

s914、master节点采用固定地址的内存空间建立第一缓冲区,注册至第一rnic,并获取第一缓冲区的lkey。

s915、master节点的walsender进程和standby节点的walreceiver进程之间建立roce连接。

其中,roce连接的连接类型可以是可靠连接(reliableconnection,rc),连接建立的过程可以采用tcp/ip的socket方式。

s916、master节点将第一缓冲区的地址和lkey通过第一rnic发送给standby节点。

s917、master节点将xlog日志数据切分为数据块,并封装为message后,拷贝至第一缓冲区中。

可选地,在将message拷贝至第一缓冲区后,master节点可以注册一个执行请求(workrequest,wr)到其qp上的sq上,在qp上,wr被转化成执行队列元素(workqueueelement,wqe)。master节点的第一rnic可以调度qp上的wqe,等待向备用节点发送消息。

s918、standby节点向master节点发送数据请求,数据请求中包含第一缓冲区的地址和lkey。

s919、master节点根据接收到的数据请求,将第一缓冲区中存放的message通过第一rnic发送给standby节点。

master节点的第一rnic会根据数据请求中包含的地址解析对应的wqe,从wqe中指向的第一缓冲区的地址中获取message并发送到standby节点。

s920、standby节点通过第二rnic接收master节点发送的message。

可选地,standby节点的第二rnic接收message之后,可以注册一个完成队列元素(completequeueelement,cqe)到cq上,并向master返回状态信息。

s921、standby节点通过将接收到的message拷贝至第二缓冲区。

进一步,standby节点的walreceiver进程会轮询其cq,当发现cq上存在有cqe时,就会去qp的rq上读取消息,并将message拷贝到第二缓冲区中。

s922、standby节点对第二缓冲区中的message进行解封装,得到xlog日志数据并拷贝至xlog日志中进行存储。

本公开实施例提供的该数据传输方法的有益效果均已在前述实施例中陈述,本公开在此不再赘述。

本公开实施例还提供一种数据传输装置,该装置应用于海量并行处理结构mpp服务器系统中的主节点,主节点设有第一缓冲区和第一远程直接内存访问rdma网卡,主节点通过第一rdma网卡与备用节点通信连接。

图10示出了本公开实施例提供的数据传输装置的结构示意图。

如图10所示,该数据传输装置包括:第一接收模块11,用于接收备用节点发送的数据请求,数据请求包含第一缓冲区的地址;第一发送模块12,用于根据数据请求,通过第一rdma网卡向备用节点发送第一缓冲区中的待传数据,第一缓冲区的地址为固定地址。

可选地,第一发送模块12,还用于在第一接收模块11接收备用节点发送的数据请求之前,通过第一rdma网卡向备用节点发送第一缓冲区的地址。

图11示出了本公开实施例提供的数据传输装置的另一结构示意图。

可选地,如图11所示,该数据传输装置还包括:第一建立模块13和第一注册模块14;在第一发送模块12通过第一rdma网卡向备用节点发送第一缓冲区的地址之前,第一建立模块13,用于接收到备用节点发送的连接请求后,采用固定地址的内存空间建立第一缓冲区;第一注册模块14,用于将第一缓冲区的地址注册至第一rdma网卡。

图12示出了本公开实施例提供的数据传输装置的又一结构示意图。

可选地,如图12所示,该数据传输装置还包括:切分模块15和封装模块16;在第一接收模块11接收备用节点发送的数据请求之前,切分模块15用于将原始数据切分为多个预设大小的数据块;封装模块16,用于封装每个数据块,得到封装后的数据块作为待传数据拷贝至第一缓冲区。

本公开实施例还提供一种数据传输装置,该装置应用于海量并行处理结构mpp服务器系统中的备用节点,备用节点设有第二缓冲区和第二rdma网卡,备用节点通过第二rdma网卡与主节点通信连接。

图13示出了本公开实施例提供的数据传输装置的又一结构示意图。

如图13所示,该数据传输装置包括:第二发送模块21,用于根据主节点的第一缓冲区的地址,向主节点发送数据请求,数据请求包含第一缓冲区的地址,第一缓冲区的地址为固定地址;第二接收模块22,用于通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据。

可选地,第二接收模块22,还用于在第二发送模块21根据主节点的第一缓冲区的地址,向主节点发送数据请求之前,通过第二rdma网卡接收主节点发送的第一缓冲区的地址。

图14示出了本公开实施例提供的数据传输装置的又一结构示意图。

可选地,如图14所示,该数据传输装置还包括:拷贝模块23和解封装模块24;在第二接收模块22通过第二rdma网卡接收主节点根据数据请求发送的第一缓冲区中的待传数据之后,拷贝模块23,用于将待传数据拷贝至第二缓冲区;解封装模块24,用于对第二缓冲区中的待传数据进行解封装,得到预设大小的数据块。

图15示出了本公开实施例提供的数据传输装置的又一结构示意图。

可选地,如图15所示,该数据传输装置还包括:第二建立模块25和第二注册模块26;在第二接收模块22通过第二rdma网卡接收主节点发送的第一缓冲区的地址之前,第二建立模块25,用于采用固定地址的内存空间建立第二缓冲区;第二注册模块26,用于将第二缓冲区的地址注册至第二rdma网卡。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的数据传输装置的具体工作过程,可以参考前述方法实施例中数据传输方法的对应过程,本公开中不再赘述。

本公开实施例还提供一种电子设备,该电子设备可以集成于mpp服务器系统的主节点或备用节点。

图16示出了本公开实施例提供的电子设备的结构示意图。

如图16所示,该电子设备包括:处理器31、存储介质32和总线33,存储介质32存储有处理器31可执行的机器可读指令,当电子设备运行时,处理器31与存储介质32之间通过总线33通信,处理器31执行机器可读指令,以执行如前述方法实施例中所述的应用于mpp服务器系统中的主节点或备用节点的数据传输方法。具体实现方式和技术效果类似,在此不再赘述。

本公开实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行如前述方法实施例中所述的应用于mpp服务器系统中的主节点或备用节点的数据传输方法。具体实现方式和技术效果类似,在此同样不再赘述。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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