法律状态公告日
法律状态信息
法律状态
2016-06-22
授权
授权
2015-03-11
实质审查的生效 IPC(主分类):H04L29/08 申请日:20141030
实质审查的生效
2015-02-04
公开
公开
技术领域
本发明涉及一种分布式环境下依赖性程序文件集的传输优化调度方法。
背景技术
目前分布式系统处在高速发展中,促进了分布式系统服务器处理能力的提升,将客户端的资源如可执行程序文件集等储存到云服务器是一种趋势。客户端在需要这些资源的时候向服务器申请传输到本地,再进行安装运行。但目前客户端获取服务器上依赖性可执行程序文件集的方案具有以下突出问题:
技术1:分布式环境下,服务器可对客户端申请的依赖性可执行程序文件集先进行打包处理,然后将打包文件直接传输传给客户端。但这种方案没有考虑到某些可执行程序文件是被共享的,为每一客户端请求都进行打包处理,存在对某些文件重复打包,造成服务器的重复处理。而且客户端等待整个包文件传输完毕后,才能进行解包加载安装可行性程序文件,需要花费较长的时间。
技术2:服务器接受客户端的依赖性可执行程序文件集请求后,直接将单个文件传输给客户端。这种方案服务器实现简单,但没有考虑客户端对文件之间的依赖关系(有些文件需要有其他文件的支持才能加载),客户端可能需要等待依赖的可执行程序文件才能加载已经传输的可执行程序文件,故客户端不能较好地实现依赖性可执行程序文件集的传输与加载的并行化处理。
技术3:服务器接受客户端的依赖性可执行程序文件集请求后,在上述方案基础上增加了考虑文件之间的依赖关系处理,服务器按照依赖性的程序文件顺序传输给客户端,客户端接受按依赖关系的可执行程序文件实现传输与加载并行处理。但此方案,在多客户端请求依赖性可执行程序文件集时,多个客户可能请求同一文件,存在服务器对同一可执行程序文件多次重复查找及读写操作,浪费服务器的计算资源。
发明内容
本发明所要解决的技术问题是,针对上述现有技术的不足,提供一种分布式环境下依赖性程序文件集的传输优化调度方法。
为解决上述技术问题,本发明所采用的技术方案是:一种分布式环境下依赖性程序文件集的传输优化调度方法,包括以下步骤:
1)为分布式环境下的每个客户端生成一个文件信息节点数组,将所有客户端对应的文件信息节点数组的指针保存起来再次合并为一个新的数组,命名为G;
2)将数组G中各个客户端的文件信息节点数组进行批次调整,使得不依赖其他文件的程序文件排在靠前的批次;
3)在经步骤2)处理后的各个客户端的文件批次内部进行统计,使得被多个客户端请求的文件优先传输。
所述步骤1)中,文件信息节点数组生成方法为:
1)设计信息结点存储客户端程序文件的信息,包括:信息区FI,标识区FLAG和集合区S;信息区FI存放了程序文件基本信息;标志区FLAG存放了文件FI的执行所依赖的其他文件的个数;集合区S为一个集合,存放了文件FI的执行所依赖的其他文件的路径;
2)设计结点数组用来存放所有的程序文件的信息结点,用Arri表示程序文件集的头结点数组,i表示第i个客户端,Arri即为文件信息节点数组。
所述步骤2)中,将数组G中各个客户端的文件信息节点数组进行批次调整的步骤如下:
1)设置初始变量,i=1;
2)取出Arri,遍历Arri中的所有节点,设置内部变量j=1;
3)将Arri中所有满足FLAG=0的节点存入第j批,命名为第j个文件集合;
4)删除Arri中所有满足FLAG=0的节点;
5)遍历Arri中剩下的节点,如果剩下的节点在集合区S中存在步骤4)中被删除的节点的信息区FI信息,则将该被删除的节点FLAG减1;
6)j加1,返回步骤3),直到Arri中所有节点被删除为止;
7)i加1,返回步骤2),直到G中所有节点被遍历。
所述步骤3)中,对各个客户端的文件批次内部进行统计的方法如下:
1)取出G中所有文件信息节点数组指向的第1个文件集合;
2)找出上述所有第1个文件集合中出现最多的文件FImax;
3)发送磁盘寻找文件FImax,读取文件FImax,传输文件FImax的命令;
4)将FImax从所有文件信息节点数组指向的第1个文件集合中删除,如果某个客户端对应的该批文件集合已经为空,则让该客户端文件信息节点数组指针直接指到第1个文件集合的下一个文件集合;
5)返回步骤1),直到所有文件信息节点数组指向的节点全部被删除为止。
与现有技术相比,本发明所具有的有益效果为:本发明针对每一个客户端,利用智能排序算法,基于其请求的可执行程序文件集的依赖关系,确定了文件传输的批次顺序以及每个批次中需要传输的若干文件,保证了客户端能够“即接收即加载”, 避免因为程序依赖性造成接收后不能加载的等待,提高效率。针对多个用户的某一个批次,在服务器端采用智能预读算法,对需要传输的文件进行再次排序,对传输进行优化调度,降低服务器端查找和读取文件的次数,提高服务器读文件效率。
附图说明
图1为本发明一实施例文件信息节点示意图;
图2为本发明一实施例文件信息节点数组示意图;
图3为本发明一实施例多客户端下的数据结构示意图;
图4为本发明一实施例排序后的批次结构示意图。
具体实施方式
本发明包括3个核心技术,分别是:依赖关系数据结构设计、智能排序算法、智能预读算法。
依赖关系数据结构设计
具体的技术实现方案描述如下:
首先,针对每一个特定的客户端,假设其请求m个文件:
(1)设计结点存储程序文件的信息,包括:信息区(FI),标识区(FLAG)和集合区(S)。FI存放了程序文件基本信息如文件名,大小,版本,文件路径等信息;FLAG存放了文件FI的执行所依赖的其他文件的个数,S为一个集合,存放了文件FI的执行所依赖的其他文件的路径。用F表示每个节点。如图1所示。
(2)设计结点数组用来存放所有的程序文件的信息结点,用Arr表示这个程序文件集的头结点数组,m文件的个数。如图2所示。
其次,针对多个客户端,为每个客户端生成一个依赖数组Arr,将这些数组的指针保存起来再次合并成为一个数组,命名为G。如图3所示,其中,N为客户端个数。
智能排序算法
本步骤中,主要目的是将各个客户端的文件信息节点数组(Arri)进行批次调整,使得不依赖其他文件的程序文件排在靠前的批次。具体算法如下:
步骤1:设置初始变量,i=1。
步骤2:取出Arri:,遍历Arri中所有节点,设置内部变量j=1。
步骤3:将Arri中所有满足FLAG=0的节点存入第j批,命名为第j个文件集合。
步骤4:删除Arri中所有满足FLAG=0的节点。
步骤5:遍历Arri中剩下的节点,如果在其S中存在步骤4中被删除的节点的FI信息,则将其FLAG减1。
步骤6:j加1,重复步骤3,直到Arri中所有节点被删除为止。
步骤7:i加1,重复步骤2,直到G中所有节点被遍历。
智能排序完毕,生成的批次结构如图4所示。
智能预读算法
服务器采用智能排序处理多个客户端请求依赖性可执行程序文件集后,会对每一个客户端请求都生成一个按批次排序的序列。每个客户端批次序列是相互独立的,多个客户端的某一次批次内的可执行程序文件的头结点集合具有重复性。如果服务器不优化调度,直接为每个客户端按批次传输文件,可能对同一可执行程序文件多次读取传输,浪费计算资源。本技术方案提出智能预读算法支持服务器对多个用户的某一批次重新优化调度,使得服务器对可执行程序文件预读一次,多次传输。
本步骤中,主要目的是在各个客户端的文件批次内部进行统计,使得被多个客户端请求的文件尽量优先传输。具体算法如下:
步骤1:取出G中所有Arr指向的第1个文件集合。
步骤2:找出这些文件集合中出现最多的文件FImax。
步骤3:发送磁盘寻找FImax,读取FImax,传输FImax的命令。
步骤5:将FImax从所有Arr的该批文件集合中删除。如果某个客户端对应的该批文件集合已经为空,则让其Arr指针直接指到该批文件集合的下一批。
步骤6:重复步骤1,直到所有Arr指向的节点全部被删除为止。
本发明在真实环境下完成实验,实验环境如表1所示:
表1 实验环境
我们将本发明的方法和目前比较流行的其他方法进行了比较,比较对象为:
方法1:打包发送:服务器可对客户端申请的依赖性可执行程序文件集先进行打包处理,然后将打包文件直接传输传给客户端。
方法2:随机发送:服务器接受客户端的依赖性可执行程序文件集请求后,直接将单个文件传输给客户端。
方法3:按照依赖顺序发送:服务器接受客户端的依赖性可执行程序文件集请求后,考虑文件之间的依赖关系处理,服务器按照依赖性的程序文件顺序传输给客户端。
我们将本发明方法和上述3种方法进行比较,完成了以下4个实验:
(1)定义服务器端为某个客户准备文件包或者文件结构集合的时间为预处理时间,用从服务器端收到客户端请求到开始传输文件的时间段衡量。服务器端预处理时间比较如表2所示:
表2 服务器预处理时间比较(秒)
从以上比较可以看出,本发明方法所占用的预处理时间要远远少于方法1。本发明方法花的预处理时间和方法2,方法3接近。
(2)如果客户端收到某个文件,但由于其依赖性文件未到达,造成该文件不能加载而等待,定义该情况为阻塞。在这4种方法中,客户端被阻塞的文件个数比较如表3所示:
表3 客户端被阻塞的文件个数比较
从以上比较可以看出,本发明方法中客户端被阻塞的文件个数远远小于方法2。本发明方法和方法1,方法3都不存在阻塞。
(3)定义服务器端从其硬盘将文件读取到内存中为读文件过程。在这4种方法中,服务器所读文件次数比较如表4所示:
表4 服务器读文件次数比较
从以上比较可以看出,本发明方法具有较大优势。服务器上只有3000个文件,方法1,2,3对很多文件读取了多次,浪费了服务器资源。本发明方法可以保证接近每个文件读取1次的效果。
(4)定义客户端从开始请求到全部将文件接收并加载完毕的时间为总耗时,该时间包含了预处理时间,传输时间和文件在客户端加载的时间。各个客户端总耗时比较如表5所示:
表5 各客户端总耗时时间比较(秒)
从以上比较可以看出,总体上看,本发明方法客户端所花时间仅为方法1的四分之一,是方法2和3的一半左右。客户端发出请求之后,本发明能保证在更短的时间获取并加载文件集,大大提升了客户体验。
机译: 一种在高-低,稳定或时间依赖性温度下安全传输稳定或时间依赖性压力的方法。
机译: 如果存在超量预订的功能,请在确保不限制分层传输速度的情况下,使用端口调度程序及其方法,以在没有调度的情况下调度服务的提供
机译: 在配置应用程序的帮助下从目标应用程序中的源应用程序自动获取数据的方法,涉及以数据文件的形式将源应用程序的数据作为数据集导出