一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种程序文件的快速发布方法、装置、设备、介质及产品与流程

2022-06-25 03:06:19 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其是涉及一种程序文件的快速发布方法、装置、设备、介质及产品。


背景技术:

2.现阶段,云上发布程序包括在本地先编译,编译完再打包上传到云端,云端的容器运行一个公共的基础镜像,下载打包后的程序解压运行;或者,在本地编译,打包成镜像上传,云端下载后镜像运行两种方式。
3.而当程序文件本身比较大时,上传和下载要花费大量时间,导致发布的效率低,尤其在程序初次发布验证阶段,需要反复地发布程序,开发效率特别低。
4.针对上述中的相关技术,发明人认为当程序文件本身比较大且需要反复地发布程序时,存在有发布效率低的缺陷。


技术实现要素:

5.为了提高程序文件的发布效率,本技术提供了一种程序文件的快速发布方法、装置、设备、介质及产品。
6.第一方面,本技术提供一种程序文件的快速发布方法,具有提高程序文件发布效率的特点。
7.本技术是通过以下技术方案得以实现的:
8.一种程序文件的快速发布方法,包括以下步骤:
9.基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;
10.使所述本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较,获得比较结果;
11.根据所述比较结果生成文件对照表;
12.基于所述文件对照表,以小于所述待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互。
13.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:基于所述文件对照表,以小于所述待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互的步骤包括:
14.当待发布程序文件相比云端的包含基础镜像内所有程序文件有新增时,打包上传待发布程序文件中与所述文件对照表对应的部分文件,同时上传所述文件对照表。
15.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:还包括以下步骤:
16.当接收到所述文件和所述文件对照表后,所述云端服务器基于所述文件对照表,下载预设的文件并进行筛选删除,同时,使已完成删除的下载文件与接收到的文件进行组装,以生成完整程序;
17.根据所述完整程序,生成程序镜像,并使程序镜像加载至云端容器。
18.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:还包括以下步骤:
19.当接收到所述文件和所述文件对照表后,所述云端服务器基于所述文件对照表,下载预设的文件,同时,使已下载文件与接收到的文件进行组装,以生成完整程序;
20.根据所述完整程序,生成程序镜像,并使程序镜像加载至云端容器。
21.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:基于所述文件对照表,以小于所述待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互的步骤包括:
22.当待发布程序文件相比云端的包含基础镜像内所有程序文件无新增时,仅上传所述文件对照表。
23.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:还包括以下步骤:
24.当接收到所述文件对照表后,所述云端服务器基于所述文件对照表,下载预设的文件并进行筛选删除,使已完成删除的下载文件生成完整程序;
25.根据所述完整程序,生成程序镜像,并使程序镜像加载至云端容器。
26.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:还包括以下步骤:
27.当接收到所述文件对照表后,所述云端服务器基于所述文件对照表,下载预设的文件,生成完整程序;
28.根据所述完整程序,生成程序镜像,并使程序镜像加载至云端容器。本技术在一较佳示例中可以进一步配置为:还包括以下步骤:
29.云端容器运行并下载所述程序镜像,再启动程序,完成待发布程序文件的发布。
30.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:所述基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树的步骤包括:
31.计算底层各个文件的哈希值,生成底层的哈希值;
32.计算上层的目录所包含的子目录哈希值或所有文件的哈希值,生成上层的哈希值;
33.汇总底层的哈希值和上层的哈希值,生成从底层到上层的本地哈希树。
34.本技术在一较佳示例中可以进一步配置为:使所述本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较的步骤包括:
35.使所述本地哈希树与所述云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比;
36.若最上层的哈希值不同时,判断下一层级是否有子目录,且当下一层级有子目录时,则依次对比目录层级的下一层对应的子目录哈希值;且当子目录哈希值不同时,判断该子目录下是否有文件,且当存在文件时,递归进入对比该层级目录下所有文件的文件哈希值;
37.当所述本地哈希树的文件哈希值与所述云哈希树的文件哈希值不同时,且以所述本地哈希树的文件哈希值为基准,若该文件哈希值在云端无相同的哈希值,则记录所述本地哈希树的文件哈希值所对应的待发布程序文件的文件名,并汇总形成新增文件列表;
38.当所述本地哈希树的文件哈希值与所述云哈希树的文件哈希值不同时,且以所述
云哈希树的文件哈希值为基准,若该文件哈希值在本地无相同的哈希值,则记录所述云哈希树的文件哈希值所对应的文件名,并汇总形成删除文件列表。
39.本技术在一较佳示例中可以进一步配置为:使所述本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较的步骤包括:
40.使所述本地哈希树与所述云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比;
41.若目录名的哈希值不同,以及该目录下存在文件时,且该层级目录下的文件未被比较过,则记录该未被比较过的文件的文件名;
42.若目录名的哈希值相同时,判断下一层级是否有子目录,且当下一层级有子目录时,则依次对比目录层级的下一层对应的子目录哈希值;且当子目录哈希值不同时,判断该子目录下是否有文件,且当存在文件时,递归进入对比该层级目录下所有文件的文件哈希值,继续判断是否有新增文件或删除文件,以记录不同的文件哈希值所对应的待发布程序文件的文件名。
43.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:
44.若最上层的哈希值相同时,至少采用一种不同的hash算法分别计算所述本地哈希树与所述云哈希树的哈希值;
45.基于新计算的哈希值,再使所述本地哈希树与所述云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比;
46.若新计算的哈希值相同时,则默认所述本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树相同。
47.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:
48.基于所述新增文件列表,获取待发布程序文件中与所述新增文件列表对应的新增程序文件;
49.使所述新增程序文件覆盖待发布程序文件中的基础镜像内的程序文件。
50.第二方面,本技术提供一种程序文件的快速发布装置,具有提高程序文件发布效率的特点。
51.本技术是通过以下技术方案得以实现的:
52.一种程序文件的快速发布装置,包括:
53.分层哈希树模块,用于基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;
54.比较模块,用于使所述本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较,获得比较结果;
55.差异模块,用于根据所述比较结果生成文件对照表;
56.打包模块,用于基于所述文件对照表以小于所述待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互。
57.第三方面,本技术提供一种计算机设备,具有提高程序文件发布效率的特点。
58.本技术是通过以下技术方案得以实现的:
59.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种程序文件的快速
发布方法的步骤。
60.第四方面,本技术提供一种计算机可读存储介质,具有提高程序文件发布效率的特点。
61.本技术是通过以下技术方案得以实现的:
62.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述一种程序文件的快速发布方法的步骤。
63.第五方面,本技术提供一种计算机程序产品,具有提高程序文件发布效率的特点。
64.本技术是通过以下技术方案得以实现的:
65.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述一种程序文件的快速发布方法的步骤。
66.第六方面,本技术提供一种程序文件的快速发布方法,具有提高程序文件发布效率的特点。
67.本技术是通过以下技术方案得以实现的:
68.一种程序文件的快速发布方法,包括以下步骤:
69.获取来自本地的文件或文件对照表;
70.当接收到所述文件和所述文件对照表后,基于所述文件对照表,下载预设的文件并进行筛选删除,同时,使已完成删除的下载文件与接收到的文件进行组装,以生成完整程序;
71.当接收到所述文件和所述文件对照表后,基于所述文件对照表,下载预设的文件,同时,使已下载文件与接收到的文件进行组装,以生成完整程序;
72.当接收到所述文件对照表后,所述云端服务器基于所述文件对照表,下载预设的文件并进行筛选删除,使已完成删除的下载文件生成完整程序;
73.当接收到所述文件对照表后,所述云端服务器基于所述文件对照表,下载预设的文件,生成完整程序;
74.再根据所述完整程序,生成程序镜像,并使程序镜像加载至云端容器。
75.综上所述,本技术包括以下至少一种有益技术效果:
76.1、一种程序文件的快速发布方法基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;再使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较,获得比较结果,以快速定位到该不同的文件,避免文件数目太大时需要反复计算大量哈希值而耗时长的问题,提高了比较的性能;再根据比较结果生成文件对照表;打包上传待发布程序文件中与文件对照表对应的部分文件,同时上传文件对照表,即仅上传部分文件和文件对照表,或仅上传文件对照表,提升程序上传的性能,进而当程序文件本身比较大且需要反复地发布程序时能提高程序文件的发布效率;
77.2、在上传差异程序包时,用文件对照表的新增文件列表中记录的所有程序文件覆盖基础镜像内的程序文件,以作为待发布程序文件的完整程序包,进而在上传程序文件时只上传增量文件,提升了程序文件的上传性能;
78.3、使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比且比较结果为哈希值相同时,至少采用一种不同的hash算法分别
计算本地哈希树与云哈希树的哈希值,再次使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比,当最上层的哈希值相同时,才认为两个程序文件相同,否则就认为两个程序文件有差异,以解决hash冲突的问题。
附图说明
79.图1是本技术其中一实施例一种程序文件的快速发布方法的整体流程图。
80.图2是使本地哈希树与云哈希树进行比较的流程示意图。
81.图3是打包上传待发布程序文件中与文件对照表对应的部分文件的流程示意图。
82.图4是程序文件的发布流程图。
83.图5是本技术其中一实施例一种程序文件的快速发布装置的结构框图。
具体实施方式
84.本具体实施例仅仅是对本技术的解释,其并不是对本技术的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本技术的权利要求范围内都受到专利法的保护。
85.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
86.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
87.下面结合说明书附图对本技术实施例作进一步详细描述。
88.参照图1,本技术实施例提供一种程序文件的快速发布方法,所述方法的主要步骤描述如下。
89.s1:基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;
90.s2:使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较,获得比较结果;
91.s3:根据比较结果生成文件对照表;
92.s4:基于文件对照表,以小于待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互。
93.具体地,基于待发布程序的目录层级,按照深度优先进行一次遍历,从底层到上层依次生成哈希树,该哈希树即本地哈希树。
94.其中,从底层到上层依次生成本地哈希树的步骤包括:
95.采用hash算法计算底层各个文件的哈希值,将各个文件的内容通过hash算法计算得到,计算结果是一个固定长度的字符串且与对应的文件内容一一映射,以生成底层的哈希值;
96.再采用同样的hash算法,继续计算上层的目录所包含的子目录的哈希值,当子目
录下含有文件时,即指所有文件内容的哈希值,对上层的目录包含的所有文件或目录的hash再计算hash,得到对应的哈希值,即对目录包含的层级目录或所有文件计算的哈希值再计算hash得到,以生成上层的哈希值。具体地,按照目录本身的层级组织,计算一棵哈希树,其中,文件的hash是根据文件内容计算,每层目录的hash则是用已经计算出来的下层所有hash构成的数组再求哈希值计算得到的,且数组是有顺序的,本实施例中,可以按照字母顺序对数组内的元素进行排序。本实施例中,当遍历的目录内只有文件时,先计算每个文件的哈希值,并在遍历返回的过程中,使每个文件的哈希值构成数组,再对数组求哈希值,作为上层的目录所包含的层级目录的哈希值,最终生成分层的本地哈希树。例如,假设待发布程序的目录为a/x.txt、a/y.txt,先根据x.txt计算出文件x的哈希值,再根据y.txt计算出文件y的哈希值,最后计算上层的目录a的哈希值,即hash(hash-x,hash-y),对目录a下所包含所有文件形成的数组求哈希值。
97.最后,汇总底层的哈希值和上层的哈希值,以生成从底层到上层的本地哈希树。
98.例如,
99./a/b/x.txt
100./a/b/y.txt
101./a/c/z.txt
102.则生成hash树:a:hash_a=hash(hash_b,hash_c);
103.其中,b:hash_b=hash(hash_x,hash_y);
104.x.txt:hash_x=hash(x.txt);
105.y.txt:hash_y=hash(y.txt);
106.c:hash_c=hash(hash_z);
107.z.txt:hash_z=hash(z.txt)。
108.hash算法可以为md4算法、md5算法或sha-1算法。本实施例中,hash算法采用md5算法。
109.通过hash算法,比较两个文件计算得到的哈希值,哈希值不同即两个文件不同,因此,一旦文件被修改,就可被检测出来。
110.进一步地,参照图2,采用同样的hash算法,计算得到云端的包含基础镜像内所有程序文件生成的从底层到上层的云哈希树,在此不再赘述。
111.s2:使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较的步骤包括:
112.当本地哈希树和云哈希树的目录层级均为一层时,若哈希值相同时,则记录该哈希值所对应的待发布程序文件的文件名,汇总形成基础文件列表,用于在云端下载预设的文件;若哈希值不同时,且当本地哈希树的哈希值与云哈希树的哈希值不同时,且以本地哈希树的哈希值为基准,若该哈希值在云端无相同的哈希值,则记录本地哈希树的哈希值所对应的待发布程序文件的文件名,并汇总形成新增文件列表;而当本地哈希树的哈希值与云哈希树的哈希值不同时,且以云哈希树的哈希值为基准,若该哈希值在本地无相同的哈希值,则记录云哈希树的哈希值所对应的文件名,并汇总形成删除文件列表。
113.当本地哈希树和云哈希树的目录层级均为两层时,若最上层的哈希值相同时,则记录层级目录下所有文件的文件哈希值所对应的待发布程序文件的文件名,汇总形成基础
文件列表,用于在云端下载预设的文件;若最上层的哈希值不同时,即说明本地程序文件和云端程序文件存在差异,此时,依次对比该目录层级下的文件哈希值;且当本地哈希树的文件哈希值与云哈希树的文件哈希值不同时,且以本地哈希树的文件哈希值为基准,若该文件哈希值在云端无相同的哈希值,则记录本地哈希树的文件哈希值所对应的待发布程序文件的文件名,并汇总形成新增文件列表;而当本地哈希树的文件哈希值与云哈希树的文件哈希值不同时,且以云哈希树的文件哈希值为基准,若该文件哈希值在本地无相同的哈希值,则记录云哈希树的文件哈希值所对应的文件名,并汇总形成删除文件列表。
114.s21:当本地哈希树和云哈希树的目录层级有三层时,使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比;若最上层的哈希值相同时,则记录层级目录下所有文件的文件哈希值所对应的待发布程序文件的文件名;
115.若最上层的哈希值不同时,则依次对比目录层级的下一层对应的子目录哈希值;且当子目录哈希值不同时,递归进入对比该层级目录下所有文件的文件哈希值;
116.当本地哈希树的文件哈希值与云哈希树的文件哈希值不同时,且以本地哈希树的文件哈希值为基准,若该文件哈希值在云端无相同的哈希值,则记录本地哈希树的文件哈希值所对应的待发布程序文件的文件名,并汇总形成新增文件列表;
117.当本地哈希树的文件哈希值与云哈希树的文件哈希值不同时,且以云哈希树的文件哈希值为基准,若该文件哈希值在本地无相同的哈希值,则记录云哈希树的文件哈希值所对应的文件名,并汇总形成删除文件列表。
118.例如,假设本地目录下有x、y文件;云端有目录下x'、y’文件。
119.比较的时候,以本地为基准,用本地的x文件的哈希值分别跟云端的x'文件哈希值、y’文件哈希值进行比较;如果x'文件哈希值=x文件的哈希值,则使本地的x文件名汇总至基础文件列表;如果比较结果均为不同时,则说明x文件为新增文件,使本地的x文件名汇总至新增文件列表,同理再对本地的y文件进行比较。
120.以云端为基准,用云端的x'文件哈希值分别跟本地的x文件的哈希值、本地的y文件的哈希值比较,如果比较结果均不同时,则说明云端的x'文件要删除,使云端的x'文件名汇总至删除文件列表,同理再对云端的y'文件进行比较。
121.故对于两棵哈希树,从根节点向下层依次比较,如果上层的哈希值相同,则两棵哈希树完全相同,此时记录层级目录下所有文件的文件哈希值所对应的待发布程序文件的文件名,以作为基础文件列表,用于在云端下载预设的文件。
122.如果上层的哈希值不同,则分别判断所有子节点的哈希值,且如果有子节点的哈希值不同,则递归进入不同的子节点判断是否有新增文件或删除文件;且若本地的哈希值在云端找不到匹配的哈希值,则判断本地的哈希值所对应的文件为新增文件,如果云端的哈希值在本地找不到匹配的哈希值,则判断云端的哈希值所对应的文件为删减文件。
123.当本地哈希树和云哈希树的目录层级大于三层时,使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比,具体可类推上述的本地哈希树与云哈希树的比较方式,在此不再赘述。
124.本技术的哈希树比较采用分层比较哈希,按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比,解决了文件数目太大时需要计算大量哈希的问题,
提高了比较的性能。
125.进一步地,使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较的步骤还可以为:s221:若目录名的哈希值不同,以及该目录下存在文件时,且该层级目录下的文件未被比较过,则记录该未被比较过的文件的文件名。
126.因哈希值是字符串,如果每个字符串相同,则哈希值相同,否则,哈希值不同,即对比的本地哈希树和云哈希树不存在相同的目录,且当该层级目录下的文件未被比较过,此时记录该未被比较过的文件的文件名。
127.s2222:若目录名的哈希值相同时,判断下一层级是否有子目录,且当下一层级有子目录时,则依次对比目录层级的下一层对应的子目录哈希值;
128.s2223:当子目录哈希值不同时,判断该子目录下是否有文件,且当存在文件时,递归进入对比该层级目录下所有文件的文件哈希值,并继续判断是否有新增文件或删除文件,以记录不同的文件哈希值所对应的待发布程序文件的文件名。
129.即如果目录名的哈希值相同,即对比的本地哈希树和云哈希树存在相同的目录,此时,依次对比目录层级的下一层对应的哈希值,若哈希值不同,则该最上层级下至少有一个文件与云端的包含基础镜像内所有程序文件不同,故记录不同的哈希值所对应的待发布程序文件的文件名,以找到对应的子目录下的不同文件。
130.通过分层的哈希树,按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比,进而当发现上层的哈希值有不同时,即可快速定位到该不同的文件,解决了文件数目太大时需要反复计算大量哈希值而耗时长的问题,提高了比较的性能。
131.进一步地,s3:根据比较结果生成文件对照表的步骤包括:
132.使记录的该未被比较过的文件的文件名汇总,形成删除文件列表;
133.使记录的不同的哈希值所对应的待发布程序文件的文件名汇总,形成新增文件列表。
134.文件对照表包括基础信息、新增文件列表或删除文件列表。
135.基础信息用于记录比较的程序文件和日期。
136.新增文件列表用于记录待发布程序文件相对云端已上传程序文件的增加文件的文件名。
137.删除文件列表用于记录待发布程序文件与云端已上传程序文件的相同文件的文件名。
138.其中,新增文件列表是相对云端已经上传的程序文件所增加文件的文件名的集合,在比较哈希树的上层目录哈希值相同时,则代表存在该目录,进一步比较该目录下的文件哈希值是否相同,不同则记录该文件名得到。
139.删除文件列表是相对云端已经上传的程序文件所删除的文件的文件名的集合,在比较哈希树上层目录哈希值不同时,则代表不存在该目录,且该目录下的文件没有被比较过时,记录该文件名得到。
140.例如,文件对照表可以是一个yaml文件,包括以下内容:
141.base:2022-01-01.zip
142.delete:
[0143]-a/b.so
[0144]-c/d.so
[0145]
add:
[0146]-e/f.so。
[0147]
进一步地,参照图3,当待发布程序文件相比云端的包含基础镜像内所有程序文件有新增时,打包上传待发布程序文件中与文件对照表对应的部分文件的步骤包括:
[0148]
s41:基于新增文件列表,获取待发布程序文件中与新增文件列表对应的新增程序文件;
[0149]
s42:使新增程序文件覆盖待发布程序文件中的基础镜像内的程序文件;
[0150]
s43:使打包的待发布程序文件中与文件对照表对应的部分文件上传。
[0151]
即本地服务器在上传差异程序包时,用文件对照表的新增文件列表中记录的所有程序文件覆盖基础镜像内的程序文件,故在上传程序文件时只上传增量文件,提升了程序文件的上传性能。
[0152]
参照图4,本实施例中,待发布的程序文件在本地服务器的开发端上开发,并编译生成分层的本地哈希树,再与云端分层的云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比,进而根据对比结果生成文件对照表,以基于文件对照表,以小于待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互。
[0153]
具体地,当待发布程序文件相比云端的包含基础镜像内所有程序文件有新增时,打包上传待发布程序文件中与文件对照表对应的部分文件,同时上传文件对照表;当待发布程序文件相比云端的包含基础镜像内所有程序文件无新增时,仅上传文件对照表。
[0154]
云端服务器接收待发布程序文件中对应的文件或文件对照表。
[0155]
当接收到文件和文件对照表后,基于文件对照表,下载预设的文件并进行筛选删除,同时,使已完成删除的下载文件与接收到的文件进行组装,以生成完整程序;
[0156]
当接收到文件和文件对照表后,基于文件对照表,下载预设的文件,同时,使已下载文件与接收到的文件进行组装,以生成完整程序;
[0157]
当接收到文件对照表后,云端服务器基于文件对照表,下载预设的文件并进行筛选删除,使已完成删除的下载文件生成完整程序;
[0158]
当接收到文件对照表后,云端服务器基于文件对照表,下载预设的文件,生成完整程序。
[0159]
其中,预设的文件为所有程序文件的通用基础文件包,通过预设的指令,在生成完成程序前按指令执行,下载预设的文件即可得到。
[0160]
再基于完整程序,生成程序镜像,并使程序镜像加载至云端容器进行独立运行。同时,在云端服务器使用单独的build服务。
[0161]
云端容器运行并下载程序镜像,再启动程序运行,以完成待发布程序文件的发布。
[0162]
进一步地,参照图2,还包括以下步骤:
[0163]
s222:若上层的哈希值相同时,至少采用一种不同的hash算法分别计算本地哈希树与云哈希树的哈希值;
[0164]
s2221:基于新计算的哈希值,再使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比;
[0165]
s2222:若新计算的哈希值相同时,则默认本地哈希树与云端的包含基础镜像内所
有程序文件生成从底层到上层的云哈希树相同;
[0166]
s2223:当新计算的哈希值不同时,递归进入对比该层级目录下所有文件的新计算的哈希值,继续判断是否有新增文件或删除文件,以记录不同的哈希值所对应的待发布程序文件的文件名。
[0167]
具体地,为了解决分层的哈希树在比较过程中遇到hash冲突而导致比较结果不准确的问题,当基于md5算法,使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比且比较结果为哈希值相同时,至少采用一种不同的hash算法分别计算本地哈希树与云哈希树的哈希值,并使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比。
[0168]
本实施例中,不同的hash算法可以为sha-1算法。例如,先用md5算法分别计算比较两棵哈希树,如果最上层的哈希值不同,就认为两个目录有不同的文件。如果最上层的哈希值相同,则再用sha-1算法分别计算比较两棵哈希树。当最上层的哈希值相同时,才认为两个程序文件相同,否则就认为两个程序文件内有不同的文件,以解决hash冲突的问题。
[0169]
故一种程序文件的快速发布方法基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;再使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较,获得比较结果;根据比较结果生成文件对照表;打包上传待发布程序文件中与文件对照表对应的部分文件,同时上传文件对照表,进而在上传程序文件时只上传增量文件,提升了程序上传的性能,提升了当程序文件本身比较大且需要反复地发布程序时的发布效率,继而云端服务器能只下载增量文件,提升了程序下载的性能,并通过在镜像中使用完整程序和镜像在本地的缓存,提高了云端容器重复运行时的启动速度;解决了本地开发程序发布运行时因为程序文件本身太大占用大量带宽,上传时间长、在云端运行时启动时间长的问题。同时,在云端服务器使用单独的build服务,以避免每个容器单独下载构建程序,节省了资源。
[0170]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0171]
参照图5,本技术实施例还提供一种程序文件的快速发布装置,该一种程序文件的快速发布装置与上述实施例中一种程序文件的快速发布方法一一对应。该一种程序文件的快速发布装置包括:
[0172]
分层哈希树模块,用于基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;计算底层各个文件的哈希值,生成底层的哈希树;计算上层的目录所包含的子目录哈希值,以生成上层的哈希树;
[0173]
比较模块,用于使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较;使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比,以获得比较结果;
[0174]
差异模块,用于根据比较结果生成文件对照表;文件对照表包括用于记录待发布程序文件相对云端已上传程序文件的增加文件的文件名的新增文件列表和用于记录待发布程序文件与云端已上传程序文件的相同文件的文件名的删除文件列表;
[0175]
打包模块,用于基于文件对照表,以小于待发布程序文件的数据大小进行数据上
传,完成与云端服务器的交互。
[0176]
进一步地,一种程序文件的快速发布装置还包括:
[0177]
防冲突模块,用于在记录相同的哈希值所对应的待发布程序文件的文件名的步骤前,至少采用一种不同的hash算法分别计算本地哈希树与云哈希树的哈希值;基于新计算的哈希值,再使本地哈希树与云哈希树按从目录层级的最上层对应的哈希值依次向下层对应的哈希值进行一一对比;若新计算的哈希值相同时,则默认本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树相同;若新计算的哈希值不同,则依次对比目录层级的下一层对应的新计算的哈希值;当新计算的哈希值不同时,递归进入对比该层级目录下所有文件的新计算的哈希值,继续判断是否有新增文件或删除文件,以记录不同的哈希值所对应的待发布程序文件的文件名。
[0178]
关于一种程序文件的快速发布装置的具体限定可以参见上文中对于一种程序文件的快速发布方法的限定,在此不再赘述。上述一种程序文件的快速发布装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0179]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种程序文件的快速发布方法。
[0180]
在一个实施例中,提供了一种计算机可读存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0181]
s1:基于待发布程序文件的目录层级,按照深度方向进行遍历,依次生成从底层到上层的本地哈希树;
[0182]
s2:使本地哈希树与云端的包含基础镜像内所有程序文件生成从底层到上层的云哈希树进行比较,获得比较结果;
[0183]
s3:根据比较结果生成文件对照表;
[0184]
s4:基于文件对照表,以小于待发布程序文件的数据大小进行数据上传,完成与云端服务器的交互。
[0185]
在一个实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现一种程序文件的快速发布方法。
[0186]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括
随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0187]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献