CN111083204B - 文件传输方法、装置及存储介质 - Google Patents
文件传输方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111083204B CN111083204B CN201911207113.8A CN201911207113A CN111083204B CN 111083204 B CN111083204 B CN 111083204B CN 201911207113 A CN201911207113 A CN 201911207113A CN 111083204 B CN111083204 B CN 111083204B
- Authority
- CN
- China
- Prior art keywords
- node
- machine room
- storage
- storage node
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 65
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012163 sequencing technique Methods 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims description 22
- 238000012546 transfer Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文件传输方法、装置及存储介质,属于互联网技术领域。该方法包括:中心节点接收第一客户端发送的文件传输请求,中心节点向第一客户端发送存储节点列表,以使第一客户端根据存储节点列表中各个存储节点的排序进行文件传输。在本申请中,当权重最大的存储节点的数量为多个时,那么在该存储节点列表中,与第一客户端位于同一机房的存储节点排序在其他存储节点的前面,这样第一客户端在按照存储节点列表中各个存储节点的排序依次尝试进行文件传输时,就可以先尝试与第一客户端位于同一机房的存储节点进行传输,这样可以有效避免跨机房的文件传输,从而提升了文件传输的成功率,节约了网络的流量成本。
Description
技术领域
本申请涉及互联网技术领域,特别涉及一种文件传输方法、装置及计算机可读存储介质。
背景技术
随着互联网的快速发展,以及多媒体应用的广泛流行,用户端往往需要从数据中心获取或者向数据中心存储大量的文字、图片、语音以及视频等文件,导致数据中心的IO(input/output,输入/输出)负载压力较大。这时,数据中心通常采用分布式存储方式,也即把数据中心中的数据存储到不同的存储节点中。这样,每个存储节点都能对外提供服务,从而提高整个数据中心的存储能力、IO处理能力和快速响应能力。这种情况下,如何向不同的存储节点传输文件是非常重要的。
相关技术中,分布式存储***包括多个节点群,每个节点群包括多个存储节点和一个中心节点。对于任一节点群,该节点群包括的每个存储节点将自身的属性信息上报给中心节点。属性信息包括剩余存储空间、CPU(central processing unit,中央处理单元)负载和IO负载等。中心节点根据每个存储节点的属性信息给每个存储节点配置一个权重。当客户端需要向某个节点群传输文件时,先向该节点群的中心节点发送文件传输请求,中心节点向该客户端返回该节点群中的各个存储节点的权重。客户端选择权重最大的存储节点进行文件传输。当权重最大的存储节点为多个时,客户端采用随机的方式选择一个存储节点进行文件传输。
通常同一节点群中的不同存储节点部署在不同的机房中,且客户端与各个存储节点也可能部署在不同的机房中,因此,当客户端向一个节点群中不同存储节点传输文件时,就会出现大量的跨机房流量,导致文件传输很容易受到机房间网络抖动的影响,从而降低了文件传输的成功率。同时跨机房流量也提高了文件传输的成本。
发明内容
本申请实施例提供了一种文件传输方法、装置及存储介质,可以提高文件传输的成功率,并降低文件传输的成本。所述技术方案如下:
一方面,提供了一种文件传输方法,应用于中心节点,所述方法包括:
接收第一客户端发送的文件传输请求,所述文件传输请求携带所述中心节点所在的节点群的标识;
确定所述节点群包括的多个存储节点中每个存储节点的权重,所述权重用于指示对应的存储节点可处理数据的能力;
根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及所述第一客户端所在机房的机房标识对所述多个存储节点排序,得到存储节点列表,所述存储节点列表中权重大的存储节点排序在权重小的存储节点的前面,且权重相同的存储节点中,所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在的的机房标识不相同的存储节点的前面;
向所述第一客户端发送所述存储节点列表,用于指示所述第一客户端根据所述存储节点列表中各个存储节点的排序进行文件传输。
可选的,所述方法还包括:
对于所述多个存储节点中第一存储节点,获取所述第一存储节点所在机房的机房标识,所述第一存储节点为所述多个存储节点中任一存储节点;
将所述第一存储节点所在机房的机房标识添加至所述第一存储节点的配置文件中;
相应地,所述根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及所述第一客户端所在机房的机房标识对所述多个存储节点排序,得到存储节点列表之前,还包括:
根据所述第一存储节点的配置文件,获取所述第一存储节点所在机房的机房标识。
可选的,所述方法还包括:
获取多个客户端中每个客户端的配置文件,每个客户端的配置文件中包括每个客户端的网络协议IP地址,所述第一客户端为所述多个客户端中任一客户端;
获取每个客户端所在机房的机房标识;
根据每个客户端的IP地址和每个客户端所在机房的机房标识,创建IP地址与机房标识之间的映射关系;
相应地,所述根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及所述第一客户端所在机房的机房标识对所述多个存储节点排序,得到存储节点列表之前,还包括:
获取所述第一客户端的IP地址;
根据所述IP地址与机房标识之间的映射关系和所述第一客户端的IP地址,获取所述第一客户端所在机房的机房标识。
可选的,所述根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及所述第一客户端所在机房的机房标识对所述多个存储节点排序,得到存储节点列表,包括:
根据每个存储节点的权重,按照权重从大到小的顺序对所述多个存储节点进行排序,得到初始存储节点列表;
对于所述初始存储节点列表中权重相同的存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表。
可选的,所述根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及所述客户端的机房标识对所述多个存储节点排序,得到存储节点列表,包括:
根据每个存储节点的权重,对所述多个存储节点进行聚类,得到多个节点集合,每个节点集合中包括的各个存储节点的权重之间的差值小于阈值;
确定多个节点集合中每个节点集合包括的各个存储节点的平均权重;
按照所述多个节点集合中每个节点集合的平均权重从大到小的顺序,对所述多个节点集合进行排序,得到初始存储节点列表;
对于每个节点集合包括的各个存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表。
可选的,所述方法还包括:
对于所述多个存储节点中的第一存储节点,接收所述第一存储节点上报的属性信息,所述属性信息用于指示所述第一存储节点当前时间可处理数据的能力,所述第一存储节点为所述多个存储节点中任一存储节点;
根据所述第一存储节点上报的属性信息更新所述第一存储节点的配置文件包括的属性信息;
相应地,所述确定所述节点群包括的多个存储节点中每个存储节点的权重,包括:
从所述第一存储节点的配置文件中获取所述第一存储节点的属性信息;
根据所述第一存储节点的属性信息,确定所述第一存储节点的权重。
另一方面,提供了一种文件传输装置,应用于中心节点,所述装置包括:
第一接收模块,用于接收第一客户端发送的文件传输请求,所述文件传输请求携带所述中心节点所在的节点群的标识;
确定模块,用于确定所述节点群包括的多个存储节点中每个存储节点的权重,所述权重用于指示对应的存储节点可处理数据的能力;
排序模块,用于根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及所述第一客户端所在机房的机房标识对所述多个存储节点排序,得到存储节点列表,所述存储节点列表中权重大的存储节点排序在权重小的存储节点的前面,且权重相同的存储节点中,所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在的的机房标识不相同的存储节点的前面;
发送模块,用于向所述第一客户端发送所述存储节点列表,用于指示所述第一客户端根据所述存储节点列表中各个存储节点的排序进行文件传输。
可选的,所述装置还包括:
第一获取模块,用于对于所述多个存储节点中第一存储节点,获取所述第一存储节点所在机房的机房标识,所述第一存储节点为所述多个存储节点中任一存储节点;
添加模块,用于将所述第一存储节点所在机房的机房标识添加至所述第一存储节点的配置文件中;
相应地,所述装置还包括:
第二获取模块,用于根据所述第一存储节点的配置文件,获取所述第一存储节点所在机房的机房标识。
可选的,所述装置还包括:
第三获取模块,用于获取多个客户端中每个客户端的配置文件,每个客户端的配置文件中包括每个客户端的网络协议IP地址,所述第一客户端为所述多个客户端中任一客户端;
第四获取模块,用于获取每个客户端所在机房的机房标识;
创建模块,用于根据每个客户端的IP地址和每个客户端所在机房的机房标识,创建IP地址与机房标识之间的映射关系;
相应地,所述装置还包括:
第五获取模块,还用于获取所述第一客户端的IP地址,根据所述IP地址与机房标识之间的映射关系和所述第一客户端的IP地址,获取所述第一客户端所在机房的机房标识。
可选的,所述排序模块,具体用于:
根据每个存储节点的权重,按照权重从大到小的顺序对所述多个存储节点进行排序,得到初始存储节点列表;
对于所述初始存储节点列表中权重相同的存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表。
可选的,所述排序模块,具体用于:
根据每个存储节点的权重,对所述多个存储节点进行聚类,得到多个节点集合,每个节点集合中包括的各个存储节点的权重之间的差值小于阈值;
确定多个节点集合中每个节点集合包括的各个存储节点的平均权重;
按照所述多个节点集合中每个节点集合的平均权重从大到小的顺序,对所述多个节点集合进行排序,得到初始存储节点列表;
对于每个节点集合包括的各个存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表。
可选的,所述装置还包括:
第二接收模块,用于对于所述多个存储节点中的第一存储节点,接收所述第一存储节点上报的属性信息,所述属性信息用于指示所述第一存储节点当前时间可处理数据的能力,所述第一存储节点为所述多个存储节点中任一存储节点;
更新模块,用于根据所述第一存储节点上报的属性信息更新所述第一存储节点的配置文件包括的属性信息;
相应地,所述确定模块,具体用于:
从所述第一存储节点的配置文件中获取所述第一存储节点的属性信息;
根据所述第一存储节点的属性信息,确定所述第一存储节点的权重。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述提供的文件传输方法的步骤。
另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述提供的文件传输方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,中心节点接收第一客户端发送的文件传输请求,中心节点向第一客户端发送存储节点列表,以使第一客户端根据存储节点列表中各个存储节点的排序进行文件传输。由于存储节点列表中权重大的存储节点排序在权重小的存储节点的前面,且权重相同的存储节点中,所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在的的机房标识不相同的存储节点的前面,由此可见,如果权重最大的存储节点的数量为多个时,那么在该存储节点列表中,与第一客户端位于同一机房的存储节点排序在其他存储节点的前面,这样第一客户端在按照存储节点列表中各个存储节点的排序依次尝试进行文件传输时,就可以先尝试与第一客户端位于同一机房的存储节点进行传输,这样可以有效避免跨机房的文件传输,从而提升了文件传输的成功率,节约了网络的流量成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种分布式存储***的架构示意图;
图2是本申请实施例提供的一种文件传输方法流程图;
图3是本申请实施例提供的一种文件传输装置示意图;
图4是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面先对本申请实施例提供的文件传输方法所涉及的***架构进行介绍。
图1是本申请实施例提供的一种分布式存储***的架构图。该分布式存储***包括多个节点群100。如图1所示,对于任一节点群100,该节点群100包括中心节点101、多个客户端102以及多个存储节点103。
其中,中心节点101可以与多个存储节点103中的每个存储节点103之间通过无线或有线方式连接以进行通信。任一客户端102可以与任一存储节点103之间通过无线或有线方式连接以进行通信。任一客户端102还可以与中心节点101之间通过无线或有线方式连接以进行通信。
对于任一节点群100中的任一客户端102,当该客户端102需要进行文件传输时,该客户端102需要先从中心节点101处获取存储节点列表。该存储节点列表包括该节点群100中的各个存储节点103的排序,用于指示该客户端102按照该排序依次从存储列表中选择一个存储节点进行文件传输。
另外,图1中仅是以存储节点103的数量为3个进行举例说明,但是这并不构成一个节点群中的存储节点数量的限制。图1中仅是以客户端102的数量为1个进行举例说明,但是这并不构成一个节点群中的客户端数量的限制。
此外,图1中仅仅以分布式存储***包括一个节点群为例进行说明,本申请实施例并不限定分布式存储***包括的节点群的数量。
接下来对本申请实施例提供的文件传输方法进行介绍。
图2是本申请实施例提供的一种文件传输方法的流程图,可以应用于中心节点。如图2所示,该方法包括以下步骤:
步骤201:中心节点接收第一客户端发送的文件传输请求,文件传输请求携带中心节点所在的节点群的标识。
第一客户端为当前任一需要进行文件传输的客户端。当第一客户端需要进行文件传输时,第一客户端先向当前所在的节点群的中心节点发送文件传输请求,以使该中心节点通过步骤201至步骤204向第一客户端返回存储节点列表。
在一种可能的实现方式中,第一客户端向中心节点发送文件传输请求的过程可以为:当第一客户端启动后,解析第一客户端的配置文件,从第一客户端的配置文件中获取第一客户端当前所在的节点群中的中心节点的标识和节点群的标识。第一客户端根据中心节点的标识向该中心节点发送文件传输请求。另外,为了能够使得中心节点返回针对第一客户端当前所在的节点群的存储节点列表,因此,文件传输请求还可以携带第一客户端当前所在的节点群的标识。
例如,第一客户端可以通过接口“Int GetStorageListByClusterName(conststd::string&cluster_name,std::vector<ConnectionInfo>*storage_vec)”触发文件传输请求。在启动该接口后,第一客户端可以在该接口中输入用于指示中心节点所在的节点群的标识的参数,该参数可以标记为“cluster_name”。
比如,可以对第一客户端的配置文件中的tracker_cluster.json进行解析,得到该中心节点的标识和该节点群的标识。其中,tracker_cluster.json用于存储该中心节点的和该节点群之间的映射关系。
另外,上述中心节点的标识用于唯一标记该中心节点,该中心节点的标识可以为该中心节点的名称,还可以为该中心节点的IP(internet protocol,网络协议)地址等。该节点群的标识用于唯一标记该节点群,该节点群的标识可以为该节点群的名称等。
步骤202:中心节点确定该节点群包括的多个存储节点中每个存储节点的权重。
权重用于指示对应的存储节点可处理数据的能力。对于任一存储节点,该存储节点的权重越大,表明该存储节点的可处理数据的能力越强。该存储节点的权重越小,表明该存储节点的可处理数据的能力越弱。因此,在进行文件传输时,可以优先选择权重大的存储节点,从而均衡节点群中各个存储节点的IO负载压力。
因此,在一种可能的实现方式中,步骤202的过程可以为:对于该节点群包括的多个存储节点中第一存储节点,从第一存储节点的配置文件中获取第一存储节点的属性信息;根据第一存储节点的属性信息,确定第一存储节点的权重。
上述属性信息用于指示第一存储节点当前时间可处理数据的能力。上述属性信息包括能够影响第一存储节点的可处理数据的能力任一信息。该属性信息包括剩余存储空间、CPU负载、IO负载、各个磁盘的状态、存储节点间的同步状态等信息。
例如,若存储节点S1的剩余存储空间大于存储节点S2,则存储节点S1的权重大于存储节点S2的权重。存储节点间的同步状态指的是:同一个节点群中的存储节点互为备份。若存储节点S1和存储节点S2互为备份,则文件上传到存储节点S1后,而短时间内未备份到存储节点S2时,则下载该文件优先选择存储节点S1。即存储节点S1的权重大于存储节点S2的权重。
由于上述属性信息用于指示第一存储节点当前时间可处理数据的能力,因此,第一存储节点可以周期性地上报自身的属性信息,以便于中心节点根据通过上述步骤202确定第一存储节点的权重。
其中,第一存储节点周期性地上报自身的属性信息的实现方式可以为:在每次达到上报时间点时,第一存储节点获取当前时间的属性信息,并将获取的属性信息上报至中心节点。中心节点接收第一存储节点上报的属性信息,中心节点根据第一存储节点上报的属性信息更新第一存储节点的配置文件包括的属性信息,以便于后续中心节点根据第一存储节点最近一次上报的属性信息确定权重,使得确定的权重能够表征第一存储节点当前时间的可处理数据的能力。
另外,第一存储节点启动后,可以解析自己的配置文件,获取到当前所在节点群中的中心节点的标识,以便于后续根据该中心节点标识周期性地向该中心节点上报自己的属性信息。
另外,第一存储节点每次上报的属性信息还可以包括第一存储节点的IP、以及第一存储节点的ID(identification,身份)等信息。
上述第一存储节点的配置文件为保存有第一存储节点的属性信息的文件。其中,第一存储节点在初始化之后,确定需要注册的节点群中的中心节点,然后向该中心节点发送注册信息。该中心节点接收到该注册信息之后,在确认第一存储节点注册成功后,向第一存储节点反馈注册成功消息。当第一存储节点接收到注册成功消息后,便可向中心节点发送自身的配置文件。也即是,各个存储节点在注册节点群之后,向注册的节点群中的中心节点上报自身的配置文件,中心节点存储各个存储节点的配置文件,以便于后续根据配置文件执行其他操作。
步骤203:根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及第一客户端所在机房的机房标识对多个存储节点排序,得到存储节点列表。
第一客户端在进行文件传输时,通常需要在当前多个存储节点中选择最合适的一个存储节点优先进行文件传输。为了快速确定该最合适的存储节点,通常需要中心节点按照传输文件的优先级次序排列出一个存储节点列表并返回给第一客户端。
其中,步骤203可以通过以下两种可能的方式来实现。
第一种可能的方式中,步骤203的过程可以为:根据每个存储节点的权重,按照权重从大到小的顺序对多个存储节点进行排序,得到初始存储节点列表;对于初始存储节点列表中权重相同的存储节点,将所在机房的机房标识与第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与第一客户端所在机房的机房标识不相同的存储节点的前面,得到存储节点列表。
比如,第一客户端当前所在节点群有10个存储节点,分别标记为存储节点1、存储节点2、……存储节点10。假设中心节点确定出的这10个存储节点的权重如下述表1,则按照权重从大到小排序得到的初始存储节点列表可以表示如下:
{存储节点1、存储节点5、存储节点9;
存储节点3;
存储节点2、存储节点4;
存储节点6、存储节点10;
存储节点7;
存储节点8;}
表1
对于上述初始存储节点列表中的存储节点1、存储节点5、存储节点9,假设存储节点5、存储节点4、以及存储节点6与第一客户端位于同一机房,其他存储节点与第一客户端没有位于同一机房,则可以将与第一客户端位于同一机房的存储节点调整至同权重的其他存储节点的前面,得到的存储节点列表可以表示如下:
{存储节点5;
存储节点1、存储节点9;
存储节点3;
存储节点4;
存储节点2;
存储节点10;
存储节点6;
存储节点7;
存储节点8;}
第二种可能的方式中,步骤204的过程可以为:根据每个存储节点的权重,对多个存储节点进行聚类,得到多个节点集合,每个节点集合中包括的各个存储节点的权重之间的差值小于阈值;确定多个节点集合中每个节点集合包括的各个存储节点的平均权重;按照多个节点集合中每个节点集合的平均权重从大到小的顺序,对多个节点集合进行排序,得到初始存储节点列表;对于每个节点集合包括的各个存储节点,将所在机房的机房标识与第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与第一客户端所在机房的机房标识不相同的存储节点的前面,得到存储节点列表。
上述阈值是预先设置的数值。比如阈值可以为0.1,此时上述聚类过程是将多个存储节点权重差值小于0.1的存储放在同一节点集合中。
另外,对初始存储节点列表的继续排序可以参考第一种可能的方式,在此不再赘述。
也即是,在本申请实施例中,中心节点先根据每个存储节点的权重,按照权重由大到小的次序依次排列得到初始存储节点列表。另外对于初始存储节点列表中权重大小相等或权重大小相似多个的存储节点,可以参照第一客户端所在机房的机房标识以及该多个存储节点所在机房的机房标识,采用与客户端同机房优先进行文件传输的原则进行排序,这样可以有效避免后续第一客户端跨机房文件传输,从而增加文件传输的成功率,也降低了文件传输成本。
另外,在本申请实施例中,中心节点中预先存储有各个客户端的IP地址和机房标识之间映射关系,因此,获取步骤203中第一客户端所在机房的机房标识的实现方式可以为:获取第一客户端的IP地址,根据IP地址与机房标识之间的映射关系和第一客户端的IP地址,获取第一客户端所在机房的机房标识。
上述中心节点可以从客户端管理中心获取第一客户端的IP地址。客户端管理中心用于对所有客户端进行统一管理。
另外,上述各个客户端的IP地址和机房标识之间映射关系是中心节点预先存储的。中心节点预先存储该映射关系的实现方式可以为:获取多个客户端中每个客户端的配置文件,每个客户端的配置文件中包括每个客户端的网络协议IP地址,第一客户端为多个客户端中任一客户端;获取每个客户端所在机房的机房标识;根据每个客户端的IP地址和每个客户端所在机房的机房标识,创建IP地址与机房标识之间的映射关系。
比如,可以将IP地址与机房标识之间的映射关系存储在标记为“clientip_idc.conf”文件中。该IP地址与机房标识之间的映射关系可以标识如下:
其中,“clientip”用于指示客户端的IP地址,“idc”用于指示机房标识。
上述各个客户端的配置文件预先存储在中心节点中,该部分内容已经在步骤202中进行了解释说明,在此不再赘述。
另外,在本申请实施例中,中心节点中预先修改了各个存储节点原有的配置文件,以使各个存储节点的配置文件中包括相应存储节点所在机房的机房标识。因此,在步骤203中,中心节点获取第一存储节点所在机房的机房标识的实现方式可以为:根据第一存储节点的配置文件,获取第一存储节点所在机房的机房标识。
也即是,在本申请实施例中,中心节点预先修改了存储节点原来的配置文件,增加每个存储节点所在机房的机房标识。其中,中心节点预先修改了存储节点原来的配置文件的实现方式可以为:对于多个存储节点中第一存储节点,获取第一存储节点所在机房的机房标识,第一存储节点为多个存储节点中任一存储节点;将第一存储节点所在机房的机房标识添加至第一存储节点的配置文件中。
例如,对于各个存储节点,可以修改各个存储节点原来的配置文件,该配置文件标记为“storage_ips.conf”,增加各个存储节点所在机房的机房标识。
其中,“id”用于指示存储节点的标识,“group_name”用于指示存储节点所在的节点群的标识,“ip_or_hostname”用于指示节点群的IP地址或主机名称,“idc”用于指示存储节点所在机房的机房标识。
步骤204:中心节点将该存储节点列表发送至第一客户端,第一客户端根据存储节点列表中各个存储节点的排序进行文件传输。
基于步骤202和步骤203可知,该存储节点列表是基于各个存储节点最新的属性信息确定的,因此,存储节点列表中各个存储节点的排序可以表征当前时间各个存储节点处理数据的能力排序。因此,当第一客户端根据存储节点列表中各个存储节点的排序进行文件传输时,可以保证在文件传输的过程中,存储节点列表具有时效性,第一客户端可以准确选择出最合适的存储节点进行文件传输。
在一种可能的实现方式中,第一客户端按照存储节点列表从前到后的顺序依次选择一个存储节点进行文件传输。在任一次选择存储节点后,向选择的存储节点执行IO操作,如果接收到选择的存储节点返回一个IO操作成功消息时,则确定当前从选择的存储节点中读取或写入数据成功。如果没有接收到选择的存储节点返回一个IO操作成功消息时,继续按照存储节点列表从前到后的顺序依次选择下一个存储节点进行文件传输,重复上述过程,直至文件传输成功为止。
例如,当第一客户端需要写入文件时,第一客户端选择了存储节点后,拉入文件写入接口,该文件写入接口可以标记为“int StorageClient::UploadFile(const std::string&cluster_name,const std::string&file_buff,const std::string&ext_name,std::string*file_id)”。通过该文件写入接口输入参数,输出的参数包括:cluster_name,用于指示中心节点所在的节点群的名称;file_buff,用于指示上传的文件内容;ext_name,用于指示上传文件的后缀名。该该文件写入接口根据这些输入参数将文件写入选择的存储节点。存储节点在将该文件写入自身的存储空间后,向第一客户端返回IO操作成功消息,该IO操作成功消息可以标记为file_id,该file_id包括用于指示该文件的标识,还包括选择的存储节点的标识,以及存储节点所在的节点群的标识。当第一客户端接收到file_id时,确定当前写入操作成功。
在本申请实施例中,中心节点接收第一客户端发送的文件传输请求,中心节点向第一客户端发送存储节点列表,以使第一客户端根据存储节点列表中各个存储节点的排序进行文件传输。由于存储节点列表中权重大的存储节点排序在权重小的存储节点的前面,且权重相同的存储节点中,所在机房的机房标识与第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与第一客户端所在的的机房标识不相同的存储节点的前面,由此可见,如果权重最大的存储节点的数量为多个时,那么在该存储节点列表中,与第一客户端位于同一机房的存储节点排序在其他存储节点的前面,这样第一客户端在按照存储节点列表中各个存储节点的排序依次尝试进行文件传输时,就可以先尝试与第一客户端位于同一机房的存储节点进行传输,这样可以有效避免跨机房的文件传输,从而提升了文件传输的成功率,节约了网络的流量成本。
接下来对本申请实施例提供的文件传输装置进行介绍。
参见图3,本申请实施例提供了一种文件传输装置300,该文件传输装置可以应用于中心节点中,该装置300包括:
第一接收模块301,用于接收第一客户端发送的文件传输请求,文件传输请求携带中心节点所在的节点群的标识;
确定模块302,用于确定节点群包括的多个存储节点中每个存储节点的权重,权重用于指示对应的存储节点可处理数据的能力;
排序模块303,用于根据每个存储节点的权重、每个存储节点所在机房的机房标识、以及第一客户端所在机房的机房标识对多个存储节点排序,得到存储节点列表,存储节点列表中权重大的存储节点排序在权重小的存储节点的前面,且权重相同的存储节点中,所在机房的机房标识与第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与第一客户端所在的的机房标识不相同的存储节点的前面;
发送模块304,用于向第一客户端发送存储节点列表,用于指示第一客户端根据存储节点列表中各个存储节点的排序进行文件传输。
在本申请实施例中,中心节点接收第一客户端发送的文件传输请求,中心节点向第一客户端发送存储节点列表,以使第一客户端根据存储节点列表中各个存储节点的排序进行文件传输。由于存储节点列表中权重大的存储节点排序在权重小的存储节点的前面,且权重相同的存储节点中,所在机房的机房标识与第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与第一客户端所在的的机房标识不相同的存储节点的前面,由此可见,如果权重最大的存储节点的数量为多个时,那么在该存储节点列表中,与第一客户端位于同一机房的存储节点排序在其他存储节点的前面,这样第一客户端在按照存储节点列表中各个存储节点的排序依次尝试进行文件传输时,就可以先尝试与第一客户端位于同一机房的存储节点进行传输,这样可以有效避免跨机房的文件传输,从而提升了文件传输的成功率,节约了网络的流量成本
需要说明的是:上述实施例提供的文件传输装置在传输文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件传输装置与文件传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本申请实施例提供的一种服务器结构示意图。该服务器可以是后台服务器集群中的服务器。其中,图1中的中心节点可以通过图4所示的服务器来实现。具体来讲:
服务器400包括中央处理单元(CPU)401、存储器402,以及连接存储器402和中央处理单元401的***总线403。存储器402可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。
上述存储器402还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的文件传输方法的指令。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述实施例提供的文件传输方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述实施例提供的文件传输方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种文件传输方法,其特征在于,应用于中心节点,所述方法包括:
接收第一客户端发送的文件传输请求,所述中心节点属于所述第一客户端所在节点群,所述第一客户端发送所述文件传输请求时根据配置文件中所在节点群的中心节点的标识确定所述中心节点,所述文件传输请求携带所述中心节点所在的节点群的标识;
确定所述节点群包括的多个存储节点中每个存储节点的权重,所述权重用于指示对应的存储节点可处理数据的能力;
根据每个存储节点的权重,对所述多个存储节点进行聚类,得到多个节点集合,每个节点集合中包括的各个存储节点的权重之间的差值小于阈值;
确定多个节点集合中每个节点集合包括的各个存储节点的平均权重;
按照所述多个节点集合中每个节点集合的平均权重从大到小的顺序,对所述多个节点集合进行排序,得到初始存储节点列表;
获取所述第一客户端的IP地址;
根据IP地址与机房标识之间的映射关系和所述第一客户端的IP地址,获取所述第一客户端所在机房的机房标识,所述IP地址与所述机房标识之间的映射关系是所述中心节点根据各个所述客户端的配置文件中的IP地址与各个所述客户端所在机房的机房标识创建得到,各个所述客户端的配置文件与各个所述客户端所在机房的机房标识由所述中心节点预先获取得到;
对于每个节点集合包括的各个存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表;
向所述第一客户端发送所述存储节点列表,用于指示所述第一客户端根据所述存储节点列表中各个存储节点的排序进行文件传输。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对于所述多个存储节点中第一存储节点,获取所述第一存储节点所在机房的机房标识,所述第一存储节点为所述多个存储节点中任一存储节点;
将所述第一存储节点所在机房的机房标识添加至所述第一存储节点的配置文件中;
相应地,所述对于每个节点集合包括的各个存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表之前,还包括:
根据所述第一存储节点的配置文件,获取所述第一存储节点所在机房的机房标识。
3.根据权利要求1至2任一所述的方法,其特征在于,所述方法还包括:
对于所述多个存储节点中的第一存储节点,接收所述第一存储节点上报的属性信息,所述属性信息用于指示所述第一存储节点当前时间可处理数据的能力,所述第一存储节点为所述多个存储节点中任一存储节点;
根据所述第一存储节点上报的属性信息更新所述第一存储节点的配置文件包括的属性信息;
相应地,所述确定所述节点群包括的多个存储节点中每个存储节点的权重,包括:
从所述第一存储节点的配置文件中获取所述第一存储节点的属性信息;
根据所述第一存储节点的属性信息,确定所述第一存储节点的权重。
4.一种文件传输装置,其特征在于,应用于中心节点,所述装置包括:
第一接收模块,用于接收第一客户端发送的文件传输请求,所述中心节点属于所述第一客户端所在节点群,所述第一客户端发送所述文件传输请求时根据配置文件中所在节点群的中心节点的标识确定所述中心节点,所述文件传输请求携带所述中心节点所在的节点群的标识;
确定模块,用于确定所述节点群包括的多个存储节点中每个存储节点的权重,所述权重用于指示对应的存储节点可处理数据的能力;
排序模块,用于根据每个存储节点的权重,对所述多个存储节点进行聚类,得到多个节点集合,每个节点集合中包括的各个存储节点的权重之间的差值小于阈值;
确定多个节点集合中每个节点集合包括的各个存储节点的平均权重;
按照所述多个节点集合中每个节点集合的平均权重从大到小的顺序,对所述多个节点集合进行排序,得到初始存储节点列表;
第五获取模块,用于获取所述第一客户端的IP地址;
根据IP地址与机房标识之间的映射关系和所述第一客户端的IP地址,获取所述第一客户端所在机房的机房标识,所述IP地址与所述机房标识之间的映射关系是所述中心节点根据各个所述客户端的配置文件中的IP地址与各个所述客户端所在机房的机房标识创建得到,各个所述客户端的配置文件与各个所述客户端所在机房的机房标识由所述中心节点预先获取得到;
对于每个节点集合包括的各个存储节点,将所在机房的机房标识与所述第一客户端所在机房的机房标识相同的存储节点排序在所在机房的机房标识与所述第一客户端所在机房的机房标识不相同的存储节点的前面,得到所述存储节点列表;
发送模块,用于向所述第一客户端发送所述存储节点列表,用于指示所述第一客户端根据所述存储节点列表中各个存储节点的排序进行文件传输。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
第一获取模块,用于对于所述多个存储节点中第一存储节点,获取所述第一存储节点所在机房的机房标识,所述第一存储节点为所述多个存储节点中任一存储节点;
添加模块,用于将所述第一存储节点所在机房的机房标识添加至所述第一存储节点的配置文件中;
相应地,所述装置还包括:
第二获取模块,用于根据所述第一存储节点的配置文件,获取所述第一存储节点所在机房的机房标识。
6.一种文件传输装置,其特征在于,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1至权利要求3中的任一项权利要求所述的方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述权利要求1至权利要求3中的任一项权利要求所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911207113.8A CN111083204B (zh) | 2019-11-29 | 2019-11-29 | 文件传输方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911207113.8A CN111083204B (zh) | 2019-11-29 | 2019-11-29 | 文件传输方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111083204A CN111083204A (zh) | 2020-04-28 |
CN111083204B true CN111083204B (zh) | 2022-11-15 |
Family
ID=70312200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911207113.8A Active CN111083204B (zh) | 2019-11-29 | 2019-11-29 | 文件传输方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111083204B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3937502A1 (en) | 2020-05-28 | 2022-01-12 | Wangsu Science & Technology Co., Ltd. | Method, apparatus and device for pushing video stream, and storage medium |
CN111726646A (zh) * | 2020-05-28 | 2020-09-29 | 网宿科技股份有限公司 | 一种推送视频流的方法、装置、设备和存储介质 |
CN112737968A (zh) * | 2020-12-31 | 2021-04-30 | 北京大米科技有限公司 | 一种流量处理的方法、装置、可读存储介质和电子设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932440A (zh) * | 2012-10-26 | 2013-02-13 | 北京奇虎科技有限公司 | 用于分布式数据存储***的数据管理方法、设备和*** |
CN105721612B (zh) * | 2016-04-19 | 2019-05-07 | 北京百度网讯科技有限公司 | 数据传输方法和装置 |
CN107766346A (zh) * | 2016-08-15 | 2018-03-06 | 中国联合网络通信集团有限公司 | 分布式文件***文件访问方法及装置 |
CN107657027B (zh) * | 2017-09-27 | 2021-09-21 | 北京小米移动软件有限公司 | 数据存储方法及装置 |
CN107465767B (zh) * | 2017-09-29 | 2020-06-23 | 网宿科技股份有限公司 | 一种数据同步的方法和*** |
CN108920489B (zh) * | 2018-05-14 | 2021-03-16 | 北京辰森世纪科技股份有限公司 | 数据库的部署方法、装置及设备 |
CN109302497A (zh) * | 2018-11-29 | 2019-02-01 | 北京京东尚科信息技术有限公司 | 基于hadoop的数据处理方法、访问代理装置和*** |
CN109788051A (zh) * | 2019-01-02 | 2019-05-21 | 深圳市网心科技有限公司 | 基于分布式文件***的网络资源传输方法及*** |
-
2019
- 2019-11-29 CN CN201911207113.8A patent/CN111083204B/zh active Active
Non-Patent Citations (2)
Title |
---|
Layout-conscious random topologies for HPC off-chip interconnects;Michihiro Koibuchi等;《2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA)》;20130603;全文 * |
视频云源站的资源调度***设计与实现;杨继伟;《软件》;20180515;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111083204A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111083204B (zh) | 文件传输方法、装置及存储介质 | |
CN111756674B (zh) | 网络通信方法、***、设备及计算机可读存储介质 | |
CN109151025B (zh) | 基于url的负载均衡方法、装置、计算机存储介质及设备 | |
US11212342B2 (en) | Merge trees for collaboration | |
WO2017107463A1 (zh) | 一种分发cdn地址的方法及装置 | |
US11265182B2 (en) | Messaging to enforce operation serialization for consistency of a distributed data structure | |
CN103685332A (zh) | 文件上传方法、客户端、服务器及*** | |
CN110035128B (zh) | 一种直播调度方法、装置、直播***及存储介质 | |
CN115168031A (zh) | 一种雾计算***、方法、电子设备及存储介质 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN110839061B (zh) | 数据分发方法、装置及存储介质 | |
CN111064785B (zh) | 资源包下载方法、装置和*** | |
US20150095496A1 (en) | System, method and medium for information processing | |
CN110895583B (zh) | 数据资源获取的方法、装置和*** | |
CN112073212A (zh) | 参数配置方法、装置、终端设备和存储介质 | |
CN111200640A (zh) | 基于客户端的上传方法以及客户端 | |
CN112314003A (zh) | 包括多个网络切片的蜂窝电信网络 | |
CN115080771A (zh) | 基于人工智能的数据处理方法及装置、介质、网关设备 | |
CN107071038A (zh) | 一种传输多媒体数据的方法及装置 | |
CN111614750A (zh) | 一种数据更新方法、***、设备及存储介质 | |
CN111464579A (zh) | 一种消息处理方法及服务端 | |
CN112910997B (zh) | 一种局域网的资源获取方法 | |
CN110932980B (zh) | 通信方法、终端及计算机可读存储介质 | |
CN114827980B (zh) | Nssi更新方法、装置及nssmf实体 | |
CN113254318B (zh) | 设备标识信息确定方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231012 Address after: 31a, 15 / F, building 30, maple mall, bangrang Road, Brazil, Singapore Patentee after: Baiguoyuan Technology (Singapore) Co.,Ltd. Address before: 511402 5-13 / F, West Tower, building C, 274 Xingtai Road, Shiqiao street, Panyu District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU BAIGUOYUAN INFORMATION TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |