一种分布式文件的下载方法及装置与流程

文档序号:12479088阅读:236来源:国知局
一种分布式文件的下载方法及装置与流程

本发明属于数据传输领域,尤其涉及一种分布式文件的下载方法及装置。



背景技术:

随着视频监控技术的发展,视频监控在各行各业中使用越来越广泛,视频监控系统除了用于对各个监控场所进行实时视频监控外,在地铁、监狱、银行、平安城市等视频监控系统中,还经常会遇到需要将视频监控录像下载到本地来进行查看的情况。并且随着科技的发展,视频监控越来越智能化,其中在对视频监控录像进行智能分析时,为了更方便快速地进行智能分析,也需要将视频监控录像下载到本地。

现有技术下载视频监控录像的方式,如图1所示,视频监控录像以分布式存储的方式保存在多个数据节点DN上,每个视频监控客户端UI都通过视频点播服务器VOD从数据节点DN下载视频监控录像。具体地,视频监控客户端需要下载视频监控录像时,发送下载请求给视频点播服务器VOD,视频点播服务器VOD首先从各个数据节点DN上下载相应的视频监控录像,然后将下载的视频监控录像推送给相应的视频监控客户端,从而完成视频监控录像的下载。

现有技术虽然能进行视频监控录像的下载,但由于所有监控视频录像的下载都需要经过视频点播服务器VOD,因此视频点播服务器VOD成为监控视频录像下载的瓶颈,特别是在视频监控客户端较多,监控视频录像下载需求较大的情况下尤其明显。另外,如果视频监控客户端和数据节点DN带宽都很高,但是视频点播服务器VOD带宽不高的情况下,也会大大降低视频监控录像的下载速度。



技术实现要素:

本发明的目的是提供一种分布式文件的下载方法及装置,以解决现有技术进行视频监控录像下载时,都要通过视频点播服务器VOD来进行,造成视频点播服务器VOD成为监控视频录像下载的瓶颈,严重影响视频监控录像下载速度的问题。

为了实现上述目的,本发明技术方案如下:

一种分布式文件的下载方法,应用于文件下载客户端,所述分布式文件的下载方法,包括:

发送数据节点请求消息给元数据管理服务器,获取存储下载文件的数据节点的信息;

发送查询消息给存储下载文件的数据节点,获取数据节点中存储的下载文件的文件名;

根据获取到的数据节点的信息,启动多个并发线程,每个并发线程与其中的一个数据节点对应,发送包含下载文件名以及初始带宽的文件下载请求给相应的数据节点,并根据数据节点依据所述文件下载请求为其分配的下载带宽进行文件下载;

统计实际下载带宽,周期性向数据节点发送包含实际下载带宽的下载带宽更新请求,并根据数据节点依据所述下载带宽更新请求为其分配的下载带宽进行文件下载。

所述文件下载请求中初始带宽为设定的基础带宽,所述数据节点依据所述文件下载请求为其分配的下载带宽,为数据节点的剩余下载带宽的预定比例。

所述下载带宽更新请求中还包括预设的带宽步长,所述下载带宽更新请求中请求的预计带宽为所述实际下载带宽与预设的带宽步长之和,所述数据节点依据所述下载带宽更新请求为其分配的下载带宽,为数据节点的剩余下载带宽的预定比例与所述预计带宽中的较小值。

本发明还提出了一种分布式文件的下载方法,应用数据节点,所述分布式文件的下载方法,包括:

接收文件下载客户端的查询消息,查询出本设备存储的下载文件的文件名,并发送给文件下载客户端;

接收文件下载客户端发送的包含下载文件名以及初始带宽的文件下载请求,依据所述文件下载请求中的初始带宽为其分配下载带宽;

接收文件下载客户端周期性发送的包含统计得到的实际下载带宽的下载带宽更新请求,依据所述下载带宽更新请求中的实际下载带宽为其分配下载带宽。

所述依据所述文件下载请求中的初始带宽为其分配下载带宽,包括:

计算本数据节点的剩余下载带宽,以本数据节点的剩余下载带宽的预定比例作为为文件下载客户端分配的下载带宽。

所述下载带宽更新请求中还包括预设的带宽步长,所述下载带宽更新请求中请求的预计带宽为所述实际下载带宽与预设的带宽步长之和,所述依据所述下载带宽更新请求中的实际下载带宽为其分配下载带宽,包括:

计算本数据节点的剩余下载带宽,以本数据节点的剩余下载带宽的预定比例与所述预计带宽中的较小值作为为文件下载客户端分配的下载带宽。

本发明还提出了一种分布式文件的下载装置,应用于文件下载客户端,所述分布式文件的下载装置,包括:

节点请求模块,用于发送数据节点请求消息给元数据管理服务器,获取存储下载文件的数据节点的信息;

文件查询模块,用于发送查询消息给存储下载文件的数据节点,获取数据节点中存储的下载文件的文件名;

下载模块,用于根据获取到的数据节点的信息,启动多个并发线程,每个并发线程与其中的一个数据节点对应,发送包含下载文件名以及初始带宽的文件下载请求给相应的数据节点,并根据数据节点依据所述文件下载请求为其分配的下载带宽进行文件下载;

更新模块,用于统计实际下载带宽,周期性向数据节点发送包含实际下载带宽的下载带宽更新请求,并根据数据节点依据所述下载带宽更新请求为其分配的下载带宽进行文件下载。

本发明还提出了一种分布式文件的下载装置,应用数据节点,所述分布式文件的下载装置,包括:

查询模块,用于接收文件下载客户端的查询消息,查询出本设备存储的下载文件的文件名,并发送给文件下载客户端;

初始带宽分配模块,用于接收文件下载客户端发送的包含下载文件名以及初始带宽的文件下载请求,依据所述文件下载请求中的初始带宽为其分配下载带宽;

带宽更新模块,用于接收文件下载客户端周期性发送的包含统计得到的实际下载带宽的下载带宽更新请求,依据所述下载带宽更新请求中的实际下载带宽为其分配下载带宽。

所述初始带宽分配模块在依据所述文件下载请求中的初始带宽为其分配下载带宽时,执行如下操作:

计算本数据节点的剩余下载带宽,以本数据节点的剩余下载带宽的预定比例作为为文件下载客户端分配的下载带宽。

所述下载带宽更新请求中还包括预设的带宽步长,所述下载带宽更新请求中请求的预计带宽为所述实际下载带宽与预设的带宽步长之和,所述带宽更新模块在依据所述下载带宽更新请求中的实际下载带宽为其分配下载带宽时,执行如下操作:

计算本数据节点的剩余下载带宽,以本数据节点的剩余下载带宽的预定比例与所述预计带宽中的较小值作为为文件下载客户端分配的下载带宽。

本发明提出了一种分布式文件的下载方法及装置,客户端通过启动多个并发线程,每个并发线程与分布式存储系统中一个数据节点建立连接并进行分布式文件的下载,大大加快了分布式文件的下载速度,并在文件下载过程中,根据客户端的下载能力以及数据节点的剩余下载带宽,周期性地更新下载带宽,从而在使数据节点的下载带宽得到合理利用的同时,保证客户端的下载速度最大化,提高了多客户端同时下载的速度。解决了现有技术中客户端进行视频监控录像下载时,都要通过视频点播服务器VOD来进行,造成视频点播服务器VOD成为监控视频录像下载的瓶颈,严重影响视频监控录像下载速度的问题。本发明还通过统计数据节点中文件存储的速度,并根据生成的文件上传速度曲线,合理分配数据节点中总的存储带宽和总的下载带宽,使数据节点在进行文件下载时,不会影响到文件的存储。

附图说明

图1为现有技术下载视频监控录像的结构示意图;

图2为本发明分布式文件的下载方法的流程图;

图3为本实施例网络连接结构示意图。

具体实施方式

下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。

一种分布式文件的下载方法,应用于文件下载客户端,如图2所示,包括:

步骤S1、发送数据节点请求消息给元数据管理服务器,获取存储下载文件的数据节点的信息。

本实施例以视频监控系统中分布式存储的视频监控录像的下载为例来进行说明。本实施例视频监控录像下载的示意图,如图3所示,MD为元数据管理服务器,用于对数据节点进行管理;Client为存储客户端,部署在摄像机或者收流服务器上,用于将摄像机生成的视频监控录像存储在元数据管理服务器分配的数据节点上,实现视频监控数据的分布式存储;DN为数据节点,用于存储视频监控数据;UI为视频监控客户端,用于下载视频监控录像,即文件下载客户端。

本实施例视频监控录像的存储过程如下:存储客户端在进行视频监控数据存储前,向元数据管理服务器发送请求消息,请求获取数据节点的信息,元数据管理服务器按分布式存储的原则分配相应的数据节点,并将所分配的数据节点的信息反馈给存储客户端,存储客户端根据接收到的数据节点的信息,例如IP地址,将视频监控数据写入该数据节点。存储客户端将视频监控数据写入数据节点的具体步骤为:存储客户端先在数据节点上创建一个以摄像机编码为目录名的目录,然后在以摄像机编码为目录名的目录下创建一个以当前日期为目录名的子目录,然后在以当前日期为目录名的子目录中创建一个文件名中包含写入的视频监控录像的起始时间及结束时间的文件,将视频监控录像写入该文件中。例如,存储客户端在DN1中创建了文件:/cam1/20160819/S0830000E103000B.h3crd,该文件表示视频监控录像的摄像机编码为cam1,视频监控录像的日期为2016年08月19日,视频监控录像的时间为08:30:00到10:30:00。

需要说明的是,为了实现视频监控录像的分布式存储,本实施例存储客户端根据预设的时间段将摄像机的视频监控数据存储在不同的数据节点上。例如,预设的时间段为二个小时,摄像机开机后(开机时间为8:30),存储客户端向元数据管理服务器请求分配数据节点,元数据管理服务器分配的数据节点为DN1,存储客户端将摄像机8:30~10:30的视频监控数据写入数据节点DN1,在早上10:30重新向元数据管理服务器请求分配数据节点,元数据管理服务器分配数据节点DN2,存储客户端将摄像机10:30~12:30的视频监控数据写入数据节点DN2,如此循环往复,实现摄像机视频监控录像的分布式存储。

本实施例视频监控客户端需要下载视频监控录像时,首先发送数据节点获取请求消息给元数据管理服务器,该请求消息中携带有需要下载的视频监控录像的摄像机编码。元数据管理服务器根据该请求消息中的摄像机编码查询出所有存储该摄像机视频监控录像的数据节点,并将查询出的数据节点的信息(例如数据节点的IP地址)发送给视频监控客户端。

通过上述方法,本实施例获取到存储下载文件的数据节点的信息。

步骤S2、发送查询消息给存储下载文件的数据节点,获取数据节点中存储的下载文件的文件名。

本实施例获取存储下载文件的数据节点的信息后,将所需下载的视频监控录像的摄像机编码和时间段发送给上述每个数据节点,数据节点查找本设备的文件系统中是否保存有所述摄像机在该时间段内的视频监控录像,如果有所述摄像机在该时间段内的视频监控录像,则将视频监控录像的文件名发送给视频监控客户端,如果没有所述摄像机在该时间段内的视频监控录像,则发送文件不存在的消息给视频监控客户端。

例如,本实施例视频监控客户端需要下载摄像机编码为cam1,时间为2016年08月19日9:00~12:30的视频监控录像;DN1上存储有摄像机编码为cam1,时间为2016年08月19日8:30~10:30的视频监控录像,且存储的目录和文件名为:/cam1/20160819/S0830000E103000B.h3crd;DN2上存储有摄像机编码为cam1,时间为2016年08月19日10:30~12:30的视频监控录像,且存储的目录和文件名为:/cam1/20160819/S1030000E123000B.h3crd;DN3上存储有摄像机编码为cam1,时间为2016年08月19日12:30~14:30的视频监控录像,且存储的目录和文件名为:/cam1/20160819/S1230000E143000B.h3crd。视频客户端将需要下载的视频监控录像的摄像机编码cam1、时间段2016年08月19日10:30~12:30分别发送给DN1、DN2、DN3;DN1查询本设备中的视频监控录像,发现有满足上述条件的视频监控录像,将视频监控录像的文件名S0830000E103000B.h3crd发送给视频监控客户端;DN2查询本设备中的视频监控录像,发现有满足上述条件的视频监控录像,将视频监控录像的文件名S1030000E123000B.h3crd发送给视频监控客户端;DN3查询本设备中的视频监控录像,发现没有满足上述条件的视频监控录像,发送文件不存在的消息给视频监控客户端。

通过上述方法,本实施例获取到数据节点中存储的下载文件的文件名。

步骤S3、根据获取到的数据节点的信息,启动多个并发线程,每个并发线程与其中的一个数据节点对应,发送包含下载文件名以及初始带宽的文件下载请求给相应的数据节点,并根据数据节点依据所述文件下载请求为其分配的下载带宽进行文件下载。

本实施例在获取到存储所需下载的视频监控录像的数据节点信息以及数据节点上存储的视频监控录像的文件名后,启动多个并发线程,并发线程的数量与所获取的数据节点的数量相同,每个并发线程与其中的一个数据节点建立连接,然后通过建立的连接下载相应的视频监控录像文件,每个并发线程每次下载一个视频监控录像文件。

每个并发线程下载视频监控录像文件的过程如下:

首先发送文件下载请求给数据节点,文件下载请求包含下载的视频监控录像的文件名以及初始带宽,其中初始带宽为设定的基础带宽,一般设为0。数据节点中配置有最大并发下载文件数和最小下载带宽分配阀值,数据节点收到下载请求后,查询当前正在下载的文件数和数据节点的剩余下载带宽,如果当前正在下载的文件数等于最大并发下载文件数,或者数据节点的剩余下载带宽小于最小下载带宽分配阀值,则返回下载拒绝的消息,此时会出现下载失败,该并发线程会根据预设的时间周期重新发起下载请求。

如果当前正在下载的文件数小于最大并发下载文件数,并且数据节点的剩余下载带宽大于最小下载带宽分配阀值,则根据本数据节点的剩余下载带宽以及下载请求中预计带宽进行该线程的下载带宽分配。

数据节点的剩余下载带宽通过如下方法计算得到:

首先确定数据节点的总下载带宽,可以通过二种方法确定。

1、根据数据节点的总带宽以及预设的存储带宽与下载带宽的比例,计算出数据节点的总下载带宽。例如数据节点的总带宽为1000Mbit/s,预设的存储带宽与下载带宽的比例为8:2,则得到数据节点的总下载带宽为200Mbit/s。

2、由于视频监控系统中视频存储的流量比较恒定,因此可以通过统计数据节点的实时存储流量,得到视频存储的流量曲线,根据视频存储的流量曲线确定数据节点的总下载带宽为总带宽减去存储带宽。

然后用数据节点的总下载带宽减去已分配的下载带宽,得到数据节点的剩余下载带宽。

由于下载请求中初始带宽为0,即发送下载请求的线程不知道自己的网络环境支持的下载带宽值,为了使下载速度最大,本实施例将数据节点剩余下载带宽的80%分配给该线程,该线程根据数据节点分配的下载带宽进行视频监控录像文件的下载。

容易理解的是,数据节点在分配带宽时,可以采取多种方法来分配,在数据节点剩余下载带宽的允许范围内来分配,例如直接分配固定的带宽等,这里不再赘述。

步骤S4、统计实际下载带宽,周期性向数据节点发送包含实际下载带宽的下载带宽更新请求,并根据数据节点依据所述下载带宽更新请求为其分配的下载带宽进行文件下载。

为了使数据节点的下载带宽得到合理利用,同时使线程的下载速度最大化,本实施例线程在视频监控录像文件的下载过程中,会根据预设的周期阈值,周期性地发送下载带宽更新请求给数据节点。下载带宽更新请求中携带有实际下载带宽,实际下载根据流量统计得到。

数据节点接收到下载带宽更新请求后,根据下载带宽更新请求中携带的实际下载带宽,来为视频监控客户端分配带宽:

例如,当统计出的实际下载带宽为30Mbit/s时,可以在30Mbit/s的基础上,直接加上一个预设的带宽步长(假设,预设的下载带宽步长为10Mbit/s),得到实际为视频监控客户端分配的带宽为40Mbit/s。

其中预设的带宽步长可以在视频监控客户端来设置,也可以在数据节点设置。当由视频监控客户端设置该预设的带宽步长时,在下载带宽更新请求中需要包括该预设的带宽步长。而在数据节点设置时,则下载带宽更新请求仅包含实际下载带宽即可。

因为数据节点下载带宽有限,本实施例先检查本数据节点已分配的下载带宽占总下载带宽的比例是否大于预设的比例阈值(例如80%),如果小于预设的比例阈值,表示剩余下载带宽还足够,则将剩余下载带宽的80%与预计带宽中的较小值,作为分配给该线程的下载带宽;如果大于或等于预设的比例阈值,则表示剩余下载带宽比较紧张,则将当前剩余下载带宽的50%与预计带宽中的较小值,作为分配给该线程的下载带宽。

上述线程根据数据节点重新分配的下载带宽继续进行视频监控录像文件的下载,并重复上述过程,直到本视频监控录像文件下载完成。

需要说明的是,本实施例数据节点在每次分配完下载带宽后,都会更新已分配下载带宽,例如,数据节点在分配下载带宽前的已分配带宽为60Mbit/s,本次分配的下载带宽为40Mbit/s,则在本次下载带宽分配完成后将已分配下载带宽更新为100Mbit/s。另外,数据节点在每次分配下载带宽前,如果有可回收的下载带宽,则先将可回收的下载带宽进行回收后,再进行下载带宽分配。例如某个线程在发送下载请求时,数据节点分配给该线程的下载带宽为100Mbit/s,当该线程第一次发送下载带宽更新请求时,数据节点的剩余下载带宽为20Mbit/s,则先将分配给该线程的100Mbit/s下载带宽回收,得到剩余下载带宽为120Mbit/s,然后再进行下载带宽分配。

下面通过举例对视频监控客户端的线程从数据节点下载视频监控录像文件进行说明:

假设某个数据节点DN1的最大下载带宽为500Mbit/s,已分配下载带宽为100Mbit/s,最小下载带宽分配阀值为1Mbit/s,视频监控客户端上线程预设的下载带宽步长10Mbit/s,预设的下载带宽更新请求的周期阈值为5秒。

视频监控客户端的某个并发线程首先发送下载请求消息给DN1,其中预计带宽为0Mbit/s,DN1收到下载请求消息后,分配剩余下载带宽的80%,即320Mbit/s给该并发线程,进行视频监控录像文件下载。

过了一个下载带宽更新请求的周期阈值5s后,该并发线程统计出的实际下载带宽为30Mbit/s,加上下载带宽步长10Mbit/s,得到预计带宽为40Mbit/s,发送下载带宽更新请求消息给DN1,DN1收到消息后,先回收之前分配的320Mbit/s,再分配给该并发线程40MMbit/s的下载带宽,继续进行视频监控录像文件下载。

又过了一个下载带宽更新请求的周期阈值5s后,该并发线程统计出的实际下载带宽为38Mbit/s,加上下载带宽步长10Mbit/s,得到预计带宽为48Mbit/s,再发送下载带宽更新请求消息给DN1,DN1收到消息后,先回收之前分配的40Mbit/s,再分配给该并发线程48MMbit/s的下载带宽,继续进行视频监控录像文件下载。

重复上述过程,直到该视频监控录像文件下载完成。

通过上述方法,本实施例每个视频监控客户端上的多个并发线程同时进行各个数据节点上的视频监控录像文件下载,充分利用了数据节点的下载带宽和视频监控客户端的下载能力,极大加快了视频监控录像文件的下载。

对应于上述方法,作为本发明的一个实施例,还提出了对应的一种分布式文件的下载装置,应用于文件下载客户端。该分布式文件的下载装置,包括:

节点请求模块,用于发送数据节点请求消息给元数据管理服务器,获取存储下载文件的数据节点的信息;

文件查询模块,用于发送查询消息给存储下载文件的数据节点,获取数据节点中存储的下载文件的文件名;

下载模块,用于根据获取到的数据节点的信息,启动多个并发线程,每个并发线程与其中的一个数据节点对应,发送包含下载文件名以及初始带宽的文件下载请求给相应的数据节点,并根据数据节点依据所述文件下载请求为其分配的下载带宽进行文件下载;

更新模块,用于统计实际下载带宽,周期性向数据节点发送包含实际下载带宽的下载带宽更新请求,并根据数据节点依据所述下载带宽更新请求为其分配的下载带宽进行文件下载。

对应于上述方法,作为本发明的一个实施例,还提出了对应的一种分布式文件的下载装置,应用数据节点。该分布式文件的下载装置,包括:

查询模块,用于接收文件下载客户端的查询消息,查询出本设备存储的下载文件的文件名,并发送给文件下载客户端;

初始带宽分配模块,用于接收文件下载客户端发送的包含下载文件名以及初始带宽的文件下载请求,依据所述文件下载请求中的初始带宽为其分配下载带宽;

带宽更新模块,用于接收文件下载客户端周期性发送的包含统计得到的实际下载带宽的下载带宽更新请求,依据所述下载带宽更新请求中的实际下载带宽为其分配下载带宽。

其中,初始带宽分配模块在依据所述文件下载请求中的初始带宽为其分配下载带宽时,执行如下操作:

计算本数据节点的剩余下载带宽,以本数据节点的剩余下载带宽的预定比例作为为文件下载客户端分配的下载带宽。

当下载带宽更新请求中还包括预设的带宽步长,所述下载带宽更新请求中请求的预计带宽为所述实际下载带宽与预设的带宽步长之和,所述带宽更新模块在依据所述下载带宽更新请求中的实际下载带宽为其分配下载带宽时,执行如下操作:

计算本数据节点的剩余下载带宽,以本数据节点的剩余下载带宽的预定比例与所述预计带宽中的较小值作为为文件下载客户端分配的下载带宽。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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