专利名称:分布式系统的在线升级方法、分布式系统及设备的制作方法
技术领域:
本发明涉及分布式技术领域,特别涉及分布式系统的在线升级方法、分布式系统 及设备。
背景技术:
随着计算机技术的发展,计算机软件的在线升级已经成计算机软件不可或缺的部 分。软件的在线升级是提升软件的功能、稳定性以及易用性的一种良好的途径,也是不断满 足客户需求的一种途径。在分布式系统中,也需要进行软件的在线升级。目前,分布式系统的在线升级可以 分为两个阶段下载阶段和升级阶段;在下载阶段,作为客户端的分布式终端(此后简称为 客户端)从服务器下载新的软件版本,如图1所示,图1为现有分布式系统的软件下载方式 示意图,在图1中,各个客户端分别与服务器相连,从服务器下载软件;在升级阶段,各个客 户端采用下载的新的软件版本进行升级。由于分布式系统中存在大量客户端,所有的客户端都从同一个服务器下载软件版 本文件,这会对服务器和网络带宽造成极大压力;可见,现有分布式系统的在线升级方法对 服务器和网络带宽的负担较重。
发明内容
本发明提出一种分布式系统的在线升级方法,减轻对服务器和网络带宽的负担。本发明还提出一种分布式系统及相关设备,减轻分布式系统的在线升级过程对服 务器和网络带宽的负担。本发明的技术方案是这样实现的一种分布式系统的在线升级方法,包括服务器将软件版本文件分成多个软件块,生成所述软件版本文件的分块数据表, 所述分块数据表包含各个软件块对应的保存地址及下载端口 ;服务器将所述分块数据表发送至客户端;客户端根据所述分块数据表,从软件块对应的保存地址及下载端口下载该软件 块,上报自身的下载进度及供其它客户端下载的下载端口;服务器根据分布式系统中所有客户端上报的下载进度及下载端口,更新所述分块 数据表,向客户端发送更新后的分块数据表;客户端根据所述更新后的分块数据表,继续执行所述下载软件块的步骤;客户端将所述软件版本文件下载完毕之后,采用所述软件版本文件进行在线升 级。一种分布式系统,包括服务器和多个客户端,其中,所述服务器,用于将软件版本文件分成多个软件块,生成所述软件版本文件的分 块数据表,所述分块数据表包含各个软件块对应的保存地址及下载端口,将所述分块数据表发送至客户端;还用于根据分布式系统中所有客户端上报的下载进度及下载端口,更新 所述分块数据表,向客户端发送更新后的分块数据表;所述客户端,用于根据服务器发送的分块数据表,从软件块对应的保存地址及下 载端口下载该软件块,并上报自身的下载进度及供其它客户端下载的下载端口 ;还用于采 用所述软件版本文件进行在线升级。一种服务器,包括分块模块、分块数据表维护模块和下载控制模块;其中,分块模块,用于将软件版本文件分成多个软件块;分块数据表维护模块,用于生成软件版本文件的分块数据表,所述分块数据表包 含各个软件块对应的保存地址及下载端口 ;还用于根据分布式系统中所有客户端上报的下 载进度及下载端口,更新所述分块数据表;
下载控制模块,用于向客户端发送所述分块数据表,还用于向客户端发送更新后 的分块数据表。一种客户端,包括下载模块、通信模块和升级模块;其中,下载模块,用于根据服务器发送的分块数据表,从软件版本文件的软件块对应的 保存地址及下载端口下载该软件块;通信模块,用于向服务器上报所述客户端的下载进度及供其它客户端下载的下载 端□;升级模块,用于采用所述软件版本文件进行在线升级。综上可见,本发明提出的方案将软件版本文件分成多个软件块,服务器生成该软 件版本文件的分块数据表,记录各个软件块对应的保存地址及下载端口 ;客户端在服务器 的控制之下对软件版本文件进行分块下载,当客户端完成一个软件块的下载之后,该客户 端能够为其他的客户端提供该软件块的下载;客户端向服务器上报自身的下载进度及供其 他设备下载的下载端口,服务器实时更新分块数据表,并定期将更新后的分块数据表反馈 至客户端,客户端利用更新后的分块数据表下载软件块。通过这种方式,本发明能够将软件 的下载分担到各个客户端,从而减轻了对服务器和网络带宽的负担。
图1为现有分布式系统的软件下载方式示意图;图2为本发明分布式系统的软件下载方式示意图;图3为本发明实施例分布式系统的在线升级方法流程图;图4为本发明实施例服务器的结构示意图;图5为本发明实施例客户端的结构示意图。
具体实施例方式本发明提出一种分布式系统的在线升级方法,参见图2,图2为本发明分布式系统 的软件下载方式示意图,在图2中,分布式系统中的客户端及服务器两两相连,服务器控制 客户端的软件下载及软件升级。服务器将软件版本文件在逻辑上划分为多个软件块,客户 端能够从服务器及已经完成下载的其它客户端下载软件块。通过这种方式,将下载压力由 原来的服务器转移到网络中所有的客户端上,从而减轻服务器的负担。
以下举具体的实施例详细说明。参见图3,图3为本发明实施例分布式系统的在线 升级方法流程。具体包括以下步骤步骤301 管理人员向服务器上传软件版本文件,服务器校验该软件版本文件,生 成整个文件hash校验码,刷新数据库中的版本关系表,用于记录该软件版本文件的相关信 息;该版本关系包括服务器的设备型号、版本号、整个软件版本文件的hash校验码、兼容 的版本号等。步骤302 服务器对软件版本文件进行分析,将软件版本文件按照一定的大小(一 般为2的η次幂,根据软件版本文件的大小,分块的大小可以调整)在逻辑上进行分块,形 成多个软件块(此处所述的“分块”并不是指在物理上将软件版本文件划分成多个独立的 软件块,而是指在逻辑上对软件版本文件进行虚拟划分,形成多个软件块),生成该软件版 本文件的分块数据表,所述分块数据表可以包含该软件版本文件的各个软件块对应的保存 地址及下载端口 ;还可以包含各个软件块的hash校验码,用于客户端下载完毕之后对软件 块的校验。如下表1,表1为本发明实施例生成的分块数据表。
权利要求
1.一种分布式系统的在线升级方法,其特征在于,所述方法包括服务器将软件版本文件分成多个软件块,生成所述软件版本文件的分块数据表,所述 分块数据表包含各个软件块对应的保存地址及下载端口;服务器将所述分块数据表发送至客户端;客户端根据所述分块数据表,从软件块对应的保存地址及下载端口下载该软件块,上 报自身的下载进度及供其它客户端下载的下载端口;服务器根据分布式系统中所有客户端上报的下载进度及下载端口,更新所述分块数据 表,向客户端发送更新后的分块数据表;客户端根据所述更新后的分块数据表,继续执行所述下载软件块的步骤;客户端将所述软件版本文件下载完毕之后,采用所述软件版本文件进行在线升级。
2.根据权利要求1所述的方法,其特征在于,所述客户端上报自身的下载进度及供其 它客户端下载的下载端口的方式为按照服务器预先发送给客户端的上报条件、或者用户预先设置的上报条件进行上报。
3.根据权利要求2所述的方法,其特征在于,所述上报条件为固定周期或该客户端下 载完毕的软件块个数。
4.根据权利要求1或2所述的方法,其特征在于,所述服务器根据分布式系统中所有客 户端上报的下载进度及下载端口,更新所述分块数据表为当客户端上报的下载进度表示已下载完毕一个软件块时,将所述客户端的地址添加到 分块数据表中所述软件块对应的保存地址,服务器将所述客户端上报的下载端口添加到所 述软件块对应的下载端口。
5.根据权利要求1或2所述的方法,其特征在于,所述客户端根据分块数据表,从软件 块对应的保存地址及下载端口下载该软件块的方式为客户端随机选择所述分块数据表中自身尚未下载的软件块,向该软件块的保存地址依 次发起连接请求,如果连接成功,则从该连接成功的保存地址及下载端口下载该软件块;如 果连接不成功,则继续选择其它软件块进行下载。
6.一种分布式系统,包括服务器和多个客户端,其特征在于,所述服务器,用于将软件版本文件分成多个软件块,生成所述软件版本文件的分块数 据表,所述分块数据表包含各个软件块对应的保存地址及下载端口,将所述分块数据表发 送至客户端;还用于根据分布式系统中所有客户端上报的下载进度及下载端口,更新所述 分块数据表,向客户端发送更新后的分块数据表;所述客户端,用于根据服务器发送的分块数据表,从软件块对应的保存地址及下载端 口下载该软件块,并上报自身的下载进度及供其它客户端下载的下载端口 ;还用于采用所 述软件版本文件进行在线升级。
7.一种服务器,其特征在于,所述服务器包括分块模块、分块数据表维护模块和下载 控制模块;其中,所述分块模块,用于将软件版本文件分成多个软件块;所述分块数据表维护模块,用于生成软件版本文件的分块数据表,所述分块数据表包 含各个软件块对应的保存地址及下载端口 ;还用于根据分布式系统中所有客户端上报的下 载进度及下载端口,更新所述分块数据表;所述下载控制模块,用于向客户端发送所述分块数据表,还用于向客户端发送更新后 的分块数据表。
8.根据权利要求7所述的服务器,其特征在于,所述分块数据表维护模块,用于当接收 到客户端上报的下载进度表示已下载完毕一个软件块时,将所述客户端的地址添加到分块 数据表中所述软件块对应的保存地址,将所述客户端上报的下载端口添加到所述软件块对 应的下载端口。
9.一种客户端,其特征在于,所述客户端包括下载模块、通信模块和升级模块;其中,所述下载模块,用于根据服务器发送的分块数据表,从软件版本文件的软件块对应的保存地址及下载端口下载该软件块;所述通信模块,用于向服务器上报所述客户端的下载进度及供其它客户端下载的下载 端□;所述升级模块,用于采用所述软件版本文件进行在线升级。
10.根据权利要求9所述的客户端,其特征在于,所述通信模块包括上报条件保存子 模块、判断子模块和上报子模块;所述上报条件保存子模块,用于保存上报条件,所述上报条件为固定周期或所述客户 端下载完毕的软件块个数;所述判断子模块,用于判断客户端是否满足所述上报条件,当满足时,指示所述上报子 模块进行上报;所述上报子模块,用于根据判断子模块的指示,向服务器上报所述客户端的下载进度 及供其它客户端下载的下载端口。
11.根据权利要求9或10所述的客户端,其特征在于,所述下载模块,用于随机选择所 述分块数据表中客户端尚未下载的软件块,向该软件块的保存地址依次发起连接请求,如 果连接成功,则从该连接成功的保存地址及下载端口下载该软件块;如果连接不成功,则继 续选择其它软件块进行下载。
全文摘要
本发明提出一种分布式系统的在线升级方法、分布式系统及装置,其中方法包括服务器将软件版本文件分成多个软件块,生成所述软件版本文件的分块数据表,将所述分块数据表发送至客户端;客户端根据所述分块数据表,从软件块对应的保存地址及下载端口下载该软件块,上报自身的下载进度及供其它客户端下载的下载端口;服务器根据分布式系统中所有客户端上报的下载进度及下载端口,更新所述分块数据表,向客户端发送更新后的分块数据表;客户端根据所述更新后的分块数据表,继续执行所述下载软件块的步骤;客户端将所述软件版本文件下载完毕之后,采用所述软件版本文件进行在线升级。本发明能够减轻对服务器和网络带宽的负担。
文档编号G06F9/445GK102055785SQ20091023727
公开日2011年5月11日 申请日期2009年11月9日 优先权日2009年11月9日
发明者刘业梅, 陈燕兵 申请人:杭州华三通信技术有限公司