服务器中的数据处理方法及系统的制作方法

文档序号:6526427阅读:120来源:国知局
服务器中的数据处理方法及系统的制作方法
【专利摘要】本申请公开了一种服务器中的数据处理方法,用于避免数据文件在切分时或写入磁盘阵列时所发生的传输错误,降低网络重复传输数据文件。所述方法包括:接收数据文件;把所述数据文件放置于对应的内部队列中;取得所述内部队列中的所述数据文件并根据所述数据文件的文件大小决定切分数量;根据所述切分数量对所述数据文件进行切分,并得到多个切分片段;判断所述切分片段的切分点是否位于所述内部队列的尾端;若所述切分点位于所述尾端之前,则减缩切分片段的长度,令所述数据文件的切分位置至所述切分点上;若所述切分点位于所述尾端之后,则延伸切分片段的长度,令所述数据文件的切分位置至所述切分点上;以及把所述切分片段依序写入目标文件。
【专利说明】服务器中的数据处理方法及系统
【技术领域】
[0001]本申请涉及数据传输的方法及系统,具体涉及一种服务器中的数据处理方法及系统。
【背景技术】
[0002]随着网络流量的快速成长,许多过去不容易实现的服务也可以被轻易的完成。例如:宽带的上传多媒体文件(multimedia file)。由于海量的传输仍会影响服务器的负荷量。因此在已知的多媒体服务器也会具备带宽管理(Bandwidth Manager)的功能。服务器可以透过带宽分布或缓存等方式减轻同时间的资料传输量。
[0003]此外,所述的传输方式更结合了多个实体磁盘,使得数据可以同步的写入所述磁盘中。而现有技术对数据写入磁盘的方式,是将数据同步的由来源端写入服务器中。服务器会暂存这些数据文件。之后,服务器在将这些数据文件分批的写入实体磁盘。
[0004]这种写入的方式的实现成本低廉且快速。但是数据写入的过程中若发生错误,则数据只能重新写入。因此数据重新传输的时间就会拉长,而且也会增加网络带宽的负载。此夕卜,同一份数据文件除了要从客户端中重新载入,而且也要在服务器内部重新传输。

【发明内容】

[0005]本申请所要解决的技术问题在于提供一种服务器中的数据处理系统,避免数据文件在切分时或写入磁盘阵列时所发生的传输错误,用以降低网络重复传输数据文件。
[0006]为了解决上述问题,本申请另揭示了一种数据切分的传输方法,包括以下步骤:接收数据文件;把所述数据文件放置于对应的内部队列中;取得所述内部队列中的所述数据文件并根据所述数据文件的文件大小决定切分数量;根据所述切分数量对所述数据文件进行切分,并得到多个切分片段;判断所述切分片段的切分点是否位于所述内部队列的尾端;若所述切分点位于所述尾端之前,则减缩切分片段的长度,令所述数据文件的切分位置至所述切分点上;若所述切分点位于所述尾端之后,则延伸切分片段的长度,令所述数据文件的切分位置至所述切分点上;把所述切分片段依序写入目标文件。
[0007]进一步地包括:若所述切分位置与尾端的长度是否小于长度阀值,减缩所述切分片段的长度。
[0008]进一步地包括:若所述切分位置与尾端的长度是否大于所述长度阀值,延伸所述切分片段的长度。
[0009]进一步地包括:若分散式文件装置中不存在目标文件,则分散式文件装置中创建目标文件。
[0010]为了解决上述问题,本申请揭示了一种服务器中的数据处理系统包括:本地目录、扫描模块、控制模块、上传模块与队列监视模块。本地目录接收客户端所发送的数据文件;扫描模块连接于本地目录,扫描模块监视本地目录的数据文件是否异动;控制模块耦接于扫描模块,控制模块包括至少一内部队列,每一内部队列储存对应的数据文件的路径资讯,本地目录的任一数据文件异动时,扫描模块根据异动的种类的数据文件令控制模块创建新的内部队列或更新已知的数据文件的内容;上传模块连接于本地目录,本地目录的任一数据文件异动时,上传模块侦测异动的数据文件的文件种类,并根据文件种类将数据文件指派至对应的内部队列;至少一队列监视模块连接于控制模块,队列监视模块根据内部队列的数量产生对应数量的队列监视模块;队列监视模块根据内部队列的数据文件的大小决定数据文件的切分数量,并根据切分数量对数据文件进行切分。
[0011]进一步地包括队列监视模块对所监控的内部队列的数据文件根据先进先出的方式从内部队列中取出数据文件。
[0012]进一步地当队列监视模块于切分时确认数据文件的切分位置落于内部队列的尾端,且数据文件的切分点位于尾端之前,则队列监视模块修改数据文件的切分位置至切分点上。
[0013]进一步地包括至少一工作线程,每一队列监视模块连接于所属的工作线程,工作线程的数量等同于切分数量,工作线程根据切分数量把数据文件切分为多个切分片段,工作线程根据切分片段的位置读取切分片段的数据。
[0014]进一步地包括分散式文件装置,连接于工作线程,工作线程将切分片段依序的写入分散式文件装置中。
[0015]与现有技术相比,本申请可以获得包括以下技术效果:
[0016]1)本申请改进数据文件的传输过程,数据文件写入时若发生错误,本申请不需重新从客户端中取得数据文件。
[0017]2)本申请若于传输数据文件的期间中发生错误,本申请可以透过至少一台心跳服务器发报给后台,使得后台人员可以实时的得知何项组件发生异常。
[0018]当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
【专利附图】

【附图说明】
[0019]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0020]图1是本申请实施例的系统架构示意图;
[0021]图2A是本申请内部队列的切分片段的另一种示意图;
[0022]图2B是本申请实施例的内部架构示意图;
[0023]图3是本申请实施例的方法流程不意图。
【具体实施方式】
[0024]以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
[0025]如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
[0026]本申请的服务器中的数据上传系统,请参考图1。本申请的传输系统包括:本地端110与多台心跳服务器120。而本地端110由以下元件所构成:本地目录111、上传模块112、扫描模块113、控制模块114、队列监视模块115、工作线程116与分散式文件装置117。
[0027]本地目录111,接收客户端所发送的数据文件。扫描模块113,连接于本地目录111,扫描模块113监视本地目录的数据文件是否异动。控制模块114,耦接于扫描模块113,控制模块113包括至少一内部队列1141,每一内部队列1141储存对应的数据文件的路径资讯,本地目录111的任一数据文件异动时,扫描模块113根据异动的种类的数据文件令控制模块114创建新的内部队列1141或更新已知的数据文件的内容。上传模块112,连接于本地目录111,本地目录111的任一数据文件异动时,上传模块112侦测异动的数据文件的文件种类,并根据文件种类将数据文件指派至对应的内部队列。队列监视模块115,连接于控制模块114,队列监视模块115根据内部队列1141的数量产生对应数量的队列监视模块115。队列监视模块115根据内部队列1141的数据文件的大小决定数据文件的切分数量,并根据切分数量对数据文件进行切分。
[0028]而本申请所述的各项元件执行以下步骤:
[0029]接收数据文件;
[0030]把所述数据文件放置于对应的内部队列中;
[0031]取得所述内部队列中的所述数据文件并根据所述数据文件的文件大小决定切分
数量;
[0032]根据所述切分数量对所述数据文件进行切分,并得到多个切分片段;
[0033]判断所述切分片段的切分点是否位于所述内部队列的尾端;
[0034]若所述切分点位于所述尾端之前,则减缩切分片段的长度,令所述数据文件的切分位置至所述切分点上;
[0035]若所述切分点位于所述尾端之后,则延伸切分片段的长度,令所述数据文件的切分位置至所述切分点上;以及
[0036]把所述切分片段依序写入目标文件。
[0037]上传模块112连接于本地目录111与控制模块114。扫描模块113连接于本地目录111与控制模块114。在本申请中为能简单且清楚的说明整体的运作方式,因此设置第一心跳服务器121与第二心跳服务器122。但实际上心跳服务器120的数量可以根据服务器的运行能力、带宽或安全性等因素所决定。
[0038]控制模块114连接于扫描模块113、上传模块112、队列监视模块115、第一心跳服务器121与第二心跳服务器122。每一个本地目录111可以存放各自数据文件。例如:视频文件可以被存放置视频本地目录,而广告文件则放至于广告本地目录中。一般而言,本地目录111会定时的接收客户端所传送过来的数据文件。扫描模块113监视本地目录111中的文件是否有所异动。所述文件异动指的是数据的新增、搬移、修改或删除。当本地目录111中的文件有所异动时,则上传模块112将会把异动的数据文件在服务器中的路径传递至控制模块114。
[0039]此外,上传模块112侦测本地目录111所异动的数据文件的文件种类。广义而言所述文件种类可能是音频文件、影片文件或文字文件等等。进一步而言,音频文件又可能细分为mp3、m4a、AAC或ARM等;影片文件又可细分为mov、flv、m4v、mkv或mp4等。
[0040]若控制模块114中未存在数据文件的种类的内部队列1141时,上传模块会驱动控制模块114生成新的内部队列1141。尔后,若有同一种类的数据文件被载入,上传模块112会将新载入的数据文件放入对应的内部队列1141中。
[0041]控制模块114会根据所接收到的文件路径依次分类并产生各自对应的内部队列,且不同的内部队列会指派不同的队列监视模块115来进行处理。在图1中是以第一内部队列、第二内部队列与第三内部队列作为示意。每一个队列监视模块115会记录所属的文件的切分资讯。所述的切分资讯指的是文件被上传至本地目录111时,文件长度也会随之异动。在数据文件切分之前,队列监视模块115先从第一个内部队列取出对头元素(队列的第一个元素),然后才进行切分。而内部队列的数据取出方式是依照先进先出(First InFirst Out, FIFO)的方式所实现。
[0042]队列监视模块115对文件进行等长的切分。在完成文件的切分后,每一个文件切分的片段则定义为切分片段(slice)。队列监视模块115侦测所属的内部队列1141的堆叠数量超过上限时,队列监视模块115会向第一心跳服务器121与第二心跳服务器122发出
报警信息。
[0043]而切分片段的数量是可以根据本地端110的性能所决定。例如:1个工作线程116可处理50兆的切分片段,那么一个200兆的数据文件分配给4个工作线程116处理。同理,500兆的数据文件,可以分配给10个工作线程116处理。
[0044]本申请中对于切分片段也对例外情况做出了相应的调整方式。一般而言,内部队列1141可以透过二维阵列的方式实现。因此在二维阵列中,数据的存放可能会有跨不同行的情况。因此若是以一行作为单位,来进行数据切分就会发生有分散的数据在其他行中或是同一行的切分片段存在有其他的数据,请参考图2A与图2B所示。在图2A与图2B中虚线区块表示非属于同一切分片段的数据。对此为能方便说明切分位置的所在处,将切分片段的末端于内部队列中的位置定义为切分点,如图2A与图2B中的三角所指位置。
[0045]对于切分时所记录的相关资讯则称为切分资讯。例如,切分时的每一个切分长度与文件位置的在磁盘中的偏移量(offset)。扫描模块113发现本地目录111中的数据文件被删除时,扫描模块113会把控制模块114中的对应内部队列1141予以删除。
[0046]接着,不同的切分片段会被指派各自对应的工作线程116,作为读取本地目录111的数据文件。工作线程116的实现可以由不同的程序语言所实现。在本申请中并不局限程序语言的种类,例如,JAVA语言或ASP语言。实际上,队列监视模块115是对本地目录111的数据文件进行切分的估算,用以得到所述数据文件的每一个应该要被切分的位置。而实际上进行文件切分处理的对象是由队列监视模块115所实现。队列监视模块115接获切分片段后会根据切分片段的长度,并分派给工作线程116所属的部分数据文件。工作线程116在把所述部分的数据文件写入分散式文件装置117中。
[0047]一般而言,第一心跳服务器121或第二心跳服务器122在超过一预设的期间后未收到心跳要求,心跳服务器120会向发出报警信息。但工作线程116在写入的过程中发生错误时。工作线程116会发送报警信息给第一心跳服务器121与第二心跳服务器122。所述工作线程116同时间也会通知其他工作线程116,要求其他工作线程116停止对分散式文件装置117的写入处理,藉以避免分散式文件装置117中的数据完整性。
[0048]在此将前述各组件的运作方式以下述步骤表示,请配合图3所示:
[0049]步骤S300:将接收的数据文件存储至本地目录,并由扫描模块侦测本地目录的数据文件的异动;
[0050]步骤S310:若本地目录新增数据文件或修改数据文件,控制模块创建内部队列,并指派内部队列纪录数据文件的路径名称;
[0051]步骤S320:由上传模块侦测本地目录所异动的数据文件的文件种类;
[0052]步骤S331:若存在相同文件种类的内部对列,上传模块根据文件种类调派数据文件至相应的内部队列;
[0053]步骤S332:若不存在相同文件种类的内部对列,驱动控制模块创建新的内部队列,并将数据文件存入所述内部队列;
[0054]步骤S340:指派队列监视模块,队列监视模块取得内部队列中的数据文件并根据数据文件的文件大小决定切分数量;
[0055]步骤S350:队列监视模块根据切分数量对数据文件进行切分,并得到多个切分片段;
[0056]步骤S360:若本地目录的数据文件被删除,控制模块删除对应数据文件的内部队列与对应的工作线程;
[0057]步骤S370:配置多个工作线程,工作线程从内部队列中取得数据文件,工作线程根据切分片段的数量对数据文件进行切分;
[0058]步骤S380:判断所述切分片段的切分点是否位于所述内部队列的尾端;
[0059]步骤S381:若所述切分点位于所述尾端之前,则所述队列监视模块减缩切分片段的长度,令所述数据文件的切分位置至所述切分点上;以及
[0060]步骤S382:若所述切分点位于所述尾端之后,则所述队列监视模块延伸切分片段的长度,令所述数据文件的切分位置至所述切分点上。
[0061]本地目录111除了接收来自于客户端的数据文件外,本地目录111中的数据文件也可能会被修改、搬移或删除等异动。队列监视模块115会实时的侦测本地目录111中的数据文件是否有异动。当数据文件异动时,队列监视模块115会向上传模块112发出数据文件异动的讯息。
[0062]当有新的数据文件存入本地目录111时,扫描模块113会令控制模块建立新的内部队列1141,并将数据文件存入新的内部队列1141。一般而言,内部队列1141的数量限制取决于服务器的运行能力。但若是有过多的数据文件新创,可能会发生内部队列1141堆叠的问题。一旦有过量的数据文件被创建,则扫描模块113会透过控制模块114向心跳服务器发出报警要求。
[0063]当现有的数据文件的内容有所异动时,扫描模块113会将变更后的数据文件再次存入内部队列1141中。若是本地目录111删除数据文件时,则扫描模块113会要求控制模块114将对应的数据文件的内部队列1141进行删除。[0064]上传模块112侦测本地目录111所异动的数据文件的文件种类。上传模块112根据文件种类是否存在,上传模块112要求控制模块113创建新的内部队列1141或把数据文件放入对应的内部队列1141中。上传模块112接获数据文件异动的讯息后,上传模块112会重新取得数据文件的路径名称并将路径名称储存至内部队列1141中。对于不同的数据文件会设置唯一的内部队列1141。当本地目录111储存大量的数据文件时,控制模块114中的内部队列1141的数量也会快速的成长。
[0065]由于过多的内部队列1141会造成过量的堆叠,会使得后续的工作线程116无法即时的处理完数据文件。因此本申请会监控内部队列1141的服务量是否超过设定的压力阀值。当服务量超过压力阀值时,控制模块114会向第一心跳服务器121或第二心跳服务器122发出报警信息。
[0066]接着,根据切分片段的数量产生相应的工作线程116。每一个工作线程116根据各自的切分片段的起始位置与偏移量取得数据文件的部分片段。本申请为确定对同一数据文件的切分完整性,因此本申请对于切分点的位置提出了可以变动的判断方式。在切分数据文件时,队列监视模块115会检查切分点是否落于内部队列1141的尾端上。如果如图2A所示,则队列监视模块115会减缩切分片段的长度,使得切分片段不会包含有其他数据文件的内容。另一种情况如图2B所示,队列监视模块115会加长切分片段的长度。
[0067]接着,队列监视模块115把切分片段转由工作线程116开始读取。工作线程116把取得的片段写入分散式文件装置117中。在写入的过程中可能会发生错误,所以本申请当侦测到写入的切分片段的内容有误时,会向第一心跳服务器121或第二心跳服务器122发出报警要求。
[0068]还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者系统所固有的要
素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所
述要素的过程、方法、商品或者系统中还存在另外的相同要素。
[0069]本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0070]以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
【权利要求】
1.一种服务器中的数据处理方法,其特征在于,包括以下步骤: 接收数据文件; 把所述数据文件放置于对应的内部队列中; 取得所述内部队列中的所述数据文件并根据所述数据文件的文件大小决定切分数量; 根据所述切分数量对所述数据文件进行切分,并得到多个切分片段; 判断所述切分片段的切分点是否位于所述内部队列的尾端; 若所述切分点位于所述尾端之前,则减缩切分片段的长度,令所述数据文件的切分位置至所述切分点上; 若所述切分点位于所述尾端之后,则延伸切分片段的长度,令所述数据文件的切分位置至所述切分点上;以及 把所述切分片段依序写入目标文件。
2.如权利要求1所述的服务器中的数据处理方法,其特征在于,若分散式文件装置中不存在目标文件,则分散式文件装置中创建目标文件。
3.如权利要求1所述的服务器中的数据处理方法,其特征在于,减缩所述切分片段的长度进一步包括:` 若所述切分位置与尾端的长度小于长度阀值,减缩所述切分片段的长度。
4.如权利要求1所述的服务器中的数据处理方法,其特征在于,延伸所述切分片段的长度进一步包括: 若所述切分位置与尾端的长度大于所述长度阀值,延伸所述切分片段的长度。
5.一种服务器中的数据处理系统,其特征在于包括: 本地目录,接收客户端所发送的数据文件; 扫描模块,连接于本地目录,所述扫描模块监视所述本地目录的数据文件是否异动; 控制模块,耦接于所述扫描模块,所述控制模块包括至少一内部队列,每一所述内部队列储存对应的所述数据文件的路径资讯,所述本地目录的任一所述数据文件异动时,所述扫描模块根据异动的种类的所述数据文件令所述控制模块创建新的所述内部队列或更新已知的所述数据文件的内容; 上传模块,连接于所述本地目录,所述本地目录的任一所述数据文件异动时,所述上传模块侦测异动的数据文件的文件种类,并根据文件种类将数据文件指派至对应的内部队列;以及 至少一队列监视模块,连接于控制模块,队列监视模块根据内部队列的数量产生对应数量的队列监视模块; 其中,队列监视模块根据内部队列的数据文件的大小决定数据文件的切分数量,并根据切分数量对数据文件进行切分。
6.如权利要求5所述的服务器中的数据处理系统,其特征在于,所述队列监视模块对所监控的所述内部队列的数据文件根据先进先出的方式从所述内部队列中取出所述数据文件。
7.如权利要求5所述的服务器中的数据处理系统,其特征在于,当所述队列监视模块于切分时确认所述数据文件的切分位置落于所述内部队列的尾端,且所述数据文件的切分点位于所述尾端之前,则所述队列监视模块修改所述数据文件的切分位置至所述切分点上。
8.如权利要求5所述的服务器中的数据处理系统,其特征在于,进一步包括至少一工作线程,每一所述队列监视模块连接于所属的工作线程,工作线程的数量等同于切分数量,所述工作线程根据切分数量把所述数据文件切分为多个切分片段,所述工作线程根据切分片段的位置读取切分片段的数据。
9.如权利要求8所述的服务器中的数据处理系统,其特征在于,进一步包括分散式文件装置,连接于工作线程,`工作线程将切分片段依序的写入所述分散式文件装置中。
【文档编号】G06F9/44GK103685559SQ201310741753
【公开日】2014年3月26日 申请日期:2013年12月27日 优先权日:2013年12月27日
【发明者】于凤东, 张磊, 马一鸣 申请人:乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1