一种程序包增量更新发布的方法与系统技术方案

技术编号:11094563 阅读:106 留言:0更新日期:2015-02-27 14:36
本发明专利技术涉及一种程序包增量更新发布的方法与系统,所述方法包括步骤101:客户端请求返回指纹清单文件,请求时会带上程序包的路径和文件名;步骤102:服务端计算程序包的文件指纹,并生成指纹清单格式文件;步骤103:客户端处理指纹清单文件,下载本地文件指纹仓库中不存在的文件;步骤104:客户端对于本地指纹仓库不存在的文件,构建索引信息;步骤105:客户端根据指纹清单重组完整程序包;步骤106:客户端根据指纹清单检验文件完整性。利用该方法的系统程序包只会传输一次,有效地提高了效率;实时计算程序包指纹,充分利用了CPU多核计算能力;检验机制确保了程序包的正确性并有效防止了被修改。

【技术实现步骤摘要】
一种程序包增量更新发布的方法与系统
本专利技术涉及软件开发领域,尤其涉及一种程序包增量更新发布的方法的系统。
技术介绍
随着互联网应用的飞速发展和快速迭代开发思想在企业中应用,软件特别是WEBApp (WEB Applicat1n,以web为核心的网站类应用)的发布周期越来越短,有的甚至一个星期发布3次。每次软件包的构建和发布成为了一个系统工程,涉及到构建发布和生产运维的多个环节。而企业的生产环境往往在IDC机房,与办公网和开发环境之间使用专线连接,建设虚拟专用网络(Virtual Private Network,简称VPN)指的是在公用网络上建立专用网络的技术,进行运维和程序升级。为节约成本,这根专线带宽资源有限,往往只有100k/s左右的速度。而一种完整的软件包往往在20M?30M,传输完一个程序包每次都需要好几分钟,在需要发布很多软件包的时候,带宽资源严重影响了整个发布环境的效率,发布只能串行,无法并行。 从技术上分析,目前java类的应用,一个完整的软件包除了企业自主研发的程序文件外,往往包含了很多第三方的软件包,这些第三方的软件包以静态文件的形式存在,往往版本相对固定,更新频率不高。这为程序包增量更新提供了的前提基础。而如何识别一个完整的构建软件包里哪些文件有更新,这些文件才是需要增量传输的,这成为一个技术问题。同时对目标方如何组织还原这个完整的软件包和文件完整性检验,也是需要解决的另一个问题。
技术实现思路
本专利技术的目的在于,提供一种程序包增量更新发布的方法与系统,以解决现有技术中一个程序包需要整包传输、多次分发要多次传输而造成的时间很长问题,程序包需要整包传输的问题以及低速网络不稳定等导致文件不一致性问题。 根据上述问题,本专利技术提供一种程序包增量更新发布的方法,其包括以下步骤: I远程解压缩程序包,生成程序包目录结构和文件列表清单以及每个文件的指纹;II构建本地文件指纹信息库;III确定需要增量更新的文件;IV将需要增量更新的文件传输到本地;V把所述文件的指纹增加到所述指纹信息库,并保存文件到本地的缓存仓库中;VI对于本地文件指纹信息库中存在的文件,直接从本地的缓存仓库中取出文件,按程序包的目录层次结构重新组合程序包;νπ对所述重新组合的程序包进行一次文件完整性检查,确认目标文件和原始文件一致。 优选的是,所述确定需要增量更新的文件的方法是,对程序包里的每一个文件的指纹与本地指纹信息库比对,如果本地指纹信息库没有,说明这是一个需要增量的文件。在上述任一方案中优选的是,所述完整性检查的方法是重新根据指纹算法计算一次指纹。在上述任一方案中优选的是,所述指纹算法为shal算法,所述指纹为shal算法得到的序列。 本专利技术还提供一种程序包增量更新发布的系统,包括文件指纹模块、文件传输模块、文件检验模块、程序包合成模块、文件仓库模块。程序包所在的那一段称为服务端,所述文件指纹模块位于所述服务端,包括指纹计算单元和HTTP服务单元。需要下载程序包的一端称为客户端,所述文件传输模块、文件检验模块、程序包合成模块、文件仓库模块位于客户端,所述文件仓库模块包括物理文件库单元和文件指纹库单元。 优选的是,所述客户端发起文件下载,检验文件,合成最后的程序包,以及保存文件的指纹信息和存放文件到物理文件库单元中。 在上述任一方案中优选的是,所述文件指纹库单元使用关系型数据库做数据存储,该单元对外部提供两个接口,接口 1为根据查询指纹参数,返回指纹库中是否存在,接口 2为插入和创建一条文件指纹记录。 在上述任一方案中优选的是,所述客户端给所述服务端发起一个文件指纹信息请求。在上述任一方案中优选的是,所述服务端收到请求后,判断文件类型,使用相应类型的标准解压缩算法解开程序到工作目录。 在上述任一方案中优选的是,根据工作目录下的所有目录和文件,生成程序包的指纹清单。 在上述任一方案中优选的是,所述指纹清单包括程序包指纹、程序包大小和程序包内所有文件和目录的清单;所述程序包内所有文件和目录的清单中包含多个文件项,所述文件项包括文件名、文件大小、是否为目录项、文件的指纹。 在上述任一方案中优选的是,所述指纹清单通过所述HTTP服务单元返回给所述客户端。 在上述任一方案中优选的是,所述客户端接收到所述指纹清单后,对所述文件项进行循环处理。在上述任一方案中优选的是,所述循环处理为:(1)从所述文件项取出文件指纹,调用文件指纹库单元接口1 ;(2)如果(1)中结果为不存在,从所述文件项中提取文件名,向所述服务端发起下载请求,请求下载所述文件名对应的文件;(3)文件传输模块从服务端下载到所述文件,并放入到物理文件库单元中;(4)文件检验模块对所述文件进行一次shal摘要计算,得到这个文件的指纹,和指纹清单中该文件指纹进行对比,不一致则重新下载该文件;(5)如果(4)中对比结果为一致,则调用文件指纹库接口2 ;(6)如果(1)中检索结果为存在,再根据文件指纹检查物理文件库单元中是否存在真实的物理文件,如存在则继续循环处理,如果不存在则进行(2)。 在上述任一方案中优选的是,所述客户端完成所述循环处理后,程序包合成模块根据所述指纹清单合成完整的程序包。 在上述任一方案中优选的是,所述客户端检验所述程序包的正确性。 在上述任一方案中优选的是,所述检验方法是,根据从所述服务端下载的指纹清单,对比程序包中的目录及相应的文件以及文件指纹和文件大小,如有任何不同,则记录相关息,检验失败。 在上述任一方案中优选的是,如没有任何检验失败,则发布成功。 在上述任一方案中优选的是,如有检验失败,则应人工查看失败的日志信息,并重新发布一次或查找具体原因。 与现有技术相比,本专利技术具有以下几个优点:1.文件指纹库和物理文件库的设计,程序包里的文件只会传输一次,下载完成后即进入缓存库。这个程序包多次发布时,不需要再下载这个文件。而是直接从物理文件库中直接组合出程序包,继续分发到服务器上。最终节省的软件程序包同时发布到集群服务器的整体上线的时间,特别在低速网络带宽环境下,能极大提升发布效率。 2.计算需要下载的文件增量的方法不需要服务端和客户端保存多个版本的文件信息,也不需要计算两个版本之间的差异,这种结构减化了系统结构和降低实施的技术难度。而是实时计算出程序包的文件指纹,充分利用了 CPU的多核计算能力。 3.提供一种程序包一致性检验的机制,能确保程序包在分发到服务器后无丢失和完全一致性,确保了生产环境软件包的一致性和正确性。 【附图说明】 图1为本专利技术的程序包增量更新发布方法的流程图。 图2为本专利技术的程序包增量更新发布系统的结构图示意图。 【具体实施方式】 为了更好地理解本专利技术,下面结合具体实施例对本专利技术作了详细说明。但是,显然可对本专利技术进行不同的变型和改型而不超出后附权利要求限定的本专利技术更宽的精神和范围。因此,以下实施例具有例示性的而没有限制的含义。 如图2所示,本申请的系统包括客户端202和服务端201,其中程序包所在的那一端本文中称为服务端,需要下载程序的一端本文称作客户端。文件指纹模块2011在服务端,文件指纹模块包括指纹计算单元20111和HTTP服务单元2本文档来自技高网...

【技术保护点】
一种程序包增量更新的方法,依次包括以下步骤:Ⅰ.远程解压缩程序包,生成程序包目录结构和文件列表清单以及每个文件的指纹;Ⅱ. 构建本地文件指纹信息库;Ⅲ. 确定需要增量更新的文件;Ⅳ. 将需要增量更新的文件传输到本地;Ⅴ. 把所述文件的指纹增加到所述指纹信息库,并保存文件到本地的缓存仓库中;Ⅵ. 对于本地文件指纹信息库中存在的文件,直接从本地的缓存仓库中取出文件,按程序包的目录层次结构重新组合程序包;Ⅶ. 对所述重新组合的程序包进行一次文件完整性检查,确认目标文件和原始文件一致。

【技术特征摘要】
1.一种程序包增量更新的方法,依次包括以下步骤: 1.远程解压缩程序包,生成程序包目录结构和文件列表清单以及每个文件的指纹; I1.构建本地文件指纹信息库; II1.确定需要增量更新的文件; IV.将需要增量更新的文件传输到本地; V.把所述文件的指纹增加到所述指纹信息库,并保存文件到本地的缓存仓库中; V1.对于本地文件指纹信息库中存在的文件,直接从本地的缓存仓库中取出文件,按程序包的目录层次结构重新组合程序包; νπ.对所述重新组合的程序包进行一次文件完整性检查,确认目标文件和原始文件一致。2.根据权利要求1所述的程序包增量更新的方法,其特征在于:在所述步骤III中,所述确定需要增量更新的文件的方法包括,对程序包里的每一个文件的指纹与本地指纹信息库比对,如果本地指纹信息库没有,说明这是一个需要增量的文件。3.根据权利要求2所述的程序包增量更新的方法,其特征在于:在所述步骤ΥΠ中,所述文件完整性检查的方法包括重新根据指纹算法计算一次指纹。4.根据权利要求3所述的程序包增量更新的方法,其特征在于:所述指纹算法包括shal算法,所述指纹为shal算法得到的序列。5.一种程序包增量更新发布的系统,具有文件传输模块,其特征在于:还包括文件...

【专利技术属性】
技术研发人员:孙宝明
申请(专利权)人:世纪禾光科技发展北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1