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

文档序号:32350684发布日期:2022-11-26 12:56阅读:39来源:国知局
数据传输方法及装置与流程

1.本技术涉及计算机技术领域,特别是涉及一种数据传输方法、装置、分布式数据同步系统、分布式计算系统、电子设备、机器可读介质。


背景技术:

2.端与端之间的数据传输,一直是实现复杂应用交互功能必不可少的环节。
3.相关技术中,发送端与接收端之间的文件传输过程,都需要各端的内核处理器和运行在用户态的用户系统积极参与,且传输过程中需要使用大量缓存空间来中转数据,实现数据的内存地址的转换。
4.但是,发明人经过研究发现,目前的方案中内核处理器和缓存的压力较高,系统开销较大。


技术实现要素:

5.本技术实施例提供了一种数据传输方法,以解决相关技术中内核处理器和缓存的压力较高,系统开销较大的问题。
6.相应的,本技术实施例还提供了一种数据传输装置、分布式数据同步系统、分布式计算系统、电子设备、机器可读介质,用以保证上述方法的实现及应用。
7.为了解决上述问题,本技术实施例公开了一种数据传输方法,应用于用户设备,所述用户设备的本地内存中设置有多个第一内存片区,所述第一内存片区的容量相同,包括:
8.响应于第一读取请求,获取目标文件的占用空间大小,并根据所述目标文件的占用空间大小和所述第一内存片区的容量,确定存储所述目标文件所需的目标第一内存片区的数量;所述目标第一内存片区用于存储所述目标文件的局部内容;
9.根据目标第一内存片区的地址信息、所述目标文件的标识、与所述目标第一内存片区对应的文件存储参数、生成与所述目标第一内存片区对应的第二读取请求并向服务端发送所述第二读取请求,所述文件存储参数用于表征所述目标第一内存片区所要存储的局部内容的特征;
10.通过所述目标第一内存片区接收所述服务器发送的所述目标文件的局部内容。
11.本技术实施例公开了一种数据传输方法,应用于用户设备,所述用户设备的本地内存中设置有多个第一内存片区,所述方法包括:
12.响应于第一读取请求,获取目标文件的占用空间大小,并根据所述目标文件的占用空间大小和所述第一内存片区的容量,确定存储所述目标文件所需的目标第一内存片区;所述目标第一内存片区用于存储所述目标文件的局部内容;
13.根据目标第一内存片区的地址信息以及与所述目标第一内存片区对应的文件存储参数,生成与所述目标第一内存片区对应的第二读取请求并发送给服务器,所述文件存储参数用于表征所述目标第一内存片区所要存储的局部内容的特征;
14.通过所述目标第一内存片区接收所述服务器发送的所述目标文件的局部内容。
15.本技术实施例公开了一种数据传输方法,应用于服务器,所述服务器的本地具有多个第二内存片区,所述方法包括:
16.获取用户设备发送的第二读取请求,所述第二读取请求包括:目标第一内存片区的地址信息以及与所述目标第一内存片区对应的文件存储参数;所述目标第一内存片区用于存储目标文件的局部内容;所述文件存储参数用于表征所述目标第一内存片区所要存储的局部内容的特征;
17.确定所述目标文件在所述服务器本地的存储位置,并根据所述文件存储参数,从所述存储位置提取所述目标文件的局部内容复制到目标第二内存片区,所述目标第二内存片区为任一第二内存片区;
18.按照所述目标第一内存片区的地址信息,将所述目标第二内存片区存储的局部内容发送至所述用户设备的目标第一内存片区进行存储。
19.可选地,所述根据所述文件存储参数,从所述存储位置提取所述目标文件的局部内容复制到目标第二内存片区,包括:
20.根据所述文件存储参数,确定所述局部内容在所述存储位置中的局部位置;
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.本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
附图说明
47.图1是本技术实施例的一种数据传输过程的系统架构图;
48.图2是本技术实施例的一种文件下载场景示意图;
49.图3是本技术实施例的一种分布式数据同步系统的场景示意图;
50.图4是本技术实施例的一种分布式计算系统的场景示意图;
51.图5是本技术实施例的一种数据传输方法的步骤流程图;
52.图6是本技术实施例的另一种数据传输方法的步骤流程图;
53.图7是本技术实施例的一种数据传输方法的具体步骤流程图;
54.图8是本技术实施例的另一种数据传输方法的具体步骤流程图;
55.图9是本技术实施例的一种分布式数据同步系统的框图;
56.图10是本技术实施例的一种分布式计算系统的框图;
57.图11是本技术实施例的一种数据传输装置的框图;
58.图12是本技术实施例的另一种数据传输装置的框图;
59.图13是本技术一实施例提供的装置的结构示意图。
具体实施方式
60.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
61.为使本领域技术人员更好地理解本技术,以下对本技术涉及的概念进行说明:
62.远程直接内存访问技术(rdma,remote direct memoryaccess):一种能够通过网络将数据直接从一台计算机的内存传输到另一台计算机内存的技术,其可以不对操作系统造成任何影响,通过直接在应用程序内存间传输数据,避免了应用程序内存与操作系统缓存之间的数据复制过程,这种传输不需要处理器和上下文切换的开销,解放了内存带宽和处理器,可以有效改进应用系统性能。
63.rdma write:一台计算机将本地内存中的数据,直接写入另一台计算机的本地内存的数据写入方式。
64.远程直接数据存取装置:应用了rdma技术的装置,可以为网卡形式。
65.内存片区:服务器和用户设备的本地内存中切分的一个局部片区,一个内存片区用于存储一个较大文件的局部内容,也可以完整存储一个较小文件;内存片区还可以具有对应的地址,服务器和用户设备可以通过该地址定位内存片区。
66.页高速缓冲存储器(page cache):由服务器和用户设备的内核管理的内存片区,用于缓存文件的逻辑内容,对数据进行读取形式上的优化,从而加快对磁盘上映像和数据的访问。
67.文件存储参数:在对较大文件进行切片传输时,为了保证各个文件切片(文件的局部内容)之间的连续性,可以通过文件存储参数来定义文件切片,具体的,文件存储参数包括:文件偏移量参数和长度参数,文件偏移量参数用于表征文件切片的起始位置,长度参数用于表征文件切片的内容长度。
68.内存注册:服务器和用户设备中的进程针对所需要使用的内存片区,可以在操作系统中进行注册,注册后的内存片区可以与该进程进行绑定。
69.直接方式读写接口(direct i/o):一种绕过文件写缓冲区和读缓存区的读取方式,在一个进程对系统文件进行读写操作的时候,调用直接方式读写接口可以越过系统的文件写缓冲区和读缓存区从而直接访问内存。
70.虚拟文件系统(vfs,virtual file system):可以采用标准的读写方式读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口,可以使读写等系统调用不用关心底层的存储介质和文件系统类型。
71.第四代扩展文件系统(ext4,fourth extended filesystem):内核操作系统的文件系统,是由内核提供且直接对接硬盘输入/输出接口的底层文件系统。
72.本技术实施例中的数据传输方法,具体可以应用于用户设备和服务器之间基于rdma的数据传输场景,在一个相关技术流程中,服务器收到用户设备的文件获取请求时,可以在服务器本地注册与文件大小匹配的内存片区,并从服务器本地内存中将文件数据读入内核层的page cache中,之后服务器中运行在用户态的应用进程再从page cache中提取文件数据,并将文件数据存储到注册的内存片区中,最后服务器通过rdma网卡将内存片区中的文件数据通过网络直接传输至用户设备的内存片区,完成文件的传输。
73.针对上述实现过程,可以实现通过网络将文件直接由一个服务器的内存片区传输至另用户设备的内存片区,从而降低了服务器和用户设备中处理器的压力和系统开销,也节省了系统缓存之间的数据复制过程。但是上述实现过程依然存在两个问题:1、服务器每次响应于文件获取请求时,都需要进行内存注册,而内存注册天然存在系统开销和耗时较
高的问题,降低了响应速度,并且每次注册都需要占用新的内存片区,造成内存浪费。2、上述实现过程中,服务器需要将本地内存中的文件数据读入内核层的page cache中,再将page cache中的文件数据存储到注册的内存片区,其本质是将文件数据从内存的一个片区转移到另一片区,该过程实际还是产生了较大的内存使用成本。
74.为了解决上述问题1,本技术实施例可以在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区,从而提前在服务器和用户设备中分别形成内存池,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率。
75.需要说明的是,优选的,服务器和用户设备各自注册的内存片区的容量可以相同;在另一种实现方式中,服务器和用户设备各自注册的内存片区的容量也可以不同,在服务器和用户设备各自注册的内存片区的容量不同的情况下,服务器和用户设备可以对各自注册的内存片区的容量进行记录,在具体使用内存片区时,服务器和用户设备可以根据记录的内存片区的容量和传输的文件的大小,从注册的内存片区中,选取传输该文件所要用到的内存片区。
76.为了解决上述问题2,本技术实施例可以省去page cache的数据中转,服务器可以将本地内存的文件数据,绕过page cache直接存储在注册的内存片区中,从而减少了文件传输过程中内存中数据拷贝的次数,进一步降低了内存使用成本,提升了传输效率。
77.参照图1,其示出了本技术实施例提供的一种数据传输过程的系统架构图,包括:服务器和用户设备。本技术实施例具体通过用户层、内核层、硬件层对服务器和用户设备的数据传输进行描述。用户层是基于用户态构建的,内核层是基于内核态构建的,用户层为上层应用程序的活动空间,应用程序的执行必须依托于内核层提供的资源,因此,内核层控制计算机的硬件资源,并提供上层应用程序运行的环境,运行在内核层中的应用程序可以通过系统调用,访问内核层中的计算机资源,服务器和用户设备的物理计算机资源即为硬件层,如硬盘、网卡等。
78.本技术实施例中,参照图1,在开始文件传输之前,用户设备可以进行一次内存注册,针对第一进程注册m个第一内存片区形成内存池,第一进程注册的内存池中包含第一内存片区1、第一内存片区2、第一内存片区3

第一内存片区m,优选的,第一内存片区1、第一内存片区2、第一内存片区3

第一内存片区m的容量相同,这些第一内存片区可以供第一进程进行使用,同理,服务器也可以事先进行一次内存注册,针对第二进程注册n个第二内存片区形成内存池,第二进程注册的内存池中包含第二内存片区1、第二内存片区2、第二内存片区3

第二内存片区n,优选的,第二内存片区1、第二内存片区2、第二内存片区3

第二内存片区n的容量和第一内存片区相同,这些第二内存片区可以供第二进程进行使用,其中,本技术实施例对m和n的大小不作限定,m和n可以相同,也可以不相同。另外,在开始文件传输之前,服务器也以将服务器本地存储的文件的信息(文件标识、占用空间等信息)发送给用户设备以供其知晓。
79.在用户设备需要获取服务器存储的一个目标文件供第一进程使用时,用户设备可以响应于第一进程对目标文件的第一读取请求,获取目标文件的占用空间大小以及标识,并确定存储目标文件所需的目标第一内存片区的数量,即目标第一内存片区的容量之和需大于或等于目标文件的占用空间大小。之后用户设备可以根据目标第一内存片区的地址信息、目标文件的标识、与目标第一内存片区对应的文件存储参数、生成与目标第一内存片区对应的第二读取请求,即针对每个目标第一内存片区生成一个第二读取请求,使得一个第二读取请求用于请求获取目标文件的一个文件切片(局部内容),具体的,第二读取请求中的文件存储参数可以定义该文件切片的起始位置和内容长度。在目标第一内存片区的数量为多个的情况下,用户设备会得到一个顺序排列的第二读取请求的请求列表,用户设备可以将第二读取请求的请求列表发送至服务器。需要说明的是,一种实现方式中,用户设备可以依次将请求列表中的第二读取请求发送至服务器;另一种实现方式中,用户设备可以将请求列表中的第二读取请求同时发送至服务器。
80.服务器在获取到第二读取请求的请求列表之后,可以从其中第一个第二读取请求开始进行处理,即参照图1,针对每个第二读取请求,具体通过第二读取请求中的目标文件的标识,确定目标文件在服务器本地硬盘的存储位置,并调用内核层的direct i/o接口,绕过内核层的page cache和ext4直接访问硬盘输入/输出接口,来按照第二读取请求中的文件存储参数对硬盘中的目标文件进行切片获得对应的文件切片,并将文件切片复制到一个目标第二内存片区(如第二内存片区3)中,最后服务器的远程直接数据存取装置(rdma网卡)可以利用rdma技术的rdma write,直接将该目标第二内存片区中的文件切片,通过互联网传输至用户设备的远程直接数据存取装置,用户设备的远程直接数据存取装置可以再根据第二读取请求中包含的目标第一内存片区(如第一内存片区3)的地址信息,将文件切片写入该目标第一内存片区中,直至服务器将目标文件的所有文件切片都传输至用户设备的对应目标第一内存片区中,完成用户设备对目标文件的获取,此时目标文件存储在第一进程的目标第一内存片区中,目标文件可以供第一进程调用使用,如第一进程可以将目标文件从目标第一内存片区中转存至用户设备本地硬盘以实现持久化存储,持久化存储之后,用户设备的内存池可以释放目标第一内存片区的空间,达到内存的释放复用,极大提升了内存的利用效率。另外,服务器发送目标文件完毕后,服务器的内存池可以释放目标第二内存片区的空间,同样达到内存的释放复用。
81.针对上述整个过程,本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,无需进行每次响应时的内存注册操作,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现内存的利用效率的提升。
82.需要说明的是,基于本技术实施例提供的数据传输方法,可以实现的几种具体场景如下:
83.在一种实现方式中,参照图2,其示出了本技术实施例提供的一种文件下载场景示意图,包括:用户设备和服务器,用户设备中可以事先针对第一进程注册多个第一内存片区形成内存池;服务器中可以事先针对第二进程注册多个第二内存片区形成内存池。具体的,在用户设备可以从服务器获取要下载的文件的占用空间大小及标识,并按照上述实施例描述的方式,生成第二读取请求的请求列表发送至服务器,服务器可以按照上述实施例描述
的方式,对第二读取请求的请求列表进行处理,依次将用户设备要下载的文件的每个文件切片由用户设备的内存转存至注册的第二内存片区,并通过rdma方式将文件切片由第二内存片区直接发送至用户设备的第一内存片区,通过该方式可以一直进行数据传输,以完成文件的全部数据的传输,使得用户设备可以获得从服务器下载的文件,该下载的文件可以供用户设备的第一进程调用使用。
84.在另一种实现方式中,参照图3,其示出了本技术实施例提供的一种分布式数据同步系统的场景示意图,分布式数据同步系统包括:上传节点和数据同步节点,上传节点可以接收用户设备上传的文件并存储,数据同步节点旨在从上传节点获取该文件以实现多节点的数据备份同步。其中,上传节点中可以事先注册多个第二内存片区形成内存池;数据同步节点中可以事先注册多个第一内存片区形成内存池。具体的,上传节点用于获取待同步备份的目标文件,并发送目标文件的占用空间大小至数据同步节点;之后数据同步节点可以按照上述实施例描述的生成第二读取请求的请求列表的方式,生成备份请求列表发送至上传节点,使得上传节点可以按照上述实施例描述的处理第二读取请求的请求列表的方式,对备份请求列表进行处理,依次将要备份的目标文件的每个文件切片由上传节点的内存转存至注册的第二内存片区,并通过rdma方式将文件切片由第二内存片区直接发送至数据同步节点的第一内存片区,可以通过该方式实现文件的全部数据的传输,从而实现了对于用户设备上传的一个文件,在分布式数据同步系统的数据同步节点同步备份该文件的目的。需要说明的是,本技术实施例可以由上传节点将待备份的目标文件分别传输至各个数据同步节点,也可以由上传节点将待备份的目标文件传输至一个数据同步节点,再由该数据同步节点将目标文件传输至下一数据同步节点,以此类推直至所有数据同步节点获得目标文件。
85.在另一种实现方式中,参照图4,其示出了本技术实施例提供的一种分布式计算系统的场景示意图,分布式数据同步系统包括:从计算节点和主计算节点,主计算节点用于获取计算任务,将计算任务拆分为多个子任务并将子任务发送给从计算节点进行协同计算。其中,从计算节点中可以事先注册多个第二内存片区形成内存池;主计算节点中可以事先注册多个第一内存片区形成内存池。具体的,从计算节点用于获取子任务进行计算,将计算结果的标识和占用空间大小发送至主计算节点;之后主计算节点可以按照上述实施例描述的生成第二读取请求的请求列表的方式,生成同步请求列表发送至从计算节点,使得从计算节点可以按照上述实施例描述的处理第二读取请求的请求列表的方式,对同步请求列表进行处理,依次将要同步的计算结果的每个文件切片由从计算节点的内存转存至注册的六内存片区,并通过rdma方式将文件切片由第二内存片区直接发送至主计算节点的第一内存片区,从而实现了分布式计算系统中对一个较大计算任务的拆分协同计算,以及计算结果在主计算节点汇总的目的。
86.需要说明的是,本技术实施例中获取目标文件的占用空间大小以及标识、内存片区的地址信息、文件存储参数以及其他使用到的信息、信号或数据的过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
87.本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需
进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
88.参照图5,其示出了本技术实施例提供的一种数据传输方法的步骤流程图,应用于用户设备,用户设备的本地内存中设置有多个第一内存片区,方法包括:
89.步骤101,响应于第一读取请求,获取目标文件的占用空间大小,并根据目标文件的占用空间大小和第一内存片区的容量,确定存储目标文件所需的目标第一内存片区的数量。
90.其中,目标第一内存片区用于存储目标文件的局部内容。
91.在本技术实施例中,第一读取请求可以是用户设备的用户层中第一进程发起的请求,如文件下载请求、文件读取请求等。通过响应于第一读取请求,用户设备可以获取目标文件的占用空间大小,目标文件的占用空间大小可以是由存储该目标文件的服务器提供的信息,也可以是服务器和用户设备事先约定好并存储在用户设备本地的信息。
92.进一步的,由于用户设备的本地内存中设置有多个第一内存片区形成内存池,优选的,第一内存片区的容量相同,则用户设备可以实现内存池的内存管理,即在响应于第一读取请求时,根据目标文件的占用空间大小和第一内存片区的容量,确定存储目标文件所需的目标第一内存片区的数量,达到按量使用内存的目的,降低了后续存储文件时所需内存过量或不足的现象发生的几率。
93.例如,一个目标文件4m大小,一个第一内存片区为1m大小,则所需目标第一内存片区的数量为4。
94.步骤102,根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数、生成与目标第一内存片区对应的第二读取请求并发送给服务器。
95.其中,文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征。
96.在该步骤中,用户设备可以根据目标第一内存片区的地址信息、目标文件的标识、与目标第一内存片区对应的文件存储参数、生成与目标第一内存片区对应的第二读取请求,目标文件的标识用于供服务器查找目标文件,即本技术实施例针对每个目标第一内存片区生成一个第二读取请求,使得一个第二读取请求用于请求获取目标文件的一个文件切片(局部内容),第二读取请求的数量可以与目标第一内存片区的数量的相同,例如,目标第一内存片区的数量为4时,可以依次生成4个第二读取请求组成请求列表。另外,内存片区的地址信息可以唯一定义该内存片区在服务器和用户设备中的位置,如一个内存片区的地址信息可以为0x01ab00a0。
97.当然,本技术实施例中,还可以通过目标文件的其他特征供服务器查找目标文件,比如还可以计算目标文件的哈希值,然后把目标文件的哈希值提高给服务器,服务器根据哈希值查找文件等。
98.步骤103,通过目标第一内存片区接收服务器发送的目标文件的局部内容。
99.在本技术实施例中,由于服务器采用了rdma方式,直接将服务器本地的目标第二内存片区中的文件切片,通过互联网传输至用户设备本地的目标第一内存片区中,即通过rdma技术,减少了数据传输过程中各个终端的内核处理器的参与,以及各个终端的缓存的数据复制压力,也就极大降低了系统开销,提升了系统性能。
100.综上,本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
101.可选地可选地可选地
102.参照图6,其示出了本技术实施例提供的一种数据传输方法的步骤流程图,包括远程直接数据存取装置的服务器,服务器的本地具有多个第二内存片区,方法包括:
103.步骤201,获取用户设备发送的第二读取请求。
104.其中,第二读取请求可以包括:目标第一内存片区的地址信息、与目标第一内存片区对应的文件存储参数;目标第一内存片区用于存储目标文件的局部内容;文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征。
105.当前第二读取请求还可以包括目标文件的标识,或者目标文件的哈希值等可以唯一缺点目标文件的信息,然后可以根据上述信息去查找目标文件在服务器中的存储位置。
106.在本技术实施例中,用户设备可以发送由第二读取请求依次排列组成的第二读取请求的请求列表至服务器,服务器可以对第二读取请求的请求列表进行拆分,依次获得每个第二读取请求进行处理。
107.步骤202,确定目标文件在服务器本地的存储位置,并根据文件存储参数,从存储位置提取目标文件的局部内容复制到目标第二内存片区,目标第二内存片区为任一第二内存片区。
108.在该步骤中,优选的,第二内存片区的容量和用户设备本地切分的第一内存片区的容量相同,服务器针对每个第二读取请求,具体通过第二读取请求中的目标文件的标识,确定目标文件在服务器本地硬盘的存储位置,并调用内核层的direct i/o接口,来按照第二读取请求中的文件存储参数对硬盘中的目标文件进行切片获得对应的文件切片,将文件切片复制到一个目标第二内存片区中。
109.在本技术实施例中,第二内存片区的容量和第二内存片区的容量相同的情况下,服务器选择第二内存片区的计算量简单。当然,在选择过程中,如果第二内存片区中的至少部分不同,此时,可以根据存储参数和第二内存分片的容量,选择最小个数的可以满足该存储参数的目标第二内存片区,然后基于上述目标第二内存片区去读取相应局部内容。
110.可选地可选地步骤203,通过远程直接数据存取装置,按照目标第一内存片区的地址信息,将目标第二内存片区存储的局部内容发送至用户设备的目标第一内存片区进行存
储。
111.最后,服务器的远程直接数据存取装置(rdma网卡)可以利用rdma技术的rdma write操作,直接将该目标第二内存片区中的文件切片,通过互联网传输至用户设备的远程直接数据存取装置,用户设备的远程直接数据存取装置可以再根据第二读取请求中包含的目标第一内存片区的地址信息,将文件切片写入该目标第一内存片区中,直至服务器将目标文件的所有文件切片都传输至用户设备的对应目标第一内存片区中,完成用户设备对目标文件的获取。
112.当然,如果在传输过程中,出现中断,可以采用断点续传的机制,在恢复传输过程时,从中断的位置开始,继续传输数据,本技术此不加以限制。
113.可选地设置多个与所述第二进程关联的第二内存片区可选地综上,本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
114.参照图7,其示出了本技术实施例提供的一种数据传输方法的具体步骤流程图,应用于用户设备,用户设备的本地内存中设置有多个第一内存片区,方法包括:
115.步骤301、响应于第一读取请求,获取目标文件的占用空间大小,并根据目标文件的占用空间大小和第一内存片区的容量,从确定所需第一内存片区的片区数量。
116.在该步骤中,优选的,各个第一内存片区的容量相同,在知晓目标文件的占用空间大小以及第一内存片区的容量的情况下,可以将目标文件的占用空间大小以及第一内存片区的容量的比值,作为所需第一内存片区的片区数量,其中,若比值具有小数点之后的位数,则可以将比值向后取整得到片区数量,如,假设比值为3.1,则向后取整得到的片区数量为4。由于各第一内存片区的容量相同,在后续处理过程中可以直接计算第一内存片区的数量,而不用单独去考虑各个内存片区的容量,计算简单,效率高。
117.当然,如果各个第一内存片区至少部分容量不同,在确定目标第一内存片区时,可以根据目标文件的占用空间大小,以及各第一内存片区的容量,去选择能满足存储目标文件的最小片区数量的目标第一内存片区,然后基于这些目标第一内存片区进行后续的文件传输过程。该过程相对于各第一内存片区的容量相同的情况,计算过程相对复杂。
118.另外的实现方式中,第一内存片区的容量也可以不同,在第一内存片区的容量不同的情况下,用户设备可以对注册的第一内存片区的容量进行记录,在具体使用第一内存片区时,用户设备可以根据记录的第一内存片区的容量和传输的文件的大小,从注册的第一内存片区中,选取传输该文件所要用到的目标第一内存片区。
119.步骤302、按照片区数量,从第一内存片区中,选取片区数量个的目标第一内存片区。
120.步骤303、根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文
件存储参数,生成与目标第一内存片区对应的第二读取请求。
121.在本技术实施例中,在接收到第一读取请求后,可以从读取请求中获取目标文件的占用空间大小,而预先注册的第一内存片区的大小是已知的,那么可以根据目标文件所占用的空间大小,去计算能够满足存储目标文件的第一内存片区的片区数量,然后从已注册的第一内存片区中选择该片区数量的目标第一内存。
122.可选地,步骤302包括:获取第一内存片区的使用状态;根据目标文件的占用空间大小和第一内存片区的容量,确定使用状态为空闲状态的目标第一内存片区,并确定存储目标文件所需的目标第一内存片区的数量。
123.用户设备可以通过第一进程实现对第一内存片区形成的内存池的管理,从而第一进程可以实时获取到各个第一内存片区的使用状态,如已占用、空闲等,基于对使用状态的分析,用户设备在选取目标第一内存片区供当前数据传输使用时,所选用的目标第一内存片区可以是使用状态为空闲状态的内存片区,这样就可以达到按量使用内存,且当前内存使用不与其他内存使用操作冲突的目的,提高内存使用的稳定性。进而用户设备可以根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数,生成与目标第一内存片区对应的第二读取请求,第二读取请求后续可以构建为列表形式。
124.可选地,步骤304包括:
125.子步骤3041,根据目标文件的占用空间大小,以及目标第一内存片区的容量,获取与目标第一内存区片对应的文件存储参数;
126.子步骤3042,根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数,生成与目标第一内存片区对应的第二读取请求。
127.在本技术实施例中,由于从预先注册第一内存片区,每个第一内存片区的具有存储上限,其可能无法存完整个目标文件,为了后续服务器侧能够更方便的发送数据,然后服务器侧从其每个第二内存片区发送到用户设备侧的数据不重复,用户设备侧又方便自己从各目标第一内存分片中按序读取并处理,因此本技术实施例中,可以将目标文件切分为多段,每段由一个目标第一内存片区存储,那么每个目标第一内存片区存储目标文件的哪部分,则可以根据所述目标文件的占用空间大小,以及所述目标第一内存片区的容量,去确定用于存到该目标第一内存片区的存储参数。
128.之后,再根据所述目标第一内存片区的地址信息以及与所述目标第一内存片区对应的文件存储参数,生成与所述目标第一内存片区对应的第二读取请求。
129.可选地,文件存储参数包括:与目标文件的局部内容对应的文件偏移量参数、与目标文件的局部内容对应的长度参数中的一种或多种,文件偏移量参数用于表征局部内容的起始位置,长度参数用于表征局部内容的内容长度。
130.在本技术实施例中,一个第二读取请求用于对应请求获取目标文件的一个文件切片(局部内容),则第二读取请求为了定义想要获取的文件切片,具体可以通过文件偏移量参数(offset)表征该文件切片的起始位置,长度参数(length)用于表征该文件切片的内容长度,另外,由于目标文件的文件切片是连续的,这使得请求列表中的各个第二读取请求也是依次排列的,各个第二读取请求的文件偏移量参数(offset)和长度参数(length)也具有顺序排布的特性。
131.例如,针对一个文件为5a大小,第一内存片区的大小为a,服务器可以将该文件切
分为5个大小为a(a换算为长度单位为1048576)的文件切片进行传输,用户设备为了获得该文件,生成的第二读取请求列表中可以依次包括5个第二读取请求,5个第二读取请求各自的文件偏移量参数(offset)和长度参数(length)分别为:
132.第二读取请求1:文件偏移量参数(offset)=0;长度参数(length)=1048576;
133.第二读取请求2:文件偏移量参数(offset)=1048576;长度参数(length)=1048576;
134.第二读取请求3:文件偏移量参数(offset)=2097152;长度参数(length)=1048576;
135.第二读取请求4:文件偏移量参数(offset)=3145728;长度参数(length)=1048576;
136.第二读取请求5:文件偏移量参数(offset)=4194304;长度参数(length)=1048576。
137.如此,服务端则则可以根据上述存储参数,读取相应长度的文件存入其目标第二内存分片,然后发送到对应的第一内存分片中。
138.步骤304、将第二读取请求按照生成顺序构建为请求列表后,发送请求列表中的第二读取请求至服务器。
139.步骤305,通过目标第一内存片区接收服务器发送的目标文件的局部内容。
140.在本技术实施例中,由于目标文件的文件切片是具有顺序的,则各个文件切片分别对应的第二读取请求也是有一定顺序的,为了记录这种顺序关系,可以按照第二读取请求的生成顺序,构建第二读取请求的请求列表,请求列表中的第二读取请求顺序排列,用户设备可以将第二读取请求的请求列表发送至服务器。
141.可选地,步骤304具体可以通过将请求列表中的第二读取请求依次发送至服务器;或,将请求列表中的至少部分第二读取请求同时发送至服务器的方式实现。
142.在本技术实施例中,根据实际需求的不同,用户设备可以选择将请求列表中的第二读取请求依次发送至服务器;或,将请求列表中的全部或连续的部分第二读取请求同时发送至服务器,从而实现了请求发送的灵活性。而服务端按序接收到第二读取请求后,可以按序读取目标文件中的局部内容,返回给客户端存入相应目标第一内存分片中;服务器在批次接收到第二读取请求后,可以一次性读取各个第二读取请求对应的局部内容,然后依次或者批量返回给客户端,将各个局部数据分布存入各个第二读取请求对应的目标第一内存分片中。
143.可选地,方法还可以包括:
144.步骤306、响应于对用户设备上运行的第一进程的内存注册请求,在用户设备的本地内存中设置多个与第一进程关联的第一内存片区,第一内存片区用于供第一进程使用。
145.在本技术实施例中,参照图1,第一进程是运行在用户设备的用户层并用于进行文件获取的进程,第一进程的正常运行离不开对存储空间的使用,本技术实施例可以在开始传输流程之前,在用户设备的内存中一次注册多个容量相同的第一内存片区供第一进程使用,从而提前在用户设备中形成第一进程管理的内存池,使得用户设备在获取目标文件的过程中,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,另外基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提
升了内存的利用效率。
146.在步骤305之后,还可以包括:
147.步骤307、响应于第一进程的处理指令,对目标第一内存片区存储的目标文件进行处理。
148.在本技术实施例中,用户设备完成目标文件的存储后,目标第一内存片区中的目标文件可以供第一进程调用使用,如,第一进程可以运行目标文件、播放目标文件等,第一进程还可以将目标文件从目标第一内存片区中转存至用户设备本地硬盘以实现持久化存储,持久化存储之后,用户设备的内存池可以释放目标第一内存片区的空间,达到内存的释放复用,极大提升了内存的利用效率。
149.综上,本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
150.参照图8,其示出了本技术实施例提供的一种数据传输方法的具体步骤流程图,应用于服务器,服务器的本地内存中具有多个第二内存片区,方法包括:
151.步骤401、获取用户设备发送的第二读取请求。
152.其中,第二读取请求包括:目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数;目标第一内存片区用于存储目标文件的局部内容;文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征。
153.该步骤可以参照上述步骤201,此处不作赘述。
154.步骤402、确定目标文件在服务器本地的存储位置,通过第二进程向服务器的虚拟文件系统发送第三读取请求。
155.其中,第三读取请求包含文件存储参数,以供虚拟文件系统响应于第三读取请求,调用硬盘输入/输出接口从存储位置提取目标文件的局部内容,并将局部内容复制到目标第二内存片区。
156.在本技术实施例中,参照图1,结合上述实施例对文件偏移量参数(offset)和长度参数(length)的解释说明,服务端可以提取第二读取请求中的文件偏移量参数(offset)和长度参数(length),并根据文件偏移量参数(offset)和长度参数(length)生成第三读取请求发送至虚拟文件系统(vfs),vfs是服务端的内核层中对接用户层的文件系统,可以处理用户层下发的请求。
157.vfs可以根据第三读取请求,直接调用硬盘接口从存储位置提取目标文件的局部内容,并将局部内容复制到目标第二内存片区,该过程可以省去page cache和ext4的数据中转,从而减少了文件传输过程中内存中数据拷贝的次数,进一步降低了内存使用成本,提升了传输效率。
158.可选地,步骤402具体可以通过第二进程调用直接方式读写接口,向服务器的虚拟文件系统发送第三读取请求的方式进行实现。
159.在本技术实施例中,服务端可以通过第二进程调用direct i/o接口的方式,向服务端的虚拟文件系统发送第三读取请求,direct i/o接口可以绕过文件写缓冲区和读缓存区的读取访问内存,降低了文件传输过程中内存中数据拷贝的次数。
160.步骤403、按照目标第一内存片区的地址信息,将目标第二内存片区存储的局部内容发送至用户设备的目标第一内存片区进行存储。
161.该步骤可以参照上述步骤203,此处不作赘述。
162.可选地,方法还可以包括:
163.步骤404、响应于对客户端上运行的第二进程的内存注册请求,在服务端的本地内存中设置多个与第二进程关联的第二内存片区,第二内存片区用于供第二进程使用。
164.在本技术实施例中,参照图1,第二进程是运行在服务端的用户层并用于进行文件发送的进程,第二进程的正常运行离不开对存储空间的使用,本技术实施例可以在开始传输流程之前,在服务端的内存中一次注册多个容量相同的第二内存片区供第二进程使用,从而提前在服务端中形成第二进程管理的内存池,使得服务端在发送目标文件的过程中,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,另外基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率。
165.可选地,远程直接数据存取装置为远程直接数据存取网卡。
166.在本技术实施例中,rdma网卡省略了内核处理器的参与,所有数据的传输直接从进程到达rdma网卡,再由rdma网卡转发至另一终端的rdma网卡。rdma网卡的示意可以降低处理器负荷,提高网络吞吐量,降低网络延迟。
167.可选地,在本技术另一实施例中,在前述步骤202中,根据所述文件存储参数,从所述存储位置提取所述目标文件的局部内容复制到目标第二内存片区,包括:
168.子步骤2021,根据所述文件存储参数,确定所述局部内容在所述存储位置中的局部位置;
169.子步骤2022,根据所述局部位置,提取所述局部内容并复制到所述目标内存片区。
170.在本技术实施例中,由于用户设备侧,发送了第二读取请求到服务器侧,服务器侧在查找到目标文件在磁盘的哪个位置存储后,可以基于该文件存储参数,进一步定位该存储位置中存储该文件存储参数对应的局部内容的局部位置。
171.可选地,在本技术另一实施例中,所述文件存储参数包括:与所述目标文件的局部内容对应的文件偏移量参数、与所述目标文件的局部内容对应的长度参数中的至少一种,所述文件偏移量参数用于表征所述局部内容的起始位置,所述长度参数用于表征所述局部内容的内容长度;所述子步骤2021,包括:
172.子步骤20211,根据所述文件偏移量参数和/或所述长度参数,确定所述局部内容在所述存储位置中的局部位置。
173.如前述描述,本技术实施例中,由于文件存储参数包括前述文件偏移量参数(offset)和/或长度参数(length)。该长度参数是与目标第一内存分配的存储容量对应的。
174.那么,在收到offset的情况下,在内存分配的容量相同的情况下,length是固定
的,服务器侧则能够直接知晓length。那么用户设备侧通过第二读取请求将offset发送到服务器侧后,服务器侧则基于该offset和已知的长度,根据目标存储位置在磁盘中的存储地址,确定需要从磁盘中读取的起始读取位置和从该起始读取位置读取的长度。
175.在收到offset和length的情况下,那么用户设备侧通过第二读取请求将offset发送到服务器侧后,服务器侧则基于该offset和已知的length,根据目标存储位置在磁盘中的存储地址,确定需要从磁盘中读取的起始读取位置和从该起始读取位置读取的长度。
176.在收到length的情况下,用户设备侧通过第二读取请求将offset发送到服务器侧后,服务器侧则基于该length,默认某个目标第二内存分片的offset为0,然后按序将下一个目标第一内存分片的起始位置加上上一个目标第一内存分片的length,得到下一个目标第一内存分片的offset,如此,得到各个目标第一内存分片的offset和length,根据目标存储位置在磁盘中的存储地址,确定需要从磁盘中读取的起始读取位置和从该起始位置读取的长度。
177.然后即可从磁盘的起始读取位置和从该起始位置读取的长度,读取目标文件的局部内容,存入目标第二内存片区中,然后服务器再将目标第二内存片区中的该局部内容发送到相应请求对应的目标第一内存片区中。
178.综上,本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
179.参照图9,其示出了本技术实施例提供的一种分布式数据同步系统的框图,包括:
180.至少一个上传节点和至少一个数据同步节点;数据同步节点的本地内存中具有多个第一内存片区;上传节点的本地具有多个第二内存片区,;
181.上传节点用于,获取待同步备份的目标文件,并发送目标文件的占用空间大小至数据同步节点;获取数据同步节点发送的备份请求;根据备份请求,提取目标文件的局部内容复制到目标第二内存片区,目标第二内存片区为任一第二内存片区;按照目标第二内存片区的地址信息,将目标第二内存片区存储的局部内容发送至数据同步节点的目标第一内存片区进行存储;
182.数据同步节点用于,根据目标文件的占用空间大小和第一内存片区的容量,确定存储目标文件所需的目标第一内存片区的数量;根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数,生成与目标第一内存片区对应的备份请求并发送给上传节点,文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征。
183.具体的,针对分布式数据同步系统的描述可以参照上述图3的实施例,此处不作赘述。
184.综上,本技术实施例是在开始传输流程之前,在上传节点和数据同步节点各自的
内存中一次注册多个容量相同的内存片区进行使用,使得上传节点在响应于数据同步节点的备份请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后上传节点可以通过rdma技术,直接将上传节点的内存片区的切片数据发送至数据同步节点中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且上传节点和数据同步节点基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
185.参照图10,其示出了本技术实施例提供的一种分布式计算系统的框图,包括:
186.至少一个主计算节点和至少一个从计算节点;主计算节点的本地内存中具有多个第一内存片区;从计算节点的本地具有多个第二内存片区;
187.主计算节点用于,获取计算任务,将计算任务拆分为多个子任务并将子任务发送给从计算节点;根据子任务的计算结果的占用空间大小和第一内存片区的容量,确定存储计算结果所需的目标第一内存片区的数量;根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数,生成与目标第一内存片区对应的同步请求并发送给从计算节点,文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征。
188.从计算节点用于,获取子任务进行计算,将计算结果的标识和占用空间大小发送至主计算节点;获取主计算节点发送的同步请求;根据同步请求,提取计算结果的局部内容复制到目标第二内存片区,目标第二内存片区为任一第二内存片区;按照目标第二内存片区的地址信息,将目标第二内存片区存储的局部内容发送至主计算节点的目标第一内存片区进行存储。
189.具体的,针对分布式数据同步系统的描述可以参照上述图4的实施例,此处不作赘述。
190.综上,本技术实施例是在开始传输流程之前,在从计算节点和主计算节点各自的内存中一次注册多个容量相同的内存片区进行使用,使得从计算节点在响应于主计算节点的同步请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后从计算节点可以通过rdma技术,直接将从计算节点的内存片区的切片数据发送至主计算节点中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且从计算节点和主计算节点基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
191.参照图11,其示出了本技术实施例提供的一种数据传输装置的框图,应用于用户设备,用户设备的本地内存中设置有多个第一内存片区,包括:
192.第一设置模块501,用于响应于第一读取请求,获取目标文件的占用空间大小,并根据目标文件的占用空间大小和第一内存片区的容量,确定存储目标文件所需的目标第一内存片区的数量;目标第一内存片区用于存储目标文件的局部内容;
193.生成模块502,用于根据目标第一内存片区的地址信息以及与目标第一内存片区对应的文件存储参数、生成与目标第一内存片区对应的第二读取请求并向服务端发送所述
第二读取请求,文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征;
194.存储模块503,用于通过目标第一内存片区接收服务器发送的目标文件的局部内容。
195.可选地,第一设置模块501包括:
196.第一确定子模块,用于根据目标文件的占用空间大小和第一内存片区的容量,从确定所需第一内存片区的片区数量。
197.第二确定子模块,用于按照片区数量,从第一内存片区中,选取片区数量个的目标第一内存片区。
198.可选地,生成模块502包括:
199.存储参数确定子模块,用于根据所述目标文件的占用空间大小,以及所述目标第一内存片区的容量,获取与所述目标第一内存区片对应的文件存储参数;
200.请求生成子模块,用于根据所述目标第一内存片区的地址信息以及与所述目标第一内存片区对应的文件存储参数,生成与所述目标第一内存片区对应的第二读取请求。
201.可选地,生成模块502包括:
202.列表发送子模块,用于将第二读取请求按照生成顺序构建为请求列表后,发送请求列表中的第二读取请求至服务器。
203.可选地,列表发送子模块包括:
204.第一发送单元,用于将请求列表中的第二读取请求依次发送至服务器;
205.或,第二发送单元,用于将请求列表中的至少部分第二读取请求同时发送至服务器。
206.可选地,装置还包括:
207.第一注册模块,用于响应于对用户设备上运行的第一进程的内存注册请求,在用户设备的本地内存中设置多个与第一进程关联的第一内存片区,第一内存片区用于供第一进程使用;
208.可选地,装置还包括:
209.处理模块,用于响应于第一进程的处理指令,对目标第一内存片区存储的目标文件进行处理。
210.可选地,第一设置模块501,包括:
211.状态子模块,用于获取第一内存片区的使用状态;
212.选取子模块,用于根据目标文件的占用空间大小和第一内存片区的容量,确定使用状态为空闲状态的目标第一内存片区,并确定存储目标文件所需的目标第一内存片区的数量。
213.可选地,文件存储参数包括:与目标文件的局部内容对应的文件偏移量参数、与目标文件的局部内容对应的长度参数中的一种或多种,文件偏移量参数用于表征局部内容的起始位置,长度参数用于表征局部内容的内容长度。
214.综上,本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma
技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
215.参照图12,其示出了本技术实施例提供的另一种数据传输装置的框图,应用于服务器,服务器的本地具有多个第二内存片区,包括:
216.接收模块601,用于获取用户设备发送的第二读取请求,第二读取请求包括:目标第一内存片区的地址信息、与目标第一内存片区对应的文件存储参数;目标第一内存片区用于存储目标文件的局部内容;文件存储参数用于表征目标第一内存片区所要存储的局部内容的特征;
217.提取模块602,用于确定目标文件在服务器本地的存储位置,并根据文件存储参数,从存储位置提取目标文件的局部内容复制到目标第二内存片区,目标第二内存片区为任一第二内存片区;
218.发送模块603,用于按照目标第一内存片区的地址信息,将目标第二内存片区存储的局部内容发送至用户设备的目标第一内存片区进行存储。
219.可选地,提取模块602包括:
220.局部位置提取子模块,用于根据所述文件存储参数,确定所述局部内容在所述存储位置中的局部位置;
221.复制子模块,用于根据所述局部位置,提取所述局部内容并复制到所述目标内存片区。
222.可选地,所述文件存储参数包括:与所述目标文件的局部内容对应的文件偏移量参数、与所述目标文件的局部内容对应的长度参数中的至少一种,所述文件偏移量参数用于表征所述局部内容的起始位置;复制子模块,还用于根据所述文件偏移量参数和/或所述长度参数,确定所述局部内容在所述存储位置中的局部位置。
223.可选地,装置还包括:
224.第二注册模块,用于响应于对用户设备上运行的第二进程的内存注册请求,在服务器的本地内存中设置多个与所述第二进程关联的第二内存片区,第二内存片区用于供第二进程使用。
225.可选地,文件存储参数包括:与目标文件的局部内容对应的文件偏移量参数和长度参数,文件偏移量参数用于表征局部内容的起始位置,长度参数用于表征局部内容的内容长度;
226.提取模块602,包括:
227.直接读取子模块,用于通过第二进程向服务器的虚拟文件系统发送第三读取请求,第三读取请求包含文件存储参数,以供虚拟文件系统响应于第三读取请求,调用硬盘输入/输出接口从存储位置提取目标文件的局部内容,并将局部内容复制到目标第二内存片区。
228.可选地,直接读取子模块,包括:
229.直接读取单元,用于通过第二进程调用直接方式读写接口,向服务器的虚拟文件
系统发送第三读取请求。
230.可选地,远程直接数据存取装置为远程直接数据存取网卡。
231.本技术实施例是在开始传输流程之前,在服务器和用户设备各自的内存中一次注册多个容量相同的内存片区进行使用,使得服务器在响应于用户设备的读取请求后,无需进行内存注册操作,而是基于内存池的内存管理,选取已注册的内存片区进行使用,将要传输的文件切分成与内存片区对齐的切片并对应存储,之后服务器可以通过rdma技术,直接将服务器的内存片区的切片数据发送至用户设备中已注册的内存片区,从而节省了每次响应时内存注册的系统开销和耗时,并且服务器和用户设备基于内存池的内存管理,可以实现按量使用内存,以及内存的释放复用,极大提升了内存的利用效率,对于整个rdma传输过程,本技术可以极大减少内核处理器的参与,以及缓存的数据复制压力,对降低系统开销具有积极作用。
232.本技术实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本技术实施例中各方法步骤的指令(instructions)。
233.本技术实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本技术实施例中,所述电子设备包括终端设备、服务器(集群)等各类型的设备。
234.本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务器(集群)等电子设备。图13示意性地示出了可被用于实现本技术实施例中所述的各个实施例的示例性装置1000。
235.对于一个实施例,图13示出了示例性装置1000,该装置具有一个或多个处理器1002、被耦合到(一个或多个)处理器1002中的至少一个的控制模块(芯片组)1004、被耦合到控制模块1004的存储器1006、被耦合到控制模块1004的非易失性存储器(nvm)/存储设备1008、被耦合到控制模块1004的一个或多个输入/输出设备1010,以及被耦合到控制模块1004的网络接口1012。
236.处理器1002可包括一个或多个单核或多核处理器,处理器1002可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1000能够作为本技术实施例中所述终端设备、服务器(集群)等设备。
237.在一些实施例中,装置1000可包括具有指令1014的一个或多个计算机可读介质(例如,存储器1006或nvm/存储设备1008)以及与该一个或多个计算机可读介质相合并被配置为执行指令1014以实现模块从而执行本公开中所述的动作的一个或多个处理器1002。
238.对于一个实施例,控制模块1004可包括任意适当的接口控制器,以向(一个或多个)处理器1002中的至少一个和/或与控制模块1004通信的任意适当的设备或组件提供任意适当的接口。
239.控制模块1004可包括存储器控制器模块,以向存储器1006提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
240.存储器1006可被用于例如为装置1000加载和存储数据和/或指令1014。对于一个实施例,存储器1006可包括任意适当的易失性存储器,例如,适当的dram。在一些实施例中,存储器1006可包括双倍数据速率类型四同步动态随机存取存储器(ddr4sdram)。
241.对于一个实施例,控制模块1004可包括一个或多个输入/输出控制器,以向nvm/存储设备1008及(一个或多个)输入/输出设备1010提供接口。
242.例如,nvm/存储设备1008可被用于存储数据和/或指令1014。nvm/存储设备1008可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(hdd)、一个或多个光盘(cd)驱动器和/或一个或多个数字通用光盘(dvd)驱动器)。
243.nvm/存储设备1008可包括在物理上作为装置1000被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,nvm/存储设备1008可通过网络经由(一个或多个)输入/输出设备1010进行访问。
244.(一个或多个)输入/输出设备1010可为装置1000提供接口以与任意其他适当的设备通信,输入/输出设备1010可以包括通信组件、音频组件、传感器组件等。网络接口1012可为装置1000提供接口以通过一个或多个网络通信,装置1000可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如wifi、2g、3g、4g、5g等,或它们的组合进行无线通信。
245.对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑封装在一起以形成系统级封装(sip)。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(soc)。
246.在各个实施例中,装置1000可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1000可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1000包括一个或多个摄像机、键盘、液晶显示器(lcd)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(asic)和扬声器。
247.其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或nvm/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
248.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
249.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
250.本技术实施例是参照根据本技术实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方
框中指定的功能的装置。
251.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。
252.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
253.尽管已描述了本技术实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术实施例范围的所有变更和修改。
254.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
255.以上对本技术所提供的一种数据传输方法、装置、分布式数据同步系统、分布式计算系统、电子设备、机器可读介质,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1