CN108173888A - 一种分布式系统的软件升级方法、装置及系统 - Google Patents

一种分布式系统的软件升级方法、装置及系统 Download PDF

Info

Publication number
CN108173888A
CN108173888A CN201611108993.XA CN201611108993A CN108173888A CN 108173888 A CN108173888 A CN 108173888A CN 201611108993 A CN201611108993 A CN 201611108993A CN 108173888 A CN108173888 A CN 108173888A
Authority
CN
China
Prior art keywords
file
upgraded
software
installation
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201611108993.XA
Other languages
English (en)
Inventor
王志杰
周明耀
浦世亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201611108993.XA priority Critical patent/CN108173888A/zh
Publication of CN108173888A publication Critical patent/CN108173888A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种分布式系统的软件升级方法、装置及系统,该方法包括:客户端接收服务器发送的针对待升级软件的升级通知;客户端从服务器下载第一摘要文件,第一摘要文件包括:服务器中存储的、待升级软件的各个安装文件的文件信息;客户端根据第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件,第二摘要文件包括:客户端中存储的、所述待升级软件的各个安装文件的文件信息;客户端从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件。应用本发明实施例,提高了软件升级速度,节省了网络流量。

Description

一种分布式系统的软件升级方法、装置及系统
技术领域
本发明涉及通信技术领域,特别涉及一种分布式系统的软件升级方法、装置及系统。
背景技术
分布式系统是建立在网络之上的软件系统,分布式系统包括:服务器和客户端;其中,服务器上存储有各个软件,并且各个软件按照实际存储目录结构对应的路径存储;客户端上运行了存储在服务器上的软件。
目前,分布式系统的软件升级方法为:服务器需要根据待升级软件的安装信息,确定运行该待升级软件的客户端;然后,将该待升级软件的所有安装文件发送给该客户端,进而对该待升级软件进行升级。
一般地,一个软件需要升级时,往往是该软件中的部分安装文件需要升级。这种情况下,若将待升级软件的所有安装文件发送给客户端,将会花费较多的时间用于传输待升级软件的、不需要升级的安装文件,降低了软件升级速度,并且浪费网络流量。
发明内容
本发明实施例公开了一种分布式系统的软件升级方法、装置及系统,以提高软件升级速度,节省网络流量。
为达到上述目的,本发明实施例公开了一种分布式系统的软件升级方法,应用于客户端,所述方法包括:
接收服务器发送的针对待升级软件的升级通知;
从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件;所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件。
可选的,所述接收服务器发送的针对待升级软件的升级通知的步骤,包括:
向所述服务器发送针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
接收所述服务器在所述第一摘要文件的第一标识和所述第二标识不同的情况下发送的升级通知,所述第一摘要文件为所述服务器根据所述待升级软件的标识确定的。
可选的,所述第一标识为所述第一摘要文件的第一数字摘要值;所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名和安装文件的第三数字摘要值;
所述根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件的步骤,包括:
比较所述第一摘要文件和第二摘要文件;
将所述第一摘要文件和所述第二摘要文件中文件名相同、但第三数字摘要值不同的安装文件,确定为第一安装文件;和/或
将所述第一摘要文件中包括的、但所述第二摘要文件中不包括的文件名对应的安装文件,确定为第二安装文件;
其中,所述第一安装文件与所述第二安装文件为待升级安装文件。
可选的,所述安装文件的文件信息还包括:安装文件的存储路径;
所述从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件的步骤,包括:
从所述服务器下载所述第一安装文件,按照所述第一摘要文件中包括的所述第一安装文件的存储路径,替换本地原存储的、所述第一安装文件对应的安装文件;和/或
从所述服务器下载所示第二安装文件,按照所述第一摘要文件中包括的所述第二安装文件的存储路径,存储所述第二安装文件。
可选的,在所述向服务器发送针对待升级软件升级请求的步骤之前,所述方法还包括:
遍历所述待升级软件的安装文件的存储路径,确定所述待升级软件的所有安装文件;
计算所述待升级软件的每一安装文件的第三数字摘要值;
将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第二摘要文件中;
将所述第二摘要文件与所述待升级软件的标识对应存储,并计算所述第二摘要文件的第二数字摘要值。
可选的,所述从所述服务器下载第一摘要文件的步骤,包括:
从所述服务器下载第一摘要文件,并将所述第一摘要文件存储在临时文件中;
所述从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件的步骤,包括:
从所述服务器下载所述待升级安装文件,并将所述待升级安装文件存储在所述临时文件中;
基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件;
删除所述临时文件。
可选的,在所述基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件的步骤之后,在所述删除所述临时文件的步骤之前,所述方法还包括:
删除所述客户端中的冗余文件,所述冗余文件包括根据所述第一摘要文件的内容确定的、所述待升级软件中冗余的安装文件;和/或
用所述第一摘要文件的内容替换所述第二摘要文件的内容。
可选的,在使用所述待升级安装文件升级所述待升级软件的步骤之前,所述方法还包括:
关闭当前分布式系统中运行的所述待升级软件;
在所述使用所述待升级安装文件升级所述待升级软件的步骤之后,所述方法还包括:
启动所述待升级软件。
可选的,在所述使用所述待升级安装文件升级所述待升级软件的步骤之后,所述方法还包括:
向所述服务器发送针对所述待升级软件的升级完成通知。
为达到上述目的,本发明实施例还公开了一种分布式系统的软件升级方法,应用于服务器,所述方法包括:
向客户端发送针对待升级软件的升级通知;
接收所述客户端根据所述升级通知发送的针对所述待升级软件的下载请求;
将所述待升级软件的第一摘要文件发送给所述客户端;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;所述待升级安装文件为所述客户端根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息确定的,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
将所述待升级安装文件发送给所述客户端,以使所述客户端使用所述待升级安装文件升级所述待升级软件。
可选的,所述向客户端发送针对待升级软件的升级通知的步骤,包括:
接收所述客户端发送的针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
根据所述待升级软件的标识,确定本地存储的第一摘要文件,并获取所述第一摘要文件的第一标识;
比较所述第一标识和所述第二标识是否相同;
若不同,向所述客户端发送升级通知,所述升级通知包括:所述待升级软件的标识。
可选的,在所述接收所述客户端发送的针对所述待升级软件的升级请求的步骤之后,所述方法还包括:
判断本地升级队列是否已满,在确定本地升级队列未满时,继续执行所述根据所述待升级软件的标识,确定本地存储的第一摘要文件的第一标识的步骤;
所述向所述客户端发送升级通知的步骤,包括:
将所述待升级软件对应的升级任务加入本地升级队列,并向所述客户端发送升级通知。
可选的,在所述将所述待升级安装文件发送给所述客户端的步骤之后,所述方法还包括:
接收所述客户端发送的针对所述待升级软件的升级完成通知;
从本地升级队列中移除所述待升级软件对应的升级任务。
可选的,所述第一标识为所述第一摘要文件的第一数字摘要值,所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径;
在所述接收所述客户端发送的针对所述待升级软件的升级请求的步骤之前,所述方法还包括:
按照所述待升级软件的实际存储目录结构对应的存储路径,存储所述待升级软件的安装文件;
计算所述待升级软件的每一安装文件的第三数字摘要值;
将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第一摘要文件中;
将所述第一摘要文件与所述待升级软件的标识对应存储,并计算所述第一摘要文件的第一数字摘要值。
为达到上述目的,本发明实施例还公开了一种分布式系统的软件升级装置,应用于客户端,所述装置包括:
通知接收单元,用于接收服务器发送的针对待升级软件的升级通知;
文件下载单元,用于从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
文件确定单元,用于根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件;所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
文件升级单元,用于从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件。
可选的,所述通知接收单元,具体用于:
向所述服务器发送针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
接收所述服务器在所述第一摘要文件的第一标识和所述第二标识不同的情况下发送的升级通知,所述第一摘要文件为所述服务器根据所述待升级软件的标识确定的。
可选的,所述第一标识为所述第一摘要文件的第一数字摘要值;所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名和安装文件的第三数字摘要值;
所述文件确定单元,具体用于:
比较所述第一摘要文件和第二摘要文件;
将所述第一摘要文件和所述第二摘要文件中文件名相同、但第三数字摘要值不同的安装文件,确定为第一安装文件;和/或
将所述第一摘要文件中包括的、但所述第二摘要文件中不包括的文件名对应的安装文件,确定为第二安装文件;
其中,所述第一安装文件与所述第二安装文件为待升级安装文件。
可选的,所述安装文件的文件信息还包括:安装文件的存储路径;
所述文件升级单元,具体用于:
从所述服务器下载所述第一安装文件和所述第二安装文件;
从所述服务器下载所述第一安装文件,按照所述第一摘要文件中包括的所述第一安装文件的存储路径,替换本地原存储的、所述第一安装文件对应的安装文件;和/或
从所述服务器下载所述第二安装文件,按照所述第一摘要文件中包括的所述第二安装文件的存储路径,存储所述第二安装文件。
可选的,所述装置还包括:
路径遍历单元,用于在向服务器发送针对待升级软件升级请求之前,遍历所述待升级软件的安装文件的存储路径,确定所述待升级软件的所有安装文件;
摘要值计算单元,用于计算所述待升级软件的每一安装文件的第三数字摘要值;
第一文件存储单元,用于将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第二摘要文件中;
第二文件存储单元,用于将所述第二摘要文件与所述待升级软件的标识对应存储,并计算所述第二摘要文件的第二数字摘要值。
可选的,所述文件下载单元,具体用于:
从所述服务器下载第一摘要文件,并将所述第一摘要文件存储在临时文件中;
所述文件升级单元,具体用于:
从所述服务器下载所述待升级安装文件,并将所述待升级安装文件存储在所述临时文件中;基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件;
所述装置还包括:
文件变更单元,用于在基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件之后,删除所述临时文件。
可选的,所述文件变更单元,还用于在基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件之后,在删除所述临时文件之前,删除所述客户端中的冗余文件,所述冗余文件包括根据所述第一摘要文件的内容确定的、所述待升级软件中冗余的安装文件;和/或用所述第一摘要文件的内容替换所述第二摘要文件的内容。
可选的,所述装置还包括:
软件关闭单元,用于在使用所述待升级安装文件升级所述待升级软件之前,关闭当前分布式系统中运行的所述待升级软件;
软件启动单元,用于在使用所述待升级安装文件升级所述待升级软件之后,启动所述待升级软件。
可选的,所述装置还包括:
通知发送单元,用于在使用所述待升级安装文件升级所述待升级软件之后,向所述服务器发送针对所述待升级软件的升级完成通知。
为达到上述目的,本发明实施例还公开了一种分布式系统的软件升级装置,应用于服务器,所述装置包括:
通知发送单元,用于向客户端发送针对待升级软件的升级通知;
第一请求接收单元,用于接收客户端根据所述升级通知发送的针对所述待升级软件的下载请求;
第一文件发送单元,用于将所述待升级软件的第一摘要文件发送给所述客户端;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
第二请求接收单元,用于接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;所述待升级安装文件为所述客户端根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息确定的,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
第二文件发送单元,用于将所述待升级安装文件发送给所述客户端,以使所述客户端使用所述待升级安装文件升级所述待升级软件。
可选的,所述通知发送单元,具体用于
接收所述客户端发送的针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
根据所述待升级软件的标识,确定本地存储的第一摘要文件,并获取所述第一摘要文件的第一标识;
比较所述第一标识和所述第二标识是否相同;
若不同,向所述客户端发送升级通知,所述升级通知包括:所述待升级软件的标识。
可选的,所述装置还包括:
队列判断单元,用于在接收所述客户端发送的针对所述待升级软件的升级请求之后,判断本地升级队列是否已满;
所述通知发送单元,具体用于:
在所述队列判断单元的判断结果为否的情况下,根据所述待升级软件的标识,确定本地存储的第一摘要文件的第一标识,并获取所述第一摘要文件的第一标识;比较所述第一标识和所述第二标识是否相同;若不同,将所述待升级软件对应的升级任务加入本地升级队列,并向所述客户端发送针升级通知。
可选的,所述装置还包括:
通知接收单元,用于在将所述待升级安装文件发送给所述客户端之后,接收所述客户端发送的针对所述待升级软件的升级完成通知;从本地升级队列中移除所述待升级软件对应的升级任务。
可选的,所述第一标识为所述第一摘要文件的第一数字摘要值,所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径;
所述装置还包括:
第一文件存储单元,用于在接收所述客户端发送的针对所述待升级软件的升级请求之前,按照所述待升级软件的实际存储目录结构对应的存储路径,存储所述待升级软件的安装文件;
摘要值计算单元,用于计算所述待升级软件的每一安装文件的第三数字摘要值;
第二文件存储单元,用于将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第一摘要文件中;
第三文件存储单元,用于将所述第一摘要文件与所述待升级软件的标识对应存储,并计算所述第一摘要文件的第一数字摘要值。
为达到上述目的,本发明实施例还公开了一种分布式系统的软件升级系统,所述系统包括客户端和服务器;
所述客户端,用于接收所述服务器发送的针对待升级软件的升级通知;从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;以及从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件;
所述服务器,用于向所述客户端发送所述升级通知;接收所述客户端根据所述升级通知发送的针对所述待升级软件的下载请求;将所述待升级软件的所述第一摘要文件发送给所述客户端;接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;将所述待升级安装文件发送给所述客户端。
本发明实施例公开了一种分布式系统的软件升级方法、装置及系统,客户端接收到服务器针对待升级软件的升级通知后,从服务器下载第一摘要文件,进而根据第一摘要文件和第二摘要文件中包括的安装文件的信息,确定待升级软件的待升级安装文件,从服务器下载待升级安装文件,使用待升级安装文件实现待升级软件的升级。可见,本发明实施例中,软件升级是以软件的安装文件为单位,只需要下载需要升级的安装文件,也就是只需要下载待升级文件就可以了,提高了软件升级速度,同时节省了网络流量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式系统的软件升级系统的结构示意图;
图2为本发明实施例提供的一种分布式系统的软件升级方法的一种流程示意图;
图3为本发明实施例提供的一种分布式系统的软件升级方法的另一种流程示意图;
图4为本发明实施例中确定第二摘要文件和第二数字摘要值的流程示意图;
图5为本发明实施例提供的一种分布式系统的软件升级方法的另一种流程示意图;
图6为本发明实施例提供的另一种分布式系统的软件升级方法的一种流程示意图;
图7为本发明实施例提供的另一种分布式系统的软件升级方法的另一种流程示意图;
图8为本发明实施例中确定第一摘要文件和第一数字摘要值的流程示意图;
图9为本发明实施例提供的一种分布式系统的软件升级装置的一种结构示意图;
图10为本发明实施例中确定第二摘要文件和第二数字摘要值的装置的结构示意图;
图11为本发明实施例提供的另一种分布式系统的软件升级装置的一种结构示意图;
图12为本发明实施例中确定第一摘要文件和第一数字摘要值的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中提到的安装文件可以理解为软件的组件。
下面通过具体实施例,对本发明进行详细说明。
参考图1,图1为本发明实施例提供的一种分布式系统的软件升级系统的结构示意图;该软件升级系统包括:客户端001和服务器002;这里,一个软件升级系统中可以包括多个客户端001和多个服务器002,本发明实施例对此不进行限定。
其中,客户端001,用于接收服务器002发送的针对待升级软件的升级通知;从服务器002下载第一摘要文件,这里,第一摘要文件可以包括:服务器002中存储的、待升级软件的各个安装文件的文件信息;根据第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件,这里,第二摘要文件可以包括:客户端001中存储的、待升级软件的各个安装文件的文件信息;从服务器002下载待升级安装文件,并使用待升级安装文件升级待升级软件;
服务器002,用于向客户端001发送升级通知;接收客户端001根据升级通知发送的针对待升级软件的下载请求;将待升级软件的第一摘要文件发送给客户端001;接收客户端001发送的针对待升级软件的待升级安装文件的下载请求;将待升级安装文件发送给客户端001。
应用上述实施例,客户端接收到服务器针对待升级软件的升级通知后,从服务器下载第一摘要文件,进而根据第一摘要文件和第二摘要文件中包括的安装文件的信息,确定待升级软件的待升级安装文件,从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件,实现待升级软件的升级。可见,本发明实施例中,软件升级是以软件的安装文件为单位,只需要下载需要升级的安装文件,也就是只需要下载待升级文件就可以了,提高了软件升级速度,同时节省了网络流量。
下面详细说明本发明实施例提供的分布式系统的软件升级方法,参考图2,图2为本发明实施例提供的一种分布式系统的软件升级方法的一种流程示意图,应用于客户端,该方法包括:
S100:接收服务器发送的针对待升级软件的升级通知;
可选地,若服务器中存储的软件发生了变化,例如一个软件的部分安装文件发生了变化,则可以将该软件作为待升级软件,并向存储了该待升级软件的客户端发送针对该待升级软件的升级通知。这里,升级通知中可以包括该待升级软件的标识,该升级通知用于通知客户端对待升级软件进行升级。
假设软件升级为人工指示服务器下发软件的所有安装文件,由于软件的升级一般仅仅只是该软件的一部分安装文件需要升级,而在一个软件的一部分安装文件需要升级时,该软件的标识(例如:版本号等)可能未发生变化,这种情况下,人工就无法获知该软件是否需要升级,更无法获知该软件的哪些安装文件需要升级。
基于该原因,在本发明的一个实施例中,参考图3,在图2的基础上,S100可以包括:
S110:向服务器发送针对待升级软件的升级请求;
S120:接收服务器在第一摘要文件的第一标识和第二摘要文件的第二标识不同的情况下发送的升级通知。
这里,待升级软件可以为客户端中存储的任一一个软件,升级请求中包括:待升级软件的标识和第二摘要文件的第二标识,其中,第二摘要文件可以包括:客户端中存储的、待升级软件的各个安装文件的文件信息,当客户端中存储的待升级软件的各个安装文件发生变化时,第二摘要文件中包括的各个安装文件的文件信息也会发生变化,进而第二摘要文件的第二标识也会发生变化;
另外,服务器中还存储有第一摘要文件,该第一摘要文件可以包括:服务器中存储的、待升级软件的各个安装文件的文件信息,当服务器中存储的待升级软件的各个安装文件发生变化时,第一摘要文件中包括的各个安装文件的文件信息也会发生变化,进而第一摘要文件的第一标识也会发生变化。
这种情况下,服务器接收到升级请求后,可以从升级请求中获得第二摘要文件的第二标识和待升级软件的标识,根据待升级软件的标识,从服务器本地获取到第一摘要文件,进而获取到该第一摘要文件的第一标识,对比第二标识和本地存储的第一摘要文件的第一标识,当两者不同时,表明服务器中存储的待升级软件的安装文件发生了变化,确定该待升级软件需要升级,服务器向客户端发送针对该待升级软件的升级通知。此时,软件的升级不需要人工参与,有利于提高软件升级速度,节省网络流量。
在本发明的一个实施例中,为了保证标识的准确、唯一,第二标识可以为第二数字摘要值;另外,安装文件的文件信息可以包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径等信息。数字摘要值一般采用MD5算法、SHA算法或其他类似的能够计算文件唯一性的算法计算得到,对于同一算法,不同的文件生成的数字摘要值是不同的,而同一文件生成的数字摘要值必定是相同的,采用数字摘要值可以有效地保证标识的准确、唯一。
在本发明的一个实施例中,为了获得第二数字摘要值,客户端在向服务器发送升级请求之前,还需要获得第二摘要文件,进而获得第二摘要文件的第二数字摘要值。可选地,若客户端中存储有第二摘要文件,如客户端升级了软件之后,可以将从服务器中下载的第一摘要文件作为第二摘要文件,此时客户端只需要查找到第二摘要文件,并计算出第二摘要文件的第二数字摘要值即可;若客户端中未存储第二摘要文件,如客户端未升级过软件,此时客户端中未存储第二摘要文件,客户端也就不能查找到第二摘要文件,这种情况下,可参考图4,在图3的基础上,获得第二摘要文件,并计算第二摘要文件的第二数字摘要值的过程可以包括:
S010:遍历待升级软件的安装文件的存储路径,确定待升级软件的所有安装文件;
这里,安装文件的存储路径对应安装文件所在的目录结构,遍历待升级软件的安装文件的存储路径,也就是遍历待升级软件的安装文件所在的目录结构,确定该待升级软件的所有安装文件,并记录安装文件对应的存储路径。
S020:计算待升级软件的每一安装文件的第三数字摘要值;
S030:将待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至第二摘要文件中;
客户端可以先创建一个该待升级软件的第二摘要文件,在获得每一安装文件的文件名、第三数字摘要值与存储路径后,将每一安装文件的文件名、第三数字摘要值与存储路径对应存储至该第二摘要文件中。
S040:将第二摘要文件与待升级软件的标识对应存储,并计算第二摘要文件的第二数字摘要值。
其中,将第二摘要文件与待升级软件的标识对应存储可以为:将待升级软件的标识作为该第二摘要文件的文件名。这种情况下,当需要升级一软件时,可以快速地根据该软件的标识确定第二摘要文件,进而获得第二摘要文件的第二数字摘要值。
S200:从服务器下载第一摘要文件;
其中,第一摘要文件可以包括:服务器中存储的、待升级软件的各个安装文件的文件信息。
这里,第一摘要文件同样为待升级软件的摘要文件,其与第二摘要文件的文件名相同,可以都是待升级软件的标识。为了便于区分两个摘要文件,可以在下载了第一摘要文件后,将第一摘要文件存储在一个临时文件中。另外,为了更好地区分两个摘要文件,还可以对第一摘要文件进行重命名。例如:待升级软件的标识为id,则第一摘要文件和第二摘要文件的文件名可以为id.txt,当客户端下载第一摘要文件后,可以将第一摘要文件重命名为temp_id.txt。
需要说明的是,上述临时文件可以为一个临时目录或临时文件夹。
S300:根据第一摘要文件和客户端中第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件;
其中,第二摘要文件可以包括:客户端中存储的、待升级软件的各个安装文件的文件信息。客户端中存储的、待升级软件的各个安装文件可以但不限于是指待升级软件的各个组件,或者说,支持待升级软件运行的各个可执行文件。
在本发明的一个实施例中,上述根据第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件,可以为:根据第一摘要文件和第二摘要文件中安装文件的文件名和安装文件的第三数字摘要值,确定待升级安装文件。可选地,确定待升级安装文件的过程可参考图5,在图3的基础上,S300可以包括:
S310:比较第一摘要文件和第二摘要文件;
S320:将第一摘要文件和第二摘要文件中文件名相同、但第三数字摘要值不同的安装文件,确定为第一安装文件;
S330:将第一摘要文件中包括的、但第二摘要文件中不包括的文件名对应的安装文件,确定为第二安装文件。
这里,第一安装文件和第二安装文件统称为待升级安装文件。
其中由于待升级安装文件可能包含第一安装文件和/或第二安装文件,因此,S320和S330可以都执行,也可以只执行其中一个。S320和S330的执行顺序可以是并行执行也可以是先执行其中任一个。
例如,第二摘要文件中包括的安装文件的信息有:[a,123]、[b,234]和[c,345],第一摘要文件中包括:[a,535]、[b,234]和[e,567],此时,第二摘要文件和第一摘要文件中都包括文件名a和b,其中,文件名b的第三数字摘要值相同,都为234,而第二摘要文件中文件名a的第三数字摘要值为123,第一摘要文件中文件名a的第三数字摘要值为535,两个摘要文件中文件名a的第三数字摘要值不同,则将文件名a对应的安装文件确定为第一安装文件;另外,第一摘要文件中包括文件名e,而第二摘要文件中不包括文件名e,则将文件名e对应的安装文件,确定为第二安装文件,这种情况下,可以确定待升级安装文件有:文件名a对应的安装文件和文件名e对应的安装文件。
S400:从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件。
在本发明的一个实施例中,客户端在确定了待升级安装文件后,就可以从服务器中下载待升级安装文件,并用下载的待升级安装文件进行升级,升级完成后,待升级软件就可以根据新升级的安装文件运行,进而实现了待升级软件的升级。
在本发明的一个实施例中,待升级安装文件包括第一安装文件和/或第二安装文件。
第一安装文件和第二安装文件的确定方式不同,对应的,第一安装文件和第二安装文件的升级方式也有所区别。例如,对于第一安装文件,客户端中存储有第一安装文件对应的安装文件,也就是,客户端中存储有与第一安装文件的文件名相同的安装文件,这种情况下,在升级第一安装文件时,需要按照第一摘要文件中包括的第一安装文件的存储路径,替换在该存储路径原存储的安装文件,实现使用第一安装文件升级客户端的对应安装文件。换句话说,按照第一摘要文件中包括的第一安装文件的存储路径,替换在该存储路径原存储的的安装文件的过程,也可称为,升级第一安装文件的过程。
对于第二安装文件,客户端中未存储第二安装文件对应的安装文件,这种情况下,在升级第二安装文件时,只需要按照第一摘要文件中包括的第二安装文件的存储路径,存储第二安装文件就可以了。换句话说,按照第一摘要文件中包括的第二安装文件的存储路径,存储第二安装文件的过程,也可称为,升级第二安装文件的过程。
在本发明的一个实施例中,为了便于区分第一安装文件和客户端中原存储的、第一安装文件对应的安装文件,且便于管理下载的待升级安装文件,客户端可以将下载的待升级安装文件存储在一个临时文件中。这样,在升级待升级安装文件时,直接从临时文件中获取并升级待升级安装文件。
在这种情况下,只升级需要升级的安装文件,不必升级待升级软件的所有文件,可以减轻升级待升级软件需要的文件下载量和内存占用率。
在本发明的一个实施例中,存储好第一安装文件和/或第二安装文件后,若确认所有的待升级安装文件均已升级,可以删除临时文件以释放空间。
在本发明的一个实施例中,还可以在完成第一安装文件和/或第二安装文件的升级后,将客户端中的冗余文件删除,例如,根据第一摘要文件中指定的冗余文件名,将待升级软件中对应的安装文件删除,或者,将第二摘要文件中包括的、第一摘要文件中不包括的文件信息对应的安装文件删除等等,在此不做限定。这些冗余文件在待升级软件完成升级后客户端将不继续使用,所以可以在待升级软件升级时或者升级后删除以释放空间。
例如,第一摘要文件中包括:[a,535]、[b,234]和[h,000],摘要值000表示删除文件名为h的安装文件。在这种情况下,客户端可以在从服务器下载第一摘要文件之后的任意时段删除冗余文件h,例如,在使用待升级安装文件升级待升级软件的时候删除冗余文件h,或者,在用第一摘要文件的内容替换第二摘要文件的内容之后,删除冗余文件h。
又例如,仍以S330中的例子进行说明,第二摘要文件中包括:[a,123]、[b,234]和[c,345],第一摘要文件中包括:[a,535]、[b,234]和[e,567],第二摘要文件中包括文件名c,第一摘要文件中不包括文件名c,因此,文件名c对应的安装文件(或者说客户端中文件名c的组件)为冗余文件,在从临时文件中获取并升级待升级安装文件后,删除文件名c对应的安装文件。
另外,对待升级软件进行升级时,待升级软件可能正在运行,若直接升级该待升级软件的安装文件,很可能导致分布式系统崩溃;另外,部分软件在升级后,只有重启才能正常运行。考虑到上述两种情况,客户端可以在从服务器下载待升级安装文件后,使用待升级安装文件升级待升级软件之前,关闭当前分布式系统中运行的待升级软件;在使用待升级安装文件升级待升级软件之后,再启动该待升级软件。
客户端在升级待升级安装文件完成后,也就是,在软件升级完成后,为了便于下一次软件升级,可以用第一摘要文件的内容替换第二摘要文件的内容。可选的,用第一摘要文件的内容替换第二摘要文件的内容,可以为:将第二摘要文件删除,并将第一摘要文件移动至原存储第二摘要文件的位置,并将第一摘要文件重命名为第二摘要文件的名称。
以S200中的例子进行说明,客户端下载第一摘要文件后,第二摘要文件的文件名为id.txt,第一摘要文件的文件名为temp_id.txt,客户端在升级待升级安装文件完成后,可以删除第二摘要文件,将第一摘要文件移动至原存储第二摘要文件的位置,并将第一摘要文件重命名为id.txt,此时,第一摘要文件作为客户端的重新确定的第二摘要文件存储,在下一次升级待升级软件时,可以根据该重新确定的第二摘要文件进行升级。
另外,在升级待升级安装文件完成后,客户端中可能会存储有一些冗余的文件,为了节省客户端的存储空间,可以删除这些冗余文件。这里,冗余文件还可以包括:临时文件中存储的文件,例如第一摘要文件和待升级安装文件。
这种情况下,为了保证待升级软件的升级,并保证第一摘要文件的内容能够替换第二摘要文件的内容,在基于临时文件中存储的待升级安装文件升级客户端中对应的安装文件之后,用第一摘要文件的内容替换第二摘要文件的内容,之后再删除临时文件。
或者,在本发明的一个实施例中,也可以在基于临时文件中存储的待升级安装文件升级待升级软件后,客户端可以删除临时文件和原第二摘要文件,并且针对升级后的软件生成新的第二摘要文件。
在本发明的一个实施例中,客户端在升级待升级安装文件完成之后,可以向服务器发送针对待升级软件的升级完成通知,以通知服务器待升级软件升级完成,避免服务器持续对该待升级软件进行升级,影响服务器的正常运行。
应用上述实施例,客户端接收到服务器针对待升级软件的升级通知后,从服务器下载第一摘要文件,进而根据第一摘要文件和第二摘要文件中包括的安装文件的信息,确定待升级软件的待升级安装文件,从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件,实现待升级软件的升级。可见,本发明实施例中,软件升级是以软件的安装文件为单位,只需要下载需要升级的安装文件,也就是只需要下载待升级文件就可以了,提高了软件升级速度,同时节省了网络流量。
参考图6,图6为本发明实施例提供的另一种分布式系统的软件升级方法的流程示意图,应用于服务器,该方法包括:
S500:向客户端发送针对待升级软件的升级通知;
在本发明的一个实施例中,为了避免人工无法获知软件是否需要升级的问题,参考图7,在图6的基础上,S500包括:
S510:接收客户端发送的针对待升级软件的升级请求;
其中,升级请求可以包括:待升级软件的标识和第二摘要文件的第二标识;第二摘要文件可以包括:客户端中存储的、待升级软件的各个安装文件的文件信息。
S520:根据待升级软件的标识,确定本地存储的第一摘要文件,并获取第一摘要文件的第一标识;
S530:比较第一标识和第二标识是否相同;若不同,执行S540;
在本发明的一个实施例中,为了保证标识的准确、唯一,第一标识可以为第一摘要文件的第一数字摘要值,第二标识可以为第二摘要文件的第二数字摘要值;安装文件的文件信息可以包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径。
另外,服务器需要根据第一摘要文件的第一标识确定待升级软件是否需要升级,这种情况下,在服务器在接收客户端发送的升级请求之前,需要获得第一摘要文件,并计算出第一摘要文件的第一数字摘要值。可选地,可参考图8,在图7的基础上,获得第一摘要文件,并计算出第一摘要文件的第一数字摘要值的过程可以包括:
S050:按照待升级软件的实际存储目录结构对应的存储路径,存储待升级软件的安装文件;
这里,存储路径对应目录结构。
S060:计算待升级软件的每一安装文件的第三数字摘要值;
S070:将待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至第一摘要文件中;
服务器可以先创建一个该待升级软件的第一摘要文件,在获得每一安装文件的文件名、第三数字摘要值与存储路径后,将每一安装文件的文件名、第三数字摘要值与存储路径对应存储至该第一摘要文件中。
S080:将第一摘要文件与待升级软件的标识对应存储,并计算第一摘要文件的第一数字摘要值。
其中,将第一摘要文件与待升级软件标的识对应存储可以为:将待升级软件的标识作为第一摘要文件的文件名。这种情况下,当需要升级一软件时,可以快速地根据该软件的标识确定第一摘要文件,进而获得第一摘要文件的第一数字摘要值。
S540:向客户端发送升级通知。
这里,升级通知可以包括:待升级软件的标识,以便于客户端根据软件是否需要升级确定需要升级的软件。
在本发明的其他实施例中,服务器在对客户端中的待升级软件进行升级时,需要将待升级软件对应的升级任务添加至升级队列中,而若升级队列已满,则不能对客户端中的待升级软件进行升级;只有在升级队列未满的情况下,才能对客户端中待升级软件进行升级。基于该原因,服务器在接收客户端发送的升级请求之后,可以判断先本地升级队列是否已满;若确定本地升级队列未满,说明可以对客户端中的待升级软件进行升级,继续执行S520;若确定本地升级队列已满,则停止对客户端中的待升级软件进行升级。另外,在本地升级队列已满的情况下,还可以向客户端发送针对待升级软件的等待通知,该等待通知用于通知客户端当前暂时不能对待升级软件进行升级。
这种情况下,上述向客户端发送升级通知可以为:将待升级软件对应的升级任务加入本地升级队列,并向客户端发送升级通知。
S600:接收客户端根据升级通知发送的针对待升级软件的下载请求;
S700:将待升级软件的第一摘要文件发送给客户端;
其中,第一摘要文件可以包括:服务器中存储的、待升级软件的各个安装文件的文件信息。
S800:接收客户端发送的针对待升级软件的待升级安装文件的下载请求;
其中,待升级安装文件为客户端根据第一摘要文件和第二摘要文件中包括的安装文件的文件信息确定的。
S900:将待升级安装文件发送给客户端,以使客户端使用待升级安装文件升级待升级软件。
应用上述实施例,客户端接收到服务器针对待升级软件的升级通知后,从服务器下载第一摘要文件,进而根据第一摘要文件和第二摘要文件中包括的安装文件的信息,确定待升级软件的待升级安装文件,从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件,实现待升级软件的升级。可见,本发明实施例中,软件升级是以软件的安装文件为单位,只需要下载需要升级的安装文件,也就是只需要下载待升级文件就可以了,提高了软件升级速度,同时节省了网络流量。
参考图9,图9为本发明实施例提供的一种分布式系统的软件升级装置的一种结构示意图,应用于客户端,所述装置包括:
通知接收单元100,用于接收服务器发送的针对待升级软件的升级通知;
文件下载单元200,用于从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
文件确定单元300,用于根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件;所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
文件升级单元400,用于从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件。
在本发明的一个实施例中,所述通知接收单元100,具体可以:
向所述服务器发送针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
接收所述服务器在所述第一摘要文件的第一标识和所述第二标识不同的情况下发送的升级通知,所述第一摘要文件为所述服务器根据所述待升级软件的标识确定的。
在本发明的其他实施例中,所述第一标识为所述第一摘要文件的第一数字摘要值;所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息可以包括:安装文件的文件名和安装文件的第三数字摘要值;
这种情况下,所述文件确定单元300,具体可以用于:
比较所述第一摘要文件和第二摘要文件;
将所述第一摘要文件和所述第二摘要文件中文件名相同、但第三数字摘要值不同的安装文件,确定为第一安装文件;和/或
将所述第一摘要文件中包括的、但所述第二摘要文件中不包括的文件名对应的安装文件,确定为第二安装文件;
其中,所述第一安装文件与所述第二安装文件为待升级安装文件。
在本发明的其他实施例中,所述安装文件的文件信息还可以包括:安装文件的存储路径;
所述文件升级单元400,具体可以用于:
从所述服务器下载所述第一安装文件和所述第二安装文件;
从所述服务器下载所述第一安装文件,按照所述第一摘要文件中包括的所述第一安装文件的存储路径,替换本地原存储的、所述第一安装文件对应的安装文件;和/或
从所述服务器下载所述第一安装文件,按照所述第一摘要文件中包括的所述第二安装文件的存储路径,存储所述第二安装文件。
在本发明的其他实施例中,参考图10,在图9的基础上,所述装置还可以包括:
路径遍历单元010,用于在向服务器发送针对待升级软件升级请求之前,遍历所述待升级软件的安装文件的存储路径,确定所述待升级软件的所有安装文件;
摘要值计算单元020,用于计算所述待升级软件的每一安装文件的第三数字摘要值;
第一文件存储单元030,用于将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第二摘要文件中;
第二文件存储单元040,用于将所述第二摘要文件与所述待升级软件的标识对应存储,并计算所述第二摘要文件的第二数字摘要值。
在本发明的其他实施例中,所述文件下载单元200,具体可以用于:
从所述服务器下载第一摘要文件,并将所述第一摘要文件存储在临时文件中;
所述文件升级单元400,具体可以用于:
从所述服务器下载所述待升级安装文件,并将所述待升级安装文件存储在所述临时文件中;基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件;
这种情况下,所述软件升级装置还可以包括:
文件变更单元(图9中未示出),用于在基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件之后,删除所述临时文件。
在本发明的其他实施例中,所述软件升级装置的文件变更单元(图9中未示出),还可以用于在文件升级单元400基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件之后,在删除所述临时文件之前,删除所述客户端中的冗余文件,所述冗余文件包括根据所述第一摘要文件的内容确定的、所述待升级软件中冗余的安装文件;和/或用所述第一摘要文件的内容替换所述第二摘要文件的内容。
在本发明的其他实施例中,所述软件升级装置还可以包括:
软件关闭单元(图9中未示出),用于在使用所述待升级安装文件升级所述待升级软件之前,关闭当前分布式系统中运行的所述待升级软件;
软件启动单元(图9中未示出),用于使用所述待升级安装文件升级所述待升级软件之后,启动所述待升级软件。
在本发明的其他实施例中,所述软件升级装置还可以包括:
通知发送单元(图9中未示出),用于在使用所述待升级安装文件升级所述待升级软件之后,向所述服务器发送针对所述待升级软件的升级完成通知。
应用上述实施例,客户端接收到服务器针对待升级软件的升级通知后,从服务器下载第一摘要文件,进而根据第一摘要文件和第二摘要文件中包括的安装文件的信息,确定待升级软件的待升级安装文件,从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件,实现待升级软件的升级。可见,本发明实施例中,软件升级是以软件的安装文件为单位,只需要下载需要升级的安装文件,也就是只需要下载待升级文件就可以了,提高了软件升级速度,同时节省了网络流量。
参考图11,图11为本发明实施例提供的另一种分布式系统的软件升级装置的一种结构示意图,应用于服务器,所述装置包括:
通知发送单元500,用于向客户端发送针对待升级软件的升级通知;
第一请求接收单元600,用于接收客户端根据所述升级通知发送的针对所述待升级软件的下载请求;
第一文件发送单元700,用于将所述待升级软件的第一摘要文件发送给所述客户端;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
第二请求接收单元800,用于接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;所述待升级安装文件为所述客户端根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息确定的,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
第二文件发送单元900,用于将所述待升级安装文件发送给所述客户端,以使所述客户端使用所述待升级安装文件升级所述待升级软件。
在本发明的其他实施例中,所述通知发送单元500,具体可以用于:
接收所述客户端发送的针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
根据所述待升级软件的标识,确定本地存储的第一摘要文件,并获取所述第一摘要文件的第一标识;比较所述第一标识和所述第二标识是否相同;若不同,向所述客户端发送升级通知,所述升级通知包括:所述待升级软件的标识。
在本发明的其他实施例中,所述软件升级装置还可以包括:
队列判断单元(图11中未示出),用于在接收所述客户端发送的针对所述待升级软件的升级请求之后,判断本地升级队列是否已满;
所述通知发送单元500,具体可以用于:
在所述队列判断单元的判断结果为否的情况下,根据所述待升级软件的标识,确定本地存储的第一摘要文件的第一标识,并获取所述第一摘要文件的第一标识;比较所述第一标识和所述第二标识是否相同;若不同,将所述待升级软件对应的升级任务加入本地升级队列,并向所述客户端发送针升级通知。
在本发明的其他实施例中,所述软件升级装置还可以包括:
通知接收单元(图11中未示出),用于在将所述待升级安装文件发送给所述客户端之后,接收所述客户端发送的针对所述待升级软件的升级完成通知;从本地升级队列中移除所述待升级软件对应的升级任务。
在本发明的其他实施例中,所述第一标识为所述第一摘要文件的第一数字摘要值,所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径;
这种情况下,参考图12,在图11的基础上,所述装置还可以包括:
第一文件存储单元050,用于在接收所述客户端发送的针对所述待升级软件的升级请求之前,按照所述待升级软件的实际存储目录结构对应的存储路径,存储所述待升级软件的安装文件;
摘要值计算单元060,用于计算所述待升级软件的每一安装文件的第三数字摘要值;
第二文件存储单元070,用于将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第一摘要文件中;
第三文件存储单元080,用于将所述第一摘要文件与所述待升级软件的标识对应存储,并计算所述第一摘要文件的第一数字摘要值。
应用上述实施例,客户端接收到服务器针对待升级软件的升级通知后,从服务器下载第一摘要文件,进而根据第一摘要文件和第二摘要文件中包括的安装文件的信息,确定待升级软件的待升级安装文件,从服务器下载待升级安装文件,并使用待升级安装文件升级待升级软件,实现待升级软件的升级。可见,本发明实施例中,软件升级是以软件的安装文件为单位,只需要下载需要升级的安装文件,也就是只需要下载待升级文件就可以了,提高了软件升级速度,同时节省了网络流量。
对于系统、装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (29)

1.一种分布式系统的软件升级方法,其特征在于,应用于客户端,所述方法包括:
接收服务器发送的针对待升级软件的升级通知;
从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件;所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件。
2.根据权利要求1所述的方法,其特征在于,所述接收服务器发送的针对待升级软件的升级通知的步骤,包括:
向所述服务器发送针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
接收所述服务器在所述第一摘要文件的第一标识和所述第二标识不同的情况下发送的升级通知,所述第一摘要文件为所述服务器根据所述待升级软件的标识确定的。
3.根据权利要求2所述的方法,其特征在于,所述第一标识为所述第一摘要文件的第一数字摘要值;所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名和安装文件的第三数字摘要值;
所述根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件的步骤,包括:
比较所述第一摘要文件和第二摘要文件;
将所述第一摘要文件和所述第二摘要文件中文件名相同、但第三数字摘要值不同的安装文件,确定为第一安装文件;和/或
将所述第一摘要文件中包括的、但所述第二摘要文件中不包括的文件名对应的安装文件,确定为第二安装文件;
其中,所述第一安装文件与所述第二安装文件为待升级安装文件。
4.根据权利要求3所述的方法,其特征在于,所述安装文件的文件信息还包括:安装文件的存储路径;
所述从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件的步骤,包括:
从所述服务器下载所述第一安装文件,按照所述第一摘要文件中包括的所述第一安装文件的存储路径,替换本地原存储的、所述第一安装文件对应的安装文件;和/或
从所述服务器下载所述第二安装文件,按照所述第一摘要文件中包括的所述第二安装文件的存储路径,存储所述第二安装文件。
5.根据权利要求3或4所述的方法,其特征在于,在所述向服务器发送针对待升级软件升级请求的步骤之前,所述方法还包括:
遍历所述待升级软件的安装文件的存储路径,确定所述待升级软件的所有安装文件;
计算所述待升级软件的每一安装文件的第三数字摘要值;
将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第二摘要文件中;
将所述第二摘要文件与所述待升级软件的标识对应存储,并计算所述第二摘要文件的第二数字摘要值。
6.根据权利要求1所述的方法,其特征在于,所述从所述服务器下载第一摘要文件的步骤,包括:
从所述服务器下载第一摘要文件,并将所述第一摘要文件存储在临时文件中;
所述从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件的步骤,包括:
从所述服务器下载所述待升级安装文件,并将所述待升级安装文件存储在所述临时文件中;
基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件;
在所述基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件的步骤之后,所述方法还包括:
删除所述临时文件。
7.根据权利要求6所述的方法,其特征在于,在所述基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件的步骤之后,在所述删除所述临时文件的步骤之前,所述方法还包括:
删除所述客户端中的冗余文件,所述冗余文件包括根据所述第一摘要文件的内容确定的、所述待升级软件中冗余的安装文件;和/或
用所述第一摘要文件的内容替换所述第二摘要文件的内容。
8.根据权利要求1所述的方法,其特征在于,在所述使用所述待升级安装文件升级所述待升级软件的步骤之前,所述方法还包括:
关闭当前分布式系统中运行的所述待升级软件;
在所述使用所述待升级安装文件升级所述待升级软件的步骤之后,所述方法还包括:
启动所述待升级软件。
9.根据权利要求1所述的方法,其特征在于,在所述使用所述待升级安装文件升级所述待升级软件的步骤之后,所述方法还包括:
向所述服务器发送针对所述待升级软件的升级完成通知。
10.一种分布式系统的软件升级方法,其特征在于,应用于服务器,所述方法包括:
向客户端发送针对待升级软件的升级通知;
接收所述客户端根据所述升级通知发送的针对所述待升级软件的下载请求;
将所述待升级软件的第一摘要文件发送给所述客户端;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;所述待升级安装文件为所述客户端根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息确定的,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
将所述待升级安装文件发送给所述客户端,以使所述客户端使用所述待升级安装文件升级所述待升级软件。
11.根据权利要求10所述的方法,其特征在于,所述向客户端发送针对待升级软件的升级通知的步骤,包括:
接收所述客户端发送的针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
根据所述待升级软件的标识,确定本地存储的第一摘要文件,并获取所述第一摘要文件的第一标识;
比较所述第一标识和所述第二标识是否相同;
若不同,向所述客户端发送升级通知,所述升级通知包括:所述待升级软件的标识。
12.根据权利要求11所述的方法,其特征在于,在所述接收所述客户端发送的针对所述待升级软件的升级请求的步骤之后,所述方法还包括:
判断本地升级队列是否已满,在确定本地升级队列未满时,继续执行所述根据所述待升级软件的标识,确定本地存储的第一摘要文件的第一标识的步骤;
所述向所述客户端发送升级通知的步骤,包括:
将所述待升级软件对应的升级任务加入本地升级队列,并向所述客户端发送升级通知。
13.根据权利要求12所述的方法,其特征在于,在所述将所述待升级安装文件发送给所述客户端的步骤之后,所述方法还包括:
接收所述客户端发送的针对所述待升级软件的升级完成通知;
从本地升级队列中移除所述待升级软件对应的升级任务。
14.根据权利要求11所述的方法,其特征在于,所述第一标识为所述第一摘要文件的第一数字摘要值,所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径;
在所述接收所述客户端发送的针对所述待升级软件的升级请求的步骤之前,所述方法还包括:
按照所述待升级软件的实际存储目录结构对应的存储路径,存储所述待升级软件的安装文件;
计算所述待升级软件的每一安装文件的第三数字摘要值;
将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第一摘要文件中;
将所述第一摘要文件与所述待升级软件的标识对应存储,并计算所述第一摘要文件的第一数字摘要值。
15.一种分布式系统的软件升级装置,其特征在于,应用于客户端,所述装置包括:
通知接收单元,用于接收服务器发送的针对待升级软件的升级通知;
文件下载单元,用于从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
文件确定单元,用于根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件;所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
文件升级单元,用于从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件。
16.根据权利要求15所述的装置,其特征在于,所述通知接收单元,具体用于:
向所述服务器发送针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
接收所述服务器在所述第一摘要文件的第一标识和所述第二标识不同的情况下发送的升级通知,所述第一摘要文件为所述服务器根据所述待升级软件的标识确定的。
17.根据权利要求16所述的装置,其特征在于,所述第一标识为所述第一摘要文件的第一数字摘要值;所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名和安装文件的第三数字摘要值;
所述文件确定单元,具体用于:
比较所述第一摘要文件和第二摘要文件;
将所述第一摘要文件和所述第二摘要文件中文件名相同、但第三数字摘要值不同的安装文件,确定为第一安装文件;和/或
将所述第一摘要文件中包括的、但所述第二摘要文件中不包括的文件名对应的安装文件,确定为第二安装文件;
其中,所述第一安装文件与所述第二安装文件为待升级安装文件。
18.根据权利要求17所述的装置,其特征在于,所述安装文件的文件信息还包括:安装文件的存储路径;
所述文件升级单元,具体用于:
从所述服务器下载所述第一安装文件和所述第二安装文件;
从所述服务器下载所述第一安装文件,按照所述第一摘要文件中包括的所述第一安装文件的存储路径,替换本地原存储的、所述第一安装文件对应的安装文件;和/或
从所述服务器下载所述第二安装文件,按照所述第一摘要文件中包括的所述第二安装文件的存储路径,存储所述第二安装文件。
19.根据权利要求17或18所述的装置,其特征在于,所述装置还包括:
路径遍历单元,用于在向服务器发送针对待升级软件升级请求之前,遍历所述待升级软件的安装文件的存储路径,确定所述待升级软件的所有安装文件;
摘要值计算单元,用于计算所述待升级软件的每一安装文件的第三数字摘要值;
第一文件存储单元,用于将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第二摘要文件中;
第二文件存储单元,用于将所述第二摘要文件与所述待升级软件的标识对应存储,并计算所述第二摘要文件的第二数字摘要值。
20.根据权利要求15所述的装置,其特征在于,所述文件下载单元,具体用于:
从所述服务器下载第一摘要文件,并将所述第一摘要文件存储在临时文件中;
所述文件升级单元,具体用于:
从所述服务器下载所述待升级安装文件,并将所述待升级安装文件存储在所述临时文件中;基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件;
所述装置还包括:
文件变更单元,用于在基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件之后,删除所述临时文件。
21.根据权利要求20所述的装置,其特征在于,所述文件变更单元,还用于在基于所述临时文件中存储的所述待升级安装文件升级所述客户端中对应的安装文件之后,在删除所述临时文件之前,删除所述客户端中的冗余文件,所述冗余文件包括根据所述第一摘要文件的内容确定的、所述待升级软件中冗余的安装文件;和/或用所述第一摘要文件的内容替换所述第二摘要文件的内容。
22.根据权利要求15所述的装置,其特征在于,所述装置还包括:
软件关闭单元,用于在使用所述待升级安装文件升级所述待升级软件之前,关闭当前分布式系统中运行的所述待升级软件;
软件启动单元,用于在使用所述待升级安装文件升级所述待升级软件之后,启动所述待升级软件。
23.根据权利要求15所述的装置,其特征在于,所述装置还包括:
通知发送单元,用于在使用所述待升级安装文件升级所述待升级软件之后,向所述服务器发送针对所述待升级软件的升级完成通知。
24.一种分布式系统的软件升级装置,其特征在于,应用于服务器,所述装置包括:
通知发送单元,用于向客户端发送针对待升级软件的升级通知;
第一请求接收单元,用于接收客户端根据所述升级通知发送的针对所述待升级软件的下载请求;
第一文件发送单元,用于将所述待升级软件的第一摘要文件发送给所述客户端;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;
第二请求接收单元,用于接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;所述待升级安装文件为所述客户端根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息确定的,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;
第二文件发送单元,用于将所述待升级安装文件发送给所述客户端,以使所述客户端使用所述待升级安装文件升级所述待升级软件。
25.根据权利要求24所述的装置,其特征在于,所述通知发送单元,具体用于:
接收所述客户端发送的针对所述待升级软件的升级请求;所述升级请求包括:所述待升级软件的标识和所述第二摘要文件的第二标识;
根据所述待升级软件的标识,确定本地存储的第一摘要文件,并获取所述第一摘要文件的第一标识;
比较所述第一标识和所述第二标识是否相同;
若不同,向所述客户端发送升级通知,所述升级通知包括:所述待升级软件的标识。
26.根据权利要求25所述的装置,其特征在于,所述装置还包括:
队列判断单元,用于在接收所述客户端发送的针对所述待升级软件的升级请求之后,判断本地升级队列是否已满;
所述通知发送单元,具体用于:
在所述队列判断单元的判断结果为否的情况下,根据所述待升级软件的标识,确定本地存储的第一摘要文件的第一标识,并获取所述第一摘要文件的第一标识;比较所述第一标识和所述第二标识是否相同;若不同,将所述待升级软件对应的升级任务加入本地升级队列,并向所述客户端发送针升级通知。
27.根据权利要求26所述的装置,其特征在于,所述装置还包括:
通知接收单元,用于在将所述待升级安装文件发送给所述客户端之后,接收所述客户端发送的针对所述待升级软件的升级完成通知;从本地升级队列中移除所述待升级软件对应的升级任务。
28.根据权利要求25所述的装置,其特征在于,所述第一标识为所述第一摘要文件的第一数字摘要值,所述第二标识为所述第二摘要文件的第二数字摘要值;所述安装文件的文件信息包括:安装文件的文件名、安装文件的第三数字摘要值和安装文件的存储路径;
所述装置还包括:
第一文件存储单元,用于在接收所述客户端发送的针对所述待升级软件的升级请求之前,按照所述待升级软件的实际存储目录结构对应的存储路径,存储所述待升级软件的安装文件;
摘要值计算单元,用于计算所述待升级软件的每一安装文件的第三数字摘要值;
第二文件存储单元,用于将所述待升级软件的每一安装文件的文件名、第三数字摘要值与存储路径对应存储至所述第一摘要文件中;
第三文件存储单元,用于将所述第一摘要文件与所述待升级软件的标识对应存储,并计算所述第一摘要文件的第一数字摘要值。
29.一种分布式系统的软件升级系统,其特征在于,所述系统包括客户端和服务器;
所述客户端,用于接收所述服务器发送的针对待升级软件的升级通知;从所述服务器下载第一摘要文件;所述第一摘要文件包括:所述服务器中存储的、所述待升级软件的各个安装文件的文件信息;根据所述第一摘要文件和第二摘要文件中包括的安装文件的文件信息,确定待升级安装文件,所述第二摘要文件包括:所述客户端中存储的、所述待升级软件的各个安装文件的文件信息;以及从所述服务器下载所述待升级安装文件,并使用所述待升级安装文件升级所述待升级软件;
所述服务器,用于向所述客户端发送所述升级通知;接收所述客户端根据所述升级通知发送的针对所述待升级软件的下载请求;将所述待升级软件的所述第一摘要文件发送给所述客户端;接收所述客户端发送的针对所述待升级软件的待升级安装文件的下载请求;将所述待升级安装文件发送给所述客户端。
CN201611108993.XA 2016-12-06 2016-12-06 一种分布式系统的软件升级方法、装置及系统 Pending CN108173888A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611108993.XA CN108173888A (zh) 2016-12-06 2016-12-06 一种分布式系统的软件升级方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611108993.XA CN108173888A (zh) 2016-12-06 2016-12-06 一种分布式系统的软件升级方法、装置及系统

Publications (1)

Publication Number Publication Date
CN108173888A true CN108173888A (zh) 2018-06-15

Family

ID=62526057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611108993.XA Pending CN108173888A (zh) 2016-12-06 2016-12-06 一种分布式系统的软件升级方法、装置及系统

Country Status (1)

Country Link
CN (1) CN108173888A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555579A (zh) * 2024-01-11 2024-02-13 杭州实在智能科技有限公司 基于Pyinstaller平台的软件构建更新方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546246A (zh) * 2011-12-28 2012-07-04 创新科存储技术(深圳)有限公司 一种软件自动升级的方法及系统
CN103095838A (zh) * 2013-01-16 2013-05-08 福州博远无线网络科技有限公司 一种通过下载增量升级包来升级安卓智能手机软件的方法
CN103942058A (zh) * 2013-01-17 2014-07-23 深圳市潮流网络技术有限公司 一种嵌入式电子设备软件升级方法及系统
CN104469409A (zh) * 2014-11-28 2015-03-25 四川长虹电器股份有限公司 智能电视软件差分升级的自动化测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546246A (zh) * 2011-12-28 2012-07-04 创新科存储技术(深圳)有限公司 一种软件自动升级的方法及系统
CN103095838A (zh) * 2013-01-16 2013-05-08 福州博远无线网络科技有限公司 一种通过下载增量升级包来升级安卓智能手机软件的方法
CN103942058A (zh) * 2013-01-17 2014-07-23 深圳市潮流网络技术有限公司 一种嵌入式电子设备软件升级方法及系统
CN104469409A (zh) * 2014-11-28 2015-03-25 四川长虹电器股份有限公司 智能电视软件差分升级的自动化测试方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555579A (zh) * 2024-01-11 2024-02-13 杭州实在智能科技有限公司 基于Pyinstaller平台的软件构建更新方法及系统

Similar Documents

Publication Publication Date Title
US6202207B1 (en) Method and a mechanism for synchronized updating of interoperating software
US8832310B2 (en) Consistent snapshots of dynamic heterogeneously managed data
US9047312B1 (en) System and method for deletion of extraneous delete marker objects
KR101422563B1 (ko) 데이터 패키지의 효율적인 다운로드 방법 및 시스템
EP3143520A1 (en) File service using a shared file access-rest interface
US9917894B2 (en) Accelerating transfer protocols
GB2333865A (en) Synchronised updating of interoperating software
US20170078383A1 (en) Hosted file sync with stateless sync nodes
CN107483241B (zh) 一种在网元升级过程中下载升级镜像版本的方法和装置
US20080281775A1 (en) Method and System for Identifying Automounted File System Resources
US6564232B1 (en) Method and apparatus for managing distribution of change-controlled data items in a distributed data processing system
JP2002007129A (ja) ソフトウェアの更新方法及び更新システム
CN111273863B (zh) 高速缓存管理
CN109150608A (zh) 用于语音对话平台的接口服务升级方法及系统
US6701332B1 (en) Cluster file system multi-volume root support
KR20010050460A (ko) 파일을 최신 버전으로 유지하기 위한 방법, 시스템 및컴퓨터 프로그램 제품
CN110795495A (zh) 数据处理方法、装置、电子设备及计算机可读介质
KR101638689B1 (ko) 클라이언트 단말에 대한 사용자 맞춤형 동기화 서비스 제공 방법 및 시스템
CN108173888A (zh) 一种分布式系统的软件升级方法、装置及系统
US20180225105A1 (en) Mechanism for customizing multiple computing devices
CN110096295B (zh) 基于ReactNative的多模块移动应用的热更新方法及系统
US20120005162A1 (en) Managing Copies of Data Structures in File Systems
JP2003288211A (ja) ネットワーク管理プログラム
CN110674082A (zh) 移除在线文档的方法、装置、电子设备及计算机可读介质
US11016933B2 (en) Handling weakening of hash functions by using epochs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180615

RJ01 Rejection of invention patent application after publication