
1.本公开涉及计算机系统架构技术领域,具体而言,涉及一种数据处理系统、方法、装置、计算机设备及存储介质。
背景技术:2.在传统的分布式存储系统中,计算机节点之间经常需要相互传输数据。计算机通过网卡接收数据后,若要将其存储至硬盘中,需要经过多次数据拷贝,这会增加数据传输的延迟和系统开销。数据拷贝会占用内存带宽和cpu资源,并且可能需要更多的内存来容纳临时数据。这些额外的资源消耗和内存需求会限制分布式系统的性能。
3.并且,在分布式系统中,为了保证数据的可靠性,常常会存储数据对应的校验信息,下盘存储的数据与接收到的原始数据并不相同,要生成携带有校验信息的数据,再将携带有校验信息的数据存储,会进一步引起拷贝次数的增加,导致写放大效应,从而进一步提高资源消耗。
技术实现要素:4.本公开实施例至少提供一种数据处理系统、方法、装置、计算机设备及存储介质。
5.第一方面,本公开实施例提供了一种数据处理系统,包括网卡模块、数据管理模块、存储加速模块以及硬盘;所述网卡模块、所述数据管理模块及所述存储加速模块具有目标内存空间的读写权限;
6.所述网卡模块,用于接收网络传输的第一数据,并将所述第一数据存储至所述目标内存空间的第一内存空间;
7.所述数据管理模块,用于从所述第一内存空间读取所述第一数据,并对所述第一数据进行拆分,得到多段第二数据;分别确定各段所述第二数据对应的校验信息,并将所述各段第二数据的校验信息作为第三数据存储至所述目标内存空间中的第二内存空间;基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据;
8.所述存储加速模块,用于控制所述硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据。
9.本公开实施例中,网卡模块、数据管理模块以及存储加速模块都具有第一内存空间的读写权限,从而使网卡模块接收到的第一数据在各个模块之间共享,不需要发生数据传输及拷贝,降低了资源占用;并且,通过将校验信息存储在第二内存空间,并由存储加速模块控制硬盘直接从第一内存空间及第二内存空间中获取数据,并直接写入硬盘,由硬盘组装数据,实现零拷贝的数据传输,避免在数据管理模块进行数据组装,进一步降低了资源占用。
10.进一步的,通过内存互通和零拷贝的数据传输的实现,从而有效降低数据传输的延迟,提高数据传输的带宽利用率,降低系统的内存占用需求,有助于减少由于内存带宽瓶颈和负载占用导致的性能问题,提升系统的性能、效率、响应速度和资源利用率。
11.一种可选的实施方式中,所述网卡模块、所述数据管理模块及所述存储加速模块运行于同一线程中。
12.本公开实施例中,网卡模块、数据管理模块及存储加速模块运行于同一线程中,通过这种方式,网卡模块、数据管理模块及存储加速模块可以访问同样的目标内存空间,因此数据可以直接在内存中传递,无需额外的内存拷贝和数据复制,从而有助于实现高效的内存互通和零拷贝的数据传输,并且不需要进行内存共享的复杂设置,实现较为简单。
13.一种可选的实施方式中,所述存储加速模块在控制所述硬盘从所述目标内存空间读取所述第二数据及所述第三数据时,用于:
14.获取所述网卡模块的内存映射表;所述内存映射表中包括所述网卡模块的虚拟内存地址与物理内存地址之间的映射关系;
15.控制所述硬盘基于所述内存映射表,确定所述第二数据以及所述第三数据的物理内存地址;
16.控制所述硬盘基于所述物理内存地址,读取所述第二数据以及所述第三数据。
17.本公开实施例中,通过记录有网卡模块虚拟内存地址与物理内存地址之间的映射关系的内存映射表,可以通过存储加速模块控制硬盘根据内存映射表确定第二数据以及第三数据的物理内存地址,从而可以控制硬盘基于物理内存地址读取第二数据以及第三数据,实现硬盘对于网卡模块传输过来的数据的直接访问,因此数据可以直接在网卡模块和硬盘之间进行传输,避免额外的内存拷贝和数据复制,从而有助于实现高效的内存互通和零拷贝的数据传输。
18.一种可选的实施方式中,所述存储加速模块在控制所述硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据时,用于:
19.利用存储性能开发套件spdk,控制所述硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据。
20.本公开实施例中,存储加速模块通过使用存储性能开发套件spdk,可以控制硬盘的数据读取以及数据写入,存储性能开发套件spdk运行在用户态,从而可以消除传统io路径中设计的内核缓冲区到用户缓冲区之间的数据拷贝过程,从而实现从用户态内存到硬盘的数据传输过程中无需进行额外的内存拷贝。
21.一种可选的实施方式中,所述数据管理模块通过以下步骤确定所述数据组装顺序:
22.确定所述多段第二数据分别在所述第一数据中的位置信息;
23.基于所述位置信息,以及所述第二数据与所述第三数据之间的关联关系,确定所述数据组装顺序。
24.本公开实施例中,可以根据各段第二数据分别在第一数据中的位置,以及第二数据与第三数据之间的关联关系,确定针对第二数据以及第三数据的数据组装顺序,有助于
将多段不连续的数据按照数据组装顺序组合起来,从而实现将组装后的第四数据写入硬盘中,辅助消除相关技术中由于数据重组引入的数据拷贝。
25.一种可选的实施方式中,所述数据管理模块用于:
26.基于预设的数据切分尺寸,对所述第一数据进行拆分,得到多段第二数据,并对位于所述第一数据末尾的目标第二数据进行填充操作,得到填充后数据;
27.确定除所述目标第二数据之外的其他第二数据对应的循环冗余校核信息,以及所述填充后数据的循环冗余校核信息;
28.针对任一所述其他第二数据,将所述其他第二数据的循环冗余校核信息作为所述其他第二数据对应的校验信息;
29.将所述填充后数据的循环冗余校核信息作为所述目标第二数据的校验信息;
30.将所述填充操作中,添加至所述目标第二数据中的填充数据作为所述第三数据存储至所述第二内存空间。
31.本公开实施例中,通过对第一数据末尾的目标第二数据进行填充操作,并将添加至目标第二数据中的填充数据作为第三数据存储至第二内存空间,有助于保障第四数据的长度符合整数单位长度,并且针对其他第二数据以及填充后数据,通过确定与其对应的循环冗余校核信息来确定对应的校验信息,有助于保障数据的可靠性。
32.第二方面,本公开实施例还提供一种数据处理方法,应用于数据管理模块,所述方法包括:
33.从目标内存空间的第一内存空间中读取第一数据,并对第一数据进行拆分,得到多段第二数据;
34.分别确定各段所述第二数据对应的校验信息,并将所述各段第二数据的校验信息作为第三数据存储至所述目标内存空间中的第二内存空间;
35.基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据;
36.将所述数据组装指令发送至存储加速模块,以使所述存储加速模块控制硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据;所述数据管理模块与所述存储加速模块具有所述目标内存空间的读写权限。
37.本公开实施例中,可以将第一内存空间中存储的第一数据进行拆分得到多段第二数据,确定各段第二数据的校验信息并作为第三数据存储至第二内存空间,以及确定用于生成具有目标数据结构的第四数据的数据组装指令,将数据组装指令发送至存储加速模块,进而存储加速模块可以控制硬盘从目标内存空间中读取得到第二数据和第三数据,从而在硬盘中写入符合目标数据结构的、包括第二数据和第三数据的第四数据,这样,通过从数据管理模块到存储加速模块的数据传输以及各个模块之间的协作,实现数据从网卡模块接收后经数据管理模块的拆分,经过存储加速模块的控制写入至硬盘中,避免了额外的内存拷贝和数据复制,消除了相关技术中由于数据重组引入的数据拷贝,实现了高效的内存互通和零拷贝的数据传输。
38.进一步的,通过内存互通和零拷贝的数据传输的实现,从而有效降低数据传输的
延迟,提高数据传输的带宽利用率,降低系统的内存占用需求,有助于减少由于内存带宽瓶颈和负载占用导致的性能问题,提升系统的性能、效率、响应速度和资源利用率。
39.第三方面,本公开实施例还提供一种数据处理装置,所述装置包括:
40.数据拆分模块,用于从目标内存空间的第一内存空间中读取第一数据,并对第一数据进行拆分,得到多段第二数据;
41.信息确定模块,用于分别确定各段所述第二数据对应的校验信息,并将所述各段第二数据的校验信息作为第三数据存储至所述目标内存空间中的第二内存空间;
42.数据组装模块,用于基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据;
43.指令发送模块,用于将所述数据组装指令发送至存储加速模块,以使所述存储加速模块控制硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据;所述数据管理模块与所述存储加速模块具有所述目标内存空间的读写权限。
44.第四方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第二方面所述的方法。
45.第五方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第二方面所述的方法。
46.关于上述数据处理装置、计算机设备、及计算机可读存储介质的效果描述参见上述数据处理方法的说明,这里不再赘述。
47.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
48.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
49.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
50.图1示出了本公开一些实施例所提供的一种数据处理系统的原理框图;
51.图2示出了本公开一些实施例所提供的一种数据处理过程的示意图;
52.图3示出了本公开一些实施例所提供的另一种数据处理过程的示意图;
53.图4示出了本公开一些实施例所提供的一种数据处理方法的流程图;
54.图5示出了本公开一些实施例所提供的一种数据处理装置的示意图;
55.图6示出了本公开一些实施例所提供的计算机设备的示意图。
具体实施方式
56.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
57.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
58.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
59.经研究发现,对于用户态内存传输到硬盘的内存拷贝消除,可以使用存储性能开发套件spdk,然而通过这种方式,尽管从spdk的缓冲区到硬盘不需要内存拷贝,但数据从网卡的缓冲区(用户态)到spdk的内存还会涉及一次内存拷贝过程,另一方面,在分布式系统中,为了保证数据的可靠性,常常会存储数据对应的校验信息,这就导致下盘存储的数据与接收到的原始数据并不相同,因此无法将网卡接收到的缓冲区数据直接传递给硬盘,要生成携带有校验信息的数据,再将携带有校验信息的数据存储,会进一步引起拷贝次数的增加,导致写放大效应,从而进一步提高资源消耗,增加对于内存带宽和cpu的负载占用,导致对于额外内存的需求,进而影响系统的效率和性能。
60.基于上述研究,本公开提供了一种数据处理系统、方法、装置、计算机设备及存储介质,网卡模块、数据管理模块以及存储加速模块都具有第一内存空间的读写权限,从而使网卡模块接收到的第一数据在各个模块之间共享,不需要发生数据传输及拷贝,降低了资源占用;并且,通过将校验信息存储在第二内存空间,并由存储加速模块控制硬盘直接从第一内存空间及第二内存空间中获取数据,并直接写入硬盘,由硬盘组装数据,实现零拷贝的数据传输,避免在数据管理模块进行数据组装,进一步降低了资源占用。
61.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的凯发真人首先娱乐的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
62.下面结合附图,对本公开的实施例进行描述。
63.请参阅图1,图1为本公开实施例提供的一种数据处理系统。如图1中所示,本公开实施例提供的数据处理系统100,包括网卡模块110、数据管理模块120、存储加速模块130以及硬盘140。
64.可选地,所述硬盘140可以为非易失性快速存储器(non volatile memory express,nvme),nvme盘的非易失性内存可以提供更好的性能,降低时延。
65.这里,所述网卡模块110、所述数据管理模块120及所述存储加速模块130具有目标内存空间的读写权限。其中,所述目标内存空间中可以包括多个内存空间。
66.一种可选的实施方式中,所述网卡模块110包括网卡111和远程过程调用(remote procedure call,rpc)网络库112,rpc网络库112对网卡111进行管理和控制。
67.所述网卡模块110,用于接收网络传输的第一数据,并将所述第一数据存储至所述目标内存空间的第一内存空间。
68.相应的,当所述第一数据传输至网卡111时,rpc网络库112用于控制网卡111接收所述第一数据,并将述第一数据存储至所述目标内存空间的第一内存空间,从而将所述第一数据传递给数据管理模块120。
69.其中,所述第一数据可以是其他模块通过网络发送至所述网卡模块110的。
70.可以理解,由于所述网卡模块110、所述数据管理模块120均具有目标内存空间的读写权限,因此数据管理模块120可以通过从所述第一内存空间读取数据的方式从网卡模块110接收数据。
71.为了实现所述网卡模块110、所述数据管理模块120及所述存储加速模块130具有目标内存空间的读写权限,在一些实施例中,所述网卡模块110、所述数据管理模块120及所述存储加速模块130共享部分内存,也即所述目标内存空间为所述网卡模块110、所述数据管理模块120及所述存储加速模块130共有的内存。
72.在另一些实施例中,为了减少内存管理成本,还可以是所述网卡模块110、所述数据管理模块120及所述存储加速模块130运行于同一线程中。
73.通过这种方式,网卡模块、数据管理模块及存储加速模块可以访问同样的目标内存空间,因此数据可以直接在内存中传递,无需额外的内存拷贝和数据复制,从而有助于实现高效的内存互通和零拷贝的数据传输,并且不需要进行内存共享的复杂设置,实现较为简单。
74.为了清晰地展示出数据处理过程,图2示出本公开实施例提供的一种数据处理过程的示意图。如图2中所示,网卡模块用于接收第一数据,本示例中,该第一数据为4096字节(需要4kb的存储空间),网卡模块用于将第一数据存储至起始地址为addr0、占据内存为4kb的第一内存空间中,这里,所述起始地址为虚拟内存地址。
75.所述数据管理模块120用于接收来自网卡模块110的数据,并进行数据的处理、组织和重组,具体用于将接收到的数据与对应的校验信息组合,并重新组织数据的布局。
76.具体的,所述数据管理模块120,用于:从所述第一内存空间读取所述第一数据,并对所述第一数据进行拆分,得到多段第二数据;分别确定各段所述第二数据对应的校验信息,并将所述各段第二数据的校验信息作为第三数据存储至所述目标内存空间中的第二内存空间;基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据。
77.可选地,所述数据管理模块120可以接收所述网卡模块110发送的所述第一内存空间的起始地址以及存储数据长度,基于起始地址以及存储数据长度从所述第一内存空间读取得到所述第一数据。
78.在所述数据管理模块120用于对所述第一数据进行拆分时,可以按照预设的数据
拆分要求进行拆分,所述数据拆分要求指示拆分后的第二数据的数量、各段第二数据的长度以及拆分顺序。
79.在所述数据管理模块120拆分得到多段第二数据后,所述数据管理模块120用于在所述目标内存空间中申请一个新的第二内存空间,所述第二内存空间用于存放所述第三数据。
80.其中,所述第二内存空间和所述第一内存空间可以不是连续的内存空间。
81.示例性的,如图2中所示,第一内存空间的起始地址为addr0、终止地址为从addr0后延续4kb的地址,而第二内存空间的起始地址为addr1,并不一定是与第一内存空间的终止地址一致。
82.在所述数据管理模块120用于将所述第三数据存储至所述第二内存空间后,所述数据管理模块120用于确定针对所述第二数据以及所述第三数据的数据组装顺序,然后基于所述数据组装顺序,生成数据组装指令,进而将所述数据组装指令发送至所述存储加速模块130,以供所述存储加速模块130基于所述数据组装指令控制所述硬盘140进行数据的读取和写入。
83.可选地,所述数据组装指令可以通过散集列表(scatter gather list,sgl)方式进行组织,从而实现将多段不连续的内存空间中的数据按照数据组装顺序组合起来。
84.针对所述数据组装顺序的确定,在一些实施例中,所述数据管理模块120用于确定所述多段第二数据分别在所述第一数据中的位置信息;基于所述位置信息,以及所述第二数据与所述第三数据之间的关联关系,确定所述数据组装顺序。
85.上述步骤中,所述数据管理模块120首先用于确定每段所述第二数据的位置信息,所述位置信息用于指示所述第二数据在所述第一数据中的位置和排列顺序,并用于结合各个所述第二数据与各个所述第三数据之间的关联关系,所述关联关系用于指示相对应的第二数据和第三数据,从而确定出所述数据组装顺序。
86.可选地,所述数据组装顺序可以是保持所述第二数据的排列顺序,并在相邻的两个第二数据之间加入与第二数据对应的第三数据,从而将关联的第二数据与第三数据进行组合。
87.这样,可以根据各段第二数据分别在第一数据中的位置,以及第二数据与第三数据之间的关联关系,确定针对第二数据以及第三数据的数据组装顺序,有助于将多段不连续的数据按照数据组装顺序组合起来,从而实现将组装后的第四数据写入硬盘中,辅助消除相关技术中由于数据重组引入的数据拷贝。
88.在实际使用中,大多需要写入内存空间中的数据的长度符合整数单位长度。因此,在确定各段第二数据的校验信息后,可以确定各个校验信息的长度总和是否满足预设的整数单位长度,若是,所述数据管理模块120可以将各段第二数据的校验信息作为第三数据存储至所述第二内存空间,若否,所述数据管理模块120还可以再针对第二数据补充填充数据,将填充数据与校验信息一同存储至所述第二内存空间,从而保障存储于所述第二内存空间的数据的长度符合整数单位长度。
89.相应的,在一些实施例中,所述数据管理模块120用于:基于预设的数据切分尺寸,对所述第一数据进行拆分,得到多段第二数据,并对位于所述第一数据末尾的目标第二数据进行填充操作,得到填充后数据;确定除所述目标第二数据之外的其他第二数据对应的
循环冗余校核信息,以及所述填充后数据的循环冗余校核信息;针对任一所述其他第二数据,将所述其他第二数据的循环冗余校核信息作为所述其他第二数据对应的校验信息;将所述填充后数据的循环冗余校核信息作为所述目标第二数据的校验信息;将所述填充操作中,添加至所述目标第二数据中的填充数据作为所述第三数据存储至所述第二内存空间。
90.这样,通过对第一数据末尾的目标第二数据进行填充操作,并将添加至目标第二数据中的填充数据作为第三数据存储至第二内存空间,有助于保障第四数据的长度符合整数单位长度,并且针对其他第二数据以及填充后数据,通过确定与其对应的循环冗余校核信息来确定对应的校验信息,有助于保障数据的可靠性。
91.示例性的,对第一数据进行切分,以及生成第三数据时,可以以校验信息所需的字节数,以及上述单位长度为根据。比如,若校验信息包括32个字节,数据对齐需求为以4kb为基准进行对齐,则可以如图2所示,在网卡模块将第一数据存储至起始地址为addr0的第一内存空间中后,数据管理模块从第一内存空间读取4096b的第一数据,从目标内存空间中新申请起始地址为addr1、占据内存为4kb的第二内存空间,基于上述切分条件,对第一数据进行拆分,得到两段第二数据,分别为4064b和32b,并对位于第一数据末尾的32b的目标第二数据进行填充操作,将4032b的数据作为填充数据添加至目标第二数据中,得到填充后数据,接着确定除目标第二数据之外的4064b的其他第二数据对应的32b的循环冗余校核信息,以及填充后数据的32b的循环冗余校核信息,针对4064b的其他第二数据,将4064b的其他第二数据的32b的循环冗余校核信息作为4064b的其他第二数据对应的校验信息;将填充后数据的32b的循环冗余校核信息作为目标第二数据的校验信息,将各段第二数据的校验信息作为第三数据存储至第二内存空间,同时一并将填充操作中添加至目标第二数据中的4032b的填充数据作为第三数据存储至第二内存空间。
92.此时,第一内存空间中存储有两段第二数据,分别为4064b和32b,第二内存空间中存储有三段第三数据,分别为32b、32b和4032b,其中,第一段32b为4064b的第二数据的循环冗余校核信息,第二段32b为由32b的第二数据和4032b的填充数据组成的填充后数据的循环冗余校核信息,4032b为填充操作中,添加至32b的第二数据中的填充数据。
93.然后,数据管理模块用于确定多段第二数据分别在所述第一数据中的位置信息,基于位置信息,以及第二数据与第三数据之间的关联关系,确定数据组装顺序,基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据。
94.本示例中,所述目标数据结构包括五段子数据,具体为:第一段子数据为4064b的第二数据的循环冗余校核信息,对应的内存地址为addr1,长度为32b,第二段子数据为第二数据,对应的内存地址为addr0,长度为4064b,第三段子数据为由32b的第二数据和4032b的填充数据组成的填充后数据的循环冗余校核信息,对应的内存地址为从addr1后延续32b的地址,长度为32b,第四段子数据为第二数据,对应的内存地址为从addr0后延续4064b的地址,长度为32b,第五段子数据为填充数据,对应的内存地址为从addr1后延续64b的地址,长度为4032b。
95.基于前述内容可知,所述数据管理模块120用于将所述数据组装指令发送至所述存储加速模块130,相应的,所述存储加速模块130在接收到所述数据组装指令后,用于控制
所述硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据。
96.具体的,所述存储加速模块130用于基于所述数据组装指令指示的所述第四数据中各段子数据的数据来源,控制所述硬盘分别从所述目标内存空间中的所述第一内存空间中读取所述第二数据以及从所述目标内存空间中的所述第而内存空间中读取第三数据,并基于读取的数据以及所述数据组装指令指示的所述目标数据结构,将读取的第二数据和第三数据按照所述目标数据结构进行组合,进而在所述硬盘中写入所述第四数据。
97.为了实现网卡模块110接收到的数据可以提交给硬盘140,以及所述网卡模块110、所述数据管理模块120和所述存储加速模块130之间的免拷贝数据传输,所述网卡模块110和所述存储加速模块130可以进行内存相互注册,从而保障网卡模块110中的rpc网络库112的内存可以被硬盘140访问,以及存储加速模块130的内存可以被网卡模块110中的网卡111访问。
98.具体的,针对所述网卡模块110和所述存储加速模块130的内存相互注册,可以是rpc网络库112用于确定所述网卡模块110的内存映射表,所述内存映射表中包括所述网卡模块110的虚拟内存地址与物理内存地址之间的映射关系,所述rpc网络库112用于在初始化过程中将所述内存映射表注册至所述存储加速模块130。
99.同样的,所述存储加速模块130还用于确定所述存储加速模块130的内存映射表,该内存映射表中包括所述存储加速模块130的虚拟内存地址与物理内存地址之间的映射关系,所述存储加速模块130用于在初始化过程中将其内存映射表注册至所述rpc网络库112。
100.这样,所述rpc网络库112和所述存储加速模块130可以互相访问对方的内存,从而实现网卡模块110中的rpc网络库112的内存可以被硬盘140访问,以及存储加速模块130的内存可以被网卡模块110中的网卡111访问。
101.相应的,在实际实施中,所述存储加速模块130在控制所述硬盘从所述目标内存空间读取所述第二数据及所述第三数据时,用于:获取所述网卡模块110的内存映射表;所述内存映射表中包括所述网卡模块的虚拟内存地址与物理内存地址之间的映射关系;控制所述硬盘140基于所述内存映射表,确定所述第二数据以及所述第三数据的物理内存地址;控制所述硬盘140基于所述物理内存地址,读取所述第二数据以及所述第三数据。
102.上述步骤中,所述存储加速模块130在接收到所述数据管理模块120发送的所述数据组装指令后,可以用于控制所述硬盘140基于所述数据组装指令确定所述第二数据以及所述第三数据的虚拟内存地址,再用于控制所述硬盘140结合所述内存映射表指示的所述网卡模块的虚拟内存地址与物理内存地址之间的映射关系,确定所述第二数据以及所述第三数据的物理内存地址,进而用于控制所述硬盘140基于所述物理内存地址,读取所述第二数据以及所述第三数据。
103.这样,通过记录有网卡模块虚拟内存地址与物理内存地址之间的映射关系的内存映射表,可以通过存储加速模块控制硬盘根据内存映射表确定第二数据以及第三数据的物理内存地址,从而可以控制硬盘基于物理内存地址读取第二数据以及第三数据,实现硬盘对于网卡模块传输过来的数据的直接访问,因此数据可以直接在网卡模块和硬盘之间进行传输,避免额外的内存拷贝和数据复制,从而有助于实现高效的内存互通和零拷贝的数据传输。
104.在具体实施中,所述存储加速模块130用于利用存储性能开发套件spdk,控制所述硬盘140从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘140中写入所述第四数据。
105.这样,存储加速模块通过使用存储性能开发套件spdk,可以控制硬盘的数据读取以及数据写入,存储性能开发套件spdk运行在用户态,从而可以消除传统io路径中设计的内核缓冲区到用户缓冲区之间的数据拷贝过程,从而实现从用户态内存到硬盘的数据传输过程中无需进行额外的内存拷贝。
106.继续参见图2可见,存储加速模块用于控制硬盘从第二数据和第三数据的虚拟内存地址对应的物理内存地址来读取得到第二数据和第三数据,并按照目标数据结构将读取的数据进行组合得到8kb的第四数据,并将8kb的第四数据写入硬盘中。本示例中,第四数据包括五个子数据,其中,第一个子数据为4064b的第二数据的循环冗余校核信息,长度为32b,第二个子数据为第二数据,长度为4064b,第三个子数据为由32b的第二数据和4032b的填充数据组成的填充后数据的循环冗余校核信息,长度为32b,第四个子数据为第二数据,长度为32b,第五个子数据为填充数据,长度为4032b。
107.本公开实施例所提供的数据处理系统,网卡模块、数据管理模块以及存储加速模块都具有第一内存空间的读写权限,从而使网卡模块接收到的第一数据在各个模块之间共享,不需要发生数据传输及拷贝,降低了资源占用;并且,通过将校验信息存储在第二内存空间,并由存储加速模块控制硬盘直接从第一内存空间及第二内存空间中获取数据,并直接写入硬盘,由硬盘组装数据,实现零拷贝的数据传输,避免在数据管理模块进行数据组装,进一步降低了资源占用。
108.进一步的,通过内存互通和零拷贝的数据传输的实现,从而有效降低数据传输的延迟,提高数据传输的带宽利用率,降低系统的内存占用需求,有助于减少由于内存带宽瓶颈和负载占用导致的性能问题,提升系统的性能、效率、响应速度和资源利用率。
109.本公开实施例描述了将网卡模块接收到的数据写入硬盘的过程,结合图1可以看得到,在各个模块之间数据可以双向传输,因此,还可以从硬盘中读取数据写入网卡模块。
110.相应地,为了清晰地展示出从硬盘中读取数据提交至网卡模块的过程,图3示出本公开实施例提供的另一种数据处理过程的示意图。如图3中所示,硬盘中存储有8kb的第五数据,本示例中,第五数据包括四段子数据,其中,第一段子数据长度为32b,第二段子数据长度为4064b,第三段子数据长度为32b,第四段子数据长度为4064b。数据管理模块用于在目标内存空间中申请第三内存空间,所述第三内存空间的起始地址为addr0、终止地址为从addr0后延续8kb的地址。
111.然后,所述数据管理模块用于向存储加速模块发送数据存储指令,所述数据存储指令用于存储具有目标数据结构的第六数据,所述目标数据结构指示有所述第六数据中各段子数据的数据来源,所述第六数据中的子数据即为所述第五数据中的子数据。
112.所述存储加速模块用于按照所述数据存储指令,控制所述硬盘将所述第五数据中的子数据重组为第六数据存储至所述第三内存空间。所述数据管理模块用于从所述第三内存空间中读取所述第六数据,并对所述第六数据按照所述目标数据结构进行拆分,得到多段第七数据,其中,第一段第七数据对应的内存地址为从addr0后延续8128b的地址,长度为32b,第二段第七数据对应的内存地址为addr0,长度为4064b,第三段第七数据对应的内存
地址为从addr0后延续8160b的地址,长度为32b,第四段第七数据对应的内存地址为从addr0后延续4064b的地址,长度为4064b。
113.接着,所述数据管理模块用于对各段第七数据进行循环冗余校核信息的计算和校验,确定出各段第七数据中包括的传输数据以及传输数据对应的校验信息,进而基于传输数据以及传输数据对应的校验信息,确定出需要传输至网卡模块的第八数据,所述第八数据对应的内存地址为addr0,长度为4kb。所述网卡模块用于从所述第三空间中读取所述第八数据。
114.这样,通过从存储加速模块到数据管理模块再到网卡模块的数据传输以及各个模块之间的协作,实现数据通过存储加速模块的控制从硬盘中读取,后经数据管理模块的计算和校验,写入至网卡模块中,避免了额外的内存拷贝和数据复制,消除了相关技术中由于数据重组引入的数据拷贝,实现了高效的内存互通和零拷贝的数据传输。
115.需要说明的是,关于数据处理系统中的各组成部分的处理流程、以及各组成部分之间的交互流程的描述,并不意味着严格的处理流程和交互流程而对实施过程构成任何限定,各组成部分的处理流程、和交互流程应当以其功能和可能的内在逻辑确定。
116.基于同一技术构思,本公开实施例中还提供了与数据管理模块对应的数据处理方法,由于本公开实施例中的数据处理方法解决问题的原理与本公开实施例上述数据管理模块相似,因此数据处理方法的实施可以参见数据管理模块的实施,重复之处不再赘述。
117.请参阅图4,图4为本公开实施例提供的一种数据处理方法的流程图,所述数据处理方法应用于数据管理模块,如图4中所示,该数据处理方法包括步骤s401~s404,其中:
118.s401:从目标内存空间的第一内存空间中读取第一数据,并对第一数据进行拆分,得到多段第二数据。
119.s402:分别确定各段所述第二数据对应的校验信息,并将所述各段第二数据的校验信息作为第三数据存储至所述目标内存空间中的第二内存空间。
120.s403:基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据。
121.s404:将所述数据组装指令发送至存储加速模块,以使所述存储加速模块控制硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据;所述数据管理模块与所述存储加速模块具有所述目标内存空间的读写权限。
122.本公开实施例提供的数据处理方法,可以将第一内存空间中存储的第一数据进行拆分得到多段第二数据,确定各段第二数据的校验信息并作为第三数据存储至第二内存空间,以及确定用于生成具有目标数据结构的第四数据的数据组装指令,将数据组装指令发送至存储加速模块,进而存储加速模块可以控制硬盘从目标内存空间中读取得到第二数据和第三数据,从而在硬盘中写入符合目标数据结构的、包括第二数据和第三数据的第四数据,这样,通过从数据管理模块到存储加速模块的数据传输以及各个模块之间的协作,实现数据从网卡模块接收后经数据管理模块的拆分,经过存储加速模块的控制写入至硬盘中,避免了额外的内存拷贝和数据复制,消除了相关技术中由于数据重组引入的数据拷贝,实
现了高效的内存互通和零拷贝的数据传输。
123.进一步的,通过内存互通和零拷贝的数据传输的实现,从而有效降低数据传输的延迟,提高数据传输的带宽利用率,降低系统的内存占用需求,有助于减少由于内存带宽瓶颈和负载占用导致的性能问题,提升系统的性能、效率、响应速度和资源利用率。
124.本公开实施例描述了将网卡模块接收到的数据写入硬盘的过程,相应地,在其他实施例中,还提供另一种数据处理方法,实现从硬盘中读取数据提交至网卡模块的过程,这里,具体的数据处理方法的实施可以参见数据管理模块的实施,重复之处不再赘述。
125.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
126.基于同一发明构思,本公开实施例中还提供了与数据处理方法对应的数据处理装置,由于本公开实施例中的数据处理装置解决问题的原理与本公开实施例上述数据处理方法相似,因此数据处理装置的实施可以参见数据处理方法的实施,重复之处不再赘述。
127.参照图5所示,为本公开实施例提供的一种数据处理装置的示意图,本公开实施例提供的数据处理装置,应用于上述的数据管理模块,所述数据处理装置可以与所述数据管理模块为不同名称下的相同装置,所述数据处理装置也可以是所述数据管理模块的一部分,所述数据处理装置中的模块与所述数据管理模块中对应功能的单元可以耦合在一起,共同实现同一功能,如图5中所示,本公开实施例提供的数据处理装置500包括:
128.数据拆分模块510,用于从目标内存空间的第一内存空间中读取第一数据,并对第一数据进行拆分,得到多段第二数据。
129.信息确定模块520,用于分别确定各段所述第二数据对应的校验信息,并将所述各段第二数据的校验信息作为第三数据存储至所述目标内存空间中的第二内存空间。
130.数据组装模块530,用于基于针对所述第二数据以及所述第三数据的数据组装顺序,生成数据组装指令;所述数据组装指令用于生成具有目标数据结构的第四数据;所述目标数据结构指示有所述第四数据中各段子数据的数据来源;所述子数据包括所述第二数据以及所述第三数据。
131.指令发送模块540,用于将所述数据组装指令发送至存储加速模块,以使所述存储加速模块控制硬盘从所述目标内存空间读取所述第二数据及所述第三数据,并基于读取的数据以及所述目标数据结构,在所述硬盘中写入所述第四数据;所述数据管理模块与所述存储加速模块具有所述目标内存空间的读写权限。
132.本公开实施例提供的数据处理装置,可以将第一内存空间中存储的第一数据进行拆分得到多段第二数据,确定各段第二数据的校验信息并作为第三数据存储至第二内存空间,以及确定用于生成具有目标数据结构的第四数据的数据组装指令,将数据组装指令发送至存储加速模块,进而存储加速模块可以控制硬盘从目标内存空间中读取得到第二数据和第三数据,从而在硬盘中写入符合目标数据结构的、包括第二数据和第三数据的第四数据,这样,通过从数据管理模块到存储加速模块的数据传输以及各个模块之间的协作,实现数据从网卡模块接收后经数据管理模块的拆分,经过存储加速模块的控制写入至硬盘中,避免了额外的内存拷贝和数据复制,消除了相关技术中由于数据重组引入的数据拷贝,实现了高效的内存互通和零拷贝的数据传输。
133.进一步的,通过内存互通和零拷贝的数据传输的实现,从而有效降低数据传输的延迟,提高数据传输的带宽利用率,降低系统的内存占用需求,有助于减少由于内存带宽瓶颈和负载占用导致的性能问题,提升系统的性能、效率、响应速度和资源利用率。
134.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
135.对应于上述的数据处理方法,本公开实施例还提供了一种计算机设备,如图6所示,为本公开实施例提供的计算机设备的结构示意图,包括:
136.处理器610、存储器620、和总线630。其中,存储器620用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器610中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器610通过内存621与外部存储器622进行数据交换。
137.本技术实施例中,存储器620具体用于存储执行本技术方案的应用程序代码,并由处理器610来控制执行。也即,当计算机设备600运行时,处理器610与存储器620之间通过总线630通信,使得处理器610执行存储器620中存储的应用程序代码,进而执行前述任一实施例中所述的数据处理方法的步骤。
138.其中,存储器620可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
139.处理器610可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
140.可以理解的是,本技术实施例示意的结构并不构成对计算机设备600的具体限定。在本技术另一些实施例中,计算机设备600可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
141.上述指令的具体执行过程可以参考本公开实施例中所述的数据处理方法的步骤,此处不再赘述。
142.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
143.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
144.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
145.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
146.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
147.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
148.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
149.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。