文件数据分发方法、系统转让专利
申请号 : CN202110440682.8
文献号 : CN112860443B
文献日 : 2021-08-06
发明人 : 禹春雷 , 张静华 , 王义开 , 伍邵峰 , 李功训 , 宿旭升 , 邹胜
申请人 : 深圳华锐金融技术股份有限公司 , 华锐分布式技术(长沙)有限公司
摘要 :
权利要求 :
1.一种文件数据分发方法,其特征在于,所述方法包括:发送端获取接收端列表,并确定所述接收端列表中与所述发送端距离最近的目标接收端;所述接收端列表中的接收端是按照与所述发送端之间的距离排列的;
所述发送端将待发送的文件数据块从发送端内核缓冲区复制到发送端网络层缓冲区,将所述发送端网络层缓冲区中的文件数据块发送至所述目标接收端,并存储于接收端内核缓冲区;所述发送端内核缓冲区和所述发送端网络层缓冲区均位于所述发送端的内核空间;所述接收端内核缓冲区和接收端网络层缓冲区均位于所述目标接收端的内核空间;所述内核空间是操作系统内核运行的虚拟地址空间;
所述目标接收端将所述文件数据块从所述接收端内核缓冲区复制到接收端网络层缓冲区,将所述接收端网络层缓冲区中的文件数据块发送至所述接收端列表中与所述发送端距离次近的接收端,直至各接收端均收到所述文件数据块。
2.根据权利要求1所述的方法,其特征在于,所述发送端获取接收端列表包括:当接收到数据分发请求时,从所述数据分发请求中提取排序前接收端列表;
分别向所述排序前接收端列表中各接收端发送网络探测命令;
当接收到各接收端响应于所述网络探测命令返回的响应命令时,分别获取各所述接收端返回所述响应命令的响应时间;
根据所述响应时间对各所述接收端进行排序,得到所述接收端列表。
3.根据权利要求1所述的方法,其特征在于,所述发送端与所述接收端列表中各接收端上均部署了对应的代理程序;
所述将所述发送端网络层缓冲区中的文件数据块发送至所述目标接收端包括:通过部署在所述发送端上的代理程序将所述发送端网络层缓冲区中的文件数据块发送至部署在所述目标接收端上的代理程序;
所述将所述接收端网络层缓冲区中的文件数据块发送至所述接收端列表中与所述发送端距离次近的接收端包括:
通过部署在所述目标接收端上的代理程序将所述接收端网络层缓冲区中的文件数据块发送至与所述发送端距离次近的接收端上部署的代理程序。
4.根据权利要求1所述的方法,其特征在于,所述接收端列表中接收端部署于主数据中心;所述发送端获取接收端列表之后,所述方法还包括:当所述主数据中心发生故障时,所述发送端将所述接收端列表中接收端替换为部署于备数据中心的接收端,并与替换后的接收端列表中各接收端建立网络连接;
当所述主数据中心与所述备数据中心均发生故障时,所述发送端将所述接收端列表中接收端替换为部署于灾备数据中心的接收端,并与替换后的接收端列表中各接收端建立网络连接。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述接收端列表中的末尾接收端接收到全部文件数据块时,向前一接收端反馈接收成功信息;
对于所述接收端列表中除所述末尾接收端及所述目标接收端之外的接收端,当接收到所述接收端列表中的所有后继接收端反馈的接收成功信息时,将所有后继接收端反馈的接收成功信息与自身产生的接收成功信息一起发送至前一接收端;
当所述目标接收端接收到所有后继接收端反馈的接收成功信息时,将所有后继接收端反馈的接收成功信息与自身产生的接收成功信息一起发送至所述发送端。
6.根据权利要求1所述的方法,其特征在于,所述待发送的文件数据块为在存入所述内核缓冲区之前,对原始数据块进行压缩所得;所述对原始数据块进行压缩包括:针对每个所述原始数据块,发送端创建对应的数据块压缩任务,并将所述数据块压缩任务添加至任务处理队列;
所述发送端通过多个线程并发执行所述任务处理队列中的数据块压缩任务,以对所述原始数据块进行压缩。
7.一种文件数据分发系统,其特征在于,所述系统包括:发送端,用于获取接收端列表,并确定所述接收端列表中与所述发送端距离最近的目标接收端;所述接收端列表中的接收端是按照与所述发送端之间的距离排列的;
所述发送端,还用于将待发送的文件数据块从发送端内核缓冲区复制到发送端网络层缓冲区,将所述发送端网络层缓冲区中的文件数据块发送至所述目标接收端,并存储于接收端内核缓冲区;所述发送端内核缓冲区和所述发送端网络层缓冲区均位于所述发送端的内核空间;所述接收端内核缓冲区和接收端网络层缓冲区均位于所述目标接收端的内核空间;所述内核空间是操作系统内核运行的虚拟地址空间;
所述目标接收端,用于将所述文件数据块从所述接收端内核缓冲区复制到接收端网络层缓冲区,将所述接收端网络层缓冲区中的文件数据块发送至所述接收端列表中与所述发送端距离次近的接收端,直至各接收端均收到所述文件数据块。
8.根据权利要求7所述的系统,其特征在于,所述发送端还用于:当接收到数据分发请求时,从所述数据分发请求中提取排序前接收端列表;
分别向所述排序前接收端列表中各接收端发送网络探测命令;
当接收到各接收端响应于所述网络探测命令返回的响应命令时,分别获取各所述接收端返回所述响应命令的响应时间;
根据所述响应时间对各所述接收端进行排序,得到所述接收端列表。
9.根据权利要求7所述的系统,其特征在于,所述发送端与所述接收端列表中各接收端上均部署了对应的代理程序;所述发送端还用于:通过部署在所述发送端上的代理程序将所述发送端网络层缓冲区中的文件数据块发送至部署在所述目标接收端上的代理程序;
所述将所述接收端网络层缓冲区中的文件数据块发送至所述接收端列表中与所述发送端距离次近的接收端包括:
通过部署在所述目标接收端上的代理程序将所述接收端网络层缓冲区中的文件数据块发送至与所述发送端距离次近的接收端上部署的代理程序。
10.根据权利要求7所述的系统,其特征在于,所述接收端列表中接收端部署于主数据中心;所述系统还包括:
所述发送端,当所述主数据中心发生故障时,还用于将所述接收端列表中接收端替换为部署于备数据中心的接收端,并与替换后的接收端列表中各接收端建立网络连接;
当所述主数据中心与所述备数据中心均发生故障时,还用于将所述接收端列表中接收端替换为部署于灾备数据中心的接收端,并与替换后的接收端列表中各接收端建立网络连接。
说明书 :
文件数据分发方法、系统
技术领域
背景技术
地域B部署灾备数据中心,以实现异地容灾切换。
文件数据或并行的同时向多个接收端分发文件数据,分发文件数据的速度受限于发送端的
网络带宽,效率较低。并且发送端通过scp命令向接收端发送文件数据时,需要多次将文件
数据在用户空间和内核空间中来回复制,复制过程占用了较多的CPU资源,发送效率较低。
发明内容
端内核缓冲区;
送端距离次近的接收端,直至各接收端均收到所述文件数据块。
立网络连接;
的接收成功信息与自身产生的接收成功信息一起发送至前一接收端;
于接收端内核缓冲区;
述发送端距离次近的接收端,直至各接收端均收到所述文件数据块。
络连接;
至前一接收端;
收端,并存储于目标接收端中的接收端内核缓冲区。目标接收端将文件数据块从接收端内
核缓冲区复制到接收端网络层缓冲区,并将接收端网络层缓冲区中的文件数据块发送至接
收端列表中与发送端距离次近的接收端,直至各接收端均收到文件数据块。基于网络连接
的全双工特性,各个接收端在接收文件数据块时,可以同时向相邻的后一接收端发送已经
收到的文件数据块,不需要依赖于发送端逐个向所有的接收端分发文件数据块,节省了文
件分发的时间。并且由于发送端内核缓冲区、发送端网络层缓冲区、接收端内核缓冲区、接
收端网络层缓冲区均存在于内核空间,发送端和各接收端在发送文件数据块时,不需要将
文件数据块在内核空间和用户空间之间来回复制,降低了CPU的资源使用率,进一步提升了
文件数据的分发效率。
附图说明
具体实施方式
用于限定本申请。
距离次近的接收端106进行通信。发送端102获取接收端列表,并确定接收端列表中与发送
端102距离最近的目标接收端104;接收端列表中的接收端是按照与发送端之间的距离排列
的;发送端102将待发送的文件数据块从发送端内核缓冲区复制到发送端网络层缓冲区,将
发送端网络层缓冲区中的文件数据块发送至目标接收端104,并存储于接收端内核缓冲区;
目标接收端104将文件数据块从接收端内核缓冲区复制到接收端网络层缓冲区,将接收端
网络层缓冲区中的文件数据块发送至接收端列表中与发送端距离次近的接收端106,发送
端与各接收端按照链式传递的方式依次转发各文件数据块,直至各接收端均收到全部文件
数据块。其中,发送端102以及目标接收端104、与发送端距离次近的接收端106为计算机设
备,计算机设备可以是终端,也可以是服务器,终端可以但不限于是各种个人计算机、笔记
本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个
服务器组成的服务器集群来实现。
可以与发送端处于同一地域,也可以与发送端处于不同的地域。
根据部署发送端和接收端时记录的信息确定发送端与各个接收端之间的距离。记录的信息
包括发送端与接收端所连接的交换机,所处的机房以及所处的地域。与发送端距离最近的
接收端是与发送端连接在同一交换机上的接收端,距离发送端次近的接收端与发送端处于
同一机房,但未与发送端连接在同一交换机上,再次是与发送端处于同一地域,但未与发送
端处于同一机房的接收端,距离发送端最远的接收端是与发送端处于不同地域的接收端。
括各个接收端的编号及网络地址。
冲区。
个实施例中,发送端的应用程序生成文件数据块后,将文件数据块存入用户空间,操作系统
从用户空间读取文件数据块并存入发送端内核缓冲区。用户空间是用户的应用程序运行的
虚拟地址空间。
当进程运行在内核空间时处于内核态,当进程运行于用户空间时则处于用户态。操作系统
的核心是内核,可以访问受保护的内存空间,也可以访问底层硬件设备。为了保证内核的安
全,操作系统一般都强制用户进程不能直接操作内核,所以操作系统将虚拟地址空间划分
内核空间与用户空间。例如,对于32 位操作系统,寻址空间(虚拟地址空间)为 4G,也就是
说运行在该操作系统上的进程的最大地址空间为 4G。最高的 1G 字节(从虚拟地址
0xC0000000 到 0xFFFFFFF)由内核使用,称为内核空间,而较低的 3G 字节(从虚拟地址
0x00000000 到 0xBFFFFFFF)由各个用户进程使用,称为用户空间。在一个实施例中,目标
接收端在收到文件数据块时,将文件数据块存入内核缓冲区中的内核映射文件中。
接收端,网络协议例如可以是TCP协议、UDP协议或者自定义协议。
端,直至各接收端均收到文件数据块。
后发送至其他接收端,网络协议例如可以是TCP协议、UDP协议或者自定义协议。基于网络的
全双工特性,目标接收端在接收文件数据块时,可以同时向其他接收端发送已经收到的文
件数据块。目标接收端将文件数据块从接收端内核缓冲区复制到接收端网络层缓冲区,然
后将接收端网络层缓冲区中的文件数据块发送至与发送端距离次近的接收端。所以,发送
端与各接收端组成了链式的数据传输通路,按照链式的方式将文件数据块从发送端传送至
各个接收端。
冲区,在网络层缓冲区中按照对应的网络协议对文件数据块进行封装,然后将封装后的文
件数据块1发送至接收端1,并存入接收端1的网络层缓冲区。然后接收端1将网络层缓冲区
中的文件数据块复制到内核缓冲区中的内存映射文件。发送端在向接收端1发送文件数据
块1之后,继续向接收端1发送文件数据块2,接收端1在接收文件数据块2的同时,基于网络
的全双工特性,向接收端2发送文件数据块1。接收端1先将文件数据块1从内存映射文件复
制到网络层缓冲区,然后将网络层缓冲区中的文件数据块1发送至接收端2并存入接收端2
的网络层缓冲区。然后,接收端1再向接收端2发送文件数据块2,接收端2在接受文件数据块
2的同时,向接收端3发送文件数据块1,直至所有的接收端都收到所有的文件数据块。
送端将文件数据块分发至所有的接收端所用的时间为发送端将文件数据块发送给接收端1
所用的时间+最后一个文件数据块从接收端1传输至最后一个接收端的时间。因此分发时间
为:(文件大小/发送端带宽)+(接收端数量‑1)*(文件数据块的大小/接收端带宽)。由于传
输一个文件数据块的时间远远小于传输整个文件的时间,并且,发送端只需要将文件数据
块发送至接收端1,而不需要通过发送端将文件数据块分发至所有的接收端,文件分发速度
受发送端带宽的影响较小,极大的降低了文件数据分发所用的时间。
收端,并存储于目标接收端中的接收端内核缓冲区。目标接收端将文件数据块从接收端内
核缓冲区复制到接收端网络层缓冲区,并将接收端网络层缓冲区中的文件数据块发送至接
收端列表中与发送端距离次近的接收端,直至各接收端均收到文件数据块。基于网络连接
的全双工特性,各个接收端在接收文件数据块时,可以同时向相邻的后一接收端发送已经
收到的文件数据块,不需要依赖于发送端逐个向所有的接收端分发文件数据块,节省了文
件分发的时间。并且由于发送端内核缓冲区、发送端网络层缓冲区、接收端内核缓冲区、接
收端网络层缓冲区均存在于内核空间,发送端和各接收端在发送文件数据块时,不需要将
文件数据块在内核空间和用户空间之间来回复制,降低了CPU的资源使用率,进一步提升了
文件数据的分发效率。
复制,以节省CPU资源。各接收端同样通过DMA对文件数据进行读写操作,通过DMA将文件数
据块在接收端内核缓冲区和接收端网络层缓冲区间进行复制。
中可以包括各个接收端的编号和网络地址。在一个实施例中,客户端向发送端发送数据分
发请求,发送端在接收到数据分发请求时,从数据分发请求中提取源文件路径,并根据源文
件路径获取待发送的文件数据。
以测试目的主机是否可达并了解其有关状态。例如,网络探测命令可以是PING命令。
是按照接收端与发送端间的距离对接收端进行排序。在一个实施例中,发送端按照与其距
离的远近,从近到远对接收端进行排序, 得到接收端列表。
邻的下一接收端转发文件数据块。由于各接收端是按照与发送端间的距离依次转发文件数
据块,节省了网络资源,提高了数据分发效率。
向各组中的接收端发送文件数据块。
理程序将发送端网络层缓冲区中的文件数据块发送至部署在目标接收端上的代理程序;将
接收端网络层缓冲区中的文件数据块发送至接收端列表中与发送端距离次近的接收端包
括:通过部署在目标接收端上的代理程序将接收端网络层缓冲区中的文件数据块发送至与
发送端距离次近的接收端上部署的代理程序。
代理程序的连接请求时,与发送连接请求的代理程序建立网络连接。
端连接在交换机上。发送端和客户端部署于主数据中心,接收端分别部署在各数据中心,且
各接收端上部署了对应的代理程序。代理程序1‑4是安装在主数据中心的接收端1‑4上的应
用程序,代理程序5‑6是安装在备数据中心的接收端5‑6上的应用程序,代理程序7‑9是安装
在备数据中心的接收端7‑9上的应用程序。各代理程序监听其他代理程序的连接请求。当发
送端接收到客户端的数据分发请求时,从数据分发请求中提取接收端列表,接收端列表中
具有接收端1‑9的IP地址。然后发送端按照与接收端列表中各接收端的距离,按照从近到远
的顺序对接收端列表中的接收端进行排序,得到排序后接收端列表。发送端对应的代理程
序首先根据排序后接收端列表中排在首位的接收端1的IP地址向代理程序1发送连接请求,
代理程序1响应于发送端对应的代理程序的连接请求,与发送端对应的代理程序建立TCP网
络连接,然后发送端将排序后的接收端列表发送至代理程序1。代理程序1接收到排序后的
接收端列表时,查找排在其后的接收端2的IP地址,根据接收端2的IP地址,向代理程序2发
送连接请求,并在与代理程序2建立TCP网络连接后,将排序后的接收端列表发送至代理程
序2,依次类推,直至在排序后的接收端列表中相邻接收端对应的代理程序间均建立网络连
接,并且所有的代理程序均收到排序后的接收端列表。
件数据块发送至代理程序1。目标接收端上的代理程序在接收到文件数据块时,通过调用
sendfile函数将文件数据块转发至相邻的下一接收端,直至所有接收端均收到文件数据
块。
高了文件数据分发的效率。
于备数据中心的接收端,并与替换后的接收端列表中各接收端建立网络连接;当主数据中
心与备数据中心均发生故障时,发送端将接收端列表中接收端替换为部署于灾备数据中心
的接收端,并与替换后的接收端列表中各接收端建立网络连接。
数据中心的接收端替换为部署于备数据中心的接收端。当备数据中心也发生故障时,启用
灾备数据中心,发送端将接收端列表中部署于主数据中心和备数据中心的接收端替换为部
署于灾备数据中心的接收端。
备数据中心,对发生故障的接收端进行替换,充分保证了分布式系统的正常运行。
端,当接收到接收端列表中的所有后继接收端反馈的接收成功信息时,将所有后继接收端
反馈的接收成功信息与自身产生的接收成功信息一起发送至前一接收端;当目标接收端接
收到所有后继接收端反馈的接收成功信息时,将所有后继接收端反馈的接收成功信息与自
身产生的接收成功信息一起发送至发送端。
4收到全部的文件数据块时,将自身生成的接收成功信息与代理程序5反馈的接收成功信息
进行合并,合并后发送至代理程序3,依此类推,直至将代理程序1‑5反馈的接收成功信息均
发送至发送端。
发送端获知各接收端是否接收到完整的文件数据块,并在接收端未接收到完整的文件数据
块时,向该接收端重新发送文件数据块,保证了文件数据块的可靠传输。
块压缩任务,并将数据块压缩任务添加至任务处理队列;发送端通过多个线程并发执行任
务处理队列中的数据块压缩任务,以对原始数据块进行压缩。
块存入用户空间,然后,针对每个原始数据块,创建对应的数据块压缩任务。发送端通过多
个线程从任务处理队列中提取数据块压缩任务并执行,以对数据块压缩任务对应的原始数
据块进行压缩,得到压缩后的文件数据块。
了发送效率。
列表。发送端根据与接收端列表中各接收端间的距离,按照从近到远的顺序对接收端列表
中各接收端对应的IP地址进行排序,得到目标IP列表。部署在发送端上的代理程序根据目
标IP列表中首个接收端的IP地址与其对应的代理程序建立网络连接,并将目标IP列表发送
至首个接收端。首个接收端对应的代理程序根据目标IP列表中第二个接收端的IP地址与第
二个接收端对应的代理程序建立网络连接,并将目标IP列表发送至第二个接收端对应的代
理程序,依次类推,直至目标IP列表中所有相邻接收端对应的代理程序间均建立网络连接。
对应的代理程序将网络层缓冲区中的文件数据块发送至首个接收端。首个接收端通过对应
的代理程序接收文件数据块,并将接收的文件数据块存入网络层缓冲区,然后将网络层缓
冲区中的文件数据块复制到内存映射文件中。首个接收端继续从发送端接收文件数据块,
并同时向第二个接收端发送已经收到的文件数据块。按照与发送端同样的方法,首个接收
端通过对应的代理程序将文件数据块发送至第二个接收端对应的代理程序,依次类推,直
至所有接收端均受到文件数据块。
的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4中的至少一
部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行
完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而
是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
内核缓冲区;
收端,直至各接收端均收到文件数据块。
收端,并存储于目标接收端中的接收端内核缓冲区。目标接收端将文件数据块从接收端内
核缓冲区复制到接收端网络层缓冲区,并将接收端网络层缓冲区中的文件数据块发送至接
收端列表中与发送端距离次近的接收端,直至各接收端均收到文件数据块。基于网络连接
的全双工特性,各个接收端在接收文件数据块时,可以同时向相邻的后一接收端发送已经
收到的文件数据块,不需要依赖于发送端逐个向所有的接收端分发文件数据块,节省了文
件分发的时间。并且由于发送端内核缓冲区、发送端网络层缓冲区、接收端内核缓冲区、接
收端网络层缓冲区均存在于内核空间,发送端和各接收端在发送文件数据块时,不需要将
文件数据块在内核空间和用户空间之间来回复制,降低了CPU的资源使用率,进一步提升了
文件数据的分发效率。
一接收端;
组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以
以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的
操作。
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑
Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器
(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种
形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存
储器(Dynamic Random Access Memory,DRAM)等。
盾,都应当认为是本说明书记载的范围。
说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护
范围。因此,本申请专利的保护范围应以所附权利要求为准。