软件数据储存、升级方法、装置、设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种软件数据存储方法和装置,一种软件升级方法和装置,一种服务器、一种终端设备以及一种存储介质。
背景技术
随着终端技术的不断发展,用户的生活越来越离不开终端设备,如通过平板电脑看书、看视频、玩游戏,通过手机线上、线下购物等。相应的,终端设备中可以安装各种软件程序如应用程序(Application,APP),辅助用户执行所需的各种操作。
软件程序安装在终端设备后,也会不断的迭代更新,以更好的提供功能。在软件程序进行升级时,可以采用全量升级方式,即下载整个安装包进行软件升级,这样有些数据在新、旧版本中是重复的,造成了资源的浪费。
因此还可以采用增量升级方式,即服务器会把旧版本的安装包和新版本的安装包进行二进制比较,得到对应的差分包。终端设备获取到差分包后,采用差分包和本地旧版本的安装包合并,得到新版本的安装包,然后按照该新版本的安装包。
但是,采用增量升级方式时,服务器端需要为每个差异版本生成差分包,版本越高,需要生成的差分包越多,消耗时间,维护版本会越来越复杂,存储空间也会越来越大。
发明内容
本申请实施例所要解决的技术问题是提供一种软件数据存储方法,以减少软件版本升级过程中对资源的消耗。
相应的,本申请实施例还提供了一种软件数据存储装置、一种软件升级方法和装置、一种服务器、一种终端设备和一种存储介质,用以保证上述方法的实现及软件。
为了解决上述问题,本申请实施例公开了软件数据存储方法,包括:针对软件,确定第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本;创建所述差异内容的快照数据;依据所述差异内容的快照数据,对所述软件的第一版本进行存储。
本申请实施例还公开了一种软件的升级方法,包括:接收升级请求,所述升级请求包括版本信息;依据所述版本信息,确定快照数据;依据所述快照数据获取差异内容,生成对应的升级包并发送所述升级包,其中,所述差异内容依据软件不同版本的安装包确定。
本申请实施例还公开了一种软件的升级方法,包括:发送升级请求,所述升级请求包括软件的版本信息;获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件至少两个不同版本的安装包的差异内容的快照数据;在所述软件的安装包对应的存储位置写入所述升级包的数据。
本申请实施例还公开了一种软件的升级方法,包括:检测软件对应已升级版本的安装包出现设定问题后,确定软件升级前的版本;确定所述安装包中已升级版本对应升级数据的存储位置,以及所述升级前的版本对应的数据;将所述升级前的版本对应的数据回滚到对应存储位置,得到升级前的版本的安装包。
本申请实施例还公开了一种软件数据存储装置,包括:差异确定模块,用于针对软件,确定第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本;快照创建模块,用于创建所述差异内容的快照数据;存储模块,用于依据所述差异内容的快照数据,对所述软件的第一版本进行存储。
本申请实施例还公开了一种软件的升级装置,包括:请求接收模块,用于接收升级请求,所述升级请求包括版本信息;快照确定模块,用于依据所述版本信息,确定快照数据;安装包生成模块,用于依据所述快照数据获取差异内容,生成对应的升级包并发送所述升级包,其中,所述差异内容依据软件不同版本的安装包确定。
本申请实施例还公开了一种软件的升级装置,包括:请求发送模块,用于发送升级请求,所述升级请求包括软件的版本信息;升级包获取模块,用于获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件至少两个不同版本的安装包的差异内容的快照数据;升级模块,用于在所述软件的安装包对应的存储位置写入所述升级包的数据。
本申请实施例还公开了一种软件的升级装置,包括:版本查询模块,用于检测软件对应已升级版本的安装包出现设定问题后,确定软件升级前的版本;数据获取模块,用于确定所述安装包中已升级版本对应升级数据的存储位置,以及所述升级前的版本对应的数据;数据回滚模块,用于将所述升级前的版本对应的数据回滚到对应存储位置,得到升级前的版本的安装包。
本申请实施例还公开了一种服务器,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的软件数据存储方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的软件数据存储方法。
本申请实施例还公开了一种服务器,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的软件的升级方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的软件的升级方法。
本申请实施例还公开了一种终端设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的软件数据存储方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的软件数据存储方法。
本申请实施例还公开了一种终端设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的软件数据存储方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的软件数据存储方法。
本申请实施例还公开了一种用于终端设备的操作系统,包括:升级请求单元,发送升级请求,所述升级请求包括软件的版本信息;升级单元,升级包获取模块,用于获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件至少两个不同版本的安装包的差异内容的快照数据;在所述软件的安装包对应的存储位置写入所述升级包的数据。
与现有技术相比,本申请实施例包括以下优点:
在本申请实施例中,可确定软件第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本,然后依据所述差异内容创建差异内容的快照数据,再依据所述差异内容的快照数据,对所述软件的第一版本进行存储,从而减少对重复数据的存储,减少对服务端存储空间的占用,减少资源的消耗。
附图说明
图1是本申请实施例的一种软件管理示意图;
图2是本申请实施例中存储一款软件各版本数据的示意图;
图3是本申请实施例中软件升级示意图;
图4是本申请实施例中软件各版本快照示意图;
图5是本申请实施例中软件的全量安装包处理示意图;
图6是本申请实施例中软件升级回滚的示意图;
图7是本申请的一种软件数据存储方法实施例的步骤流程图;
图8是本申请实施例中软件升级存储示意图;
图9是本申请的一种软件升级方法实施例中服务端的步骤流程图;
图10是本申请的一种软件升级方法实施例终端设备侧的步骤流程图;
图11是本申请实施例中软件升级中数据迁移示意图;
图12本申请的一种软件版本回退方法实施例的步骤流程图;
图13是本申请实施例中一种示例的软件系统架构示意图;
图14是本申请实施例中软件版本回滚的数据处理示意图;
图15是本申请的一种软件数据存储装置实施例的结构框图;
图16是本申请的另一种软件数据存储装置实施例的结构框图;
图17是本申请的一种软件升级装置实施例的结构框图;
图18是本申请的一种软件升级装置可选实施例的结构框图;
图19是本申请的另一种软件升级装置实施例的结构框图;
图20是本申请的另一种软件升级装置可选实施例的结构框图;
图21是本申请的又一种软件升级装置实施例的结构框图;
图22是本申请一实施例提供的电子设备的硬件结构示意图;
图23是本申请另一实施例提供的电子设备的硬件结构示意图;
图24是本申请一实施例提供的操作系统示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例中,终端设备指的是具有终端操作系统的设备,这些设备可支持音频、视频、数据等方面的功能,包括移动终端如智能手机、平板电脑、可穿戴设备,也可以是智能电视、个人计算机等设备。操作系统如YunOS、IOS、Android等。
一款软件发布后,该软件通常会不断的维护、更新,从而开发出新版本,因此服务端中也会维护各版本的软件,从而对软件进行备份存储,也可便于用户下载、更新该软件。本申请实施例中,服务端可对软件进行管理,包括维护各版本软件的安装包,并提供用户对安装包的下载、更新等。
其中,服务端对软件的安装包进行存储,由于软件的更新迭代等,因此可存储该软件各版本的安装包。通常不同版本的安装包中,部分数据是相同的,部分数据是不同的,对相同数据进行重复存储会导致资源的浪费,因此本申请实施例对不同版本安装包的差异内容即不同数据进行存储。其中,软件的每个版本对应一个版本号。
参照图1,示出了本申请实施例的一种软件管理示意图。
对于一款软件,服务端的存储空间中可存储该软件的安装包,以及安装包的快照数据。其中,快照数据是关于指定数据集合的一个完全可用的拷贝,该拷贝包括相应数据在某个时间点(如拷贝开始的时间点)的映像,在技术层面上,快照数据为指向保存在存储设备中的数据的引用标记或指针,快照数据类似于安装包的目录表,其可以被计算机作为完整的数据备份来对待。
在软件进行升级更新时,服务端会存储软件升级版本的安装包,为了减少数据量,可以采用差量存储的方式,软件的版本包括第一版本和第二版本,其中,第一版本为第二版本的升级版本。则服务端存储有第一版本的安装包以及该安装包的快照数据,软件的开发人员发布第二版本的安装包后,在步骤102中,服务端可可以读取第二版本的安装包,确定第一版本的安装包和第二版本的安装包的差异内容,然后在存储空间中写入该差异内容,其中,差异内容指的是两个版本安装包中数据不同的内容。然后在步骤104中基于差异内容创建对应的快照数据,如指向该差异内容的标记或指针等快照。从而可依据所述差异内容的快照数据,对所述软件的第一版本进行存储,实现对软件升级包的存储。从而仅存储两个版本间差异的内容,减少服务端存储的数据量,并且基于快照数据能够便捷的查询差异内容。
如图2所示为服务端存储一款软件各版本数据的示例,其中,服务端可存储多款软件,如软件1、软件2、软件3等,其中以软件2为例,对于软件2对应各版本的安装包,其中版本1为初始版本,版本2为版本1的升级版,版本3为版本2的升级版。其中,对于软件的安装包可以划分区间进行存储,区间为安装包数据的存储分段,每个区间的数据量一定,如128字节为一个区间,则0-127为区间1、128-255为区间2等。
服务端在存储版本1即初始版本的安装包时,会存储该安装包的全量数据,对应生成各区间的快照数据,如图2中该版本1的安装包对应8个区间分别为1-8。在发布版本2后,服务端读取版本2的安装包,写入版本1和版本2的差异内容,其中,所述差异内容所在的区间为4、6、7,则可创建区间4、6、7对应的快照数据,并对快照数据进行存储,从而在服务端存储差异内容并记录区间4、6、7及其快照数据。
在发布版本3后,服务端读取版本3的安装包,写入版本2和版本3的差异内容,其中,所述差异内容所在的区间为1、8,则可创建区间1、8对应的快照数据,并对快照数据进行存储,在服务端存储差异内容并记录区间1、8及其快照数据。
从而实现对软件各版本升级包的存储,便于基于快照数据查询区间,确定软件版本升级的内容。
其中,针对软件确定第一版本的安装包和第二版本的安装包的差异内容时,可读取第一版本的安装包和第二版本的安装包的差异内容,如读取第一版本的安装包和第二版本的安装包,比较两个安装包的差异内容,然后将所述差异内容写入到内存空间并记录相应的物理地址,并且,确定所述差异内容的逻辑地址。其中,安装包数据按照区间进行存储,因此差异内容可存储到一个或多个区间,则可确定差异内容所在区间的逻辑地址,并将所述逻辑地址和差异内容对应的物理地址关联,便于基于区间的逻辑地址查询物理地址,从而能够获取相应的数据。
对于差异内容对应快照数据的创建,由于差异内容按照区间存储,因此可确定所述差异内容所在的至少一个区间,创建差异内容所在区间对应的快照数据。从而基于快照编号可查询相应的区间,获取安装包的数据。其中,可确定出差异内容所在区间的快照编号,并将所述快照编号和所述区间对应的逻辑地址关联,生成快照数据,其中,可将差异内容所在区间的快照编号重定向为该差异内容对应的逻辑地址,如生成指向区间对应逻辑地址的指针,从而得到对应的快照数据等。因此可基于快照编号可确定出区间的逻辑地址,进而获取区间存储的数据。如128~256区间原始数据的逻辑块编号为N,物理存储地址为N’,快照编号指向该逻辑块N的逻辑地址;升级后128~256区间对应升级数据的逻辑块编号为M,物理存储地址为M’,则将快照编号指向该逻辑块M的逻辑地址。从而后续对于128~256区间的数据,可基于逻辑块M确定。
在生成快照数据后,可依据快照数据对软件的第一版本进行存储,其中可在软件的第一版本的索引中记录所述快照编号,从而基于索引中的快照编号可查询到区间,进而得到安装包中对应区间的数据。
通过上述步骤,可实现对软件对应升级版安装包的差量存储,包括存储第一版本和第二版本的差异内容,并创建差异内容的快照以便于查询差异内容,从而便于对软件的安装、升级等。
参照图3,示出了本申请实施例中软件升级示意图。
终端设备10可安装软件,服务端20中存储有软件各版本的安装包,终端设备10中安装的软件可基于服务端20进行升级。
步骤302,终端设备10中软件要升级时,可发出升级请求给服务端20。其中,软件可在运行时自动检测版本,确定是否需要升级,或者基于服务端的软件版本更新消息,确定本端是否需要升级。
步骤304,服务端依据升级请求中的版本信息,确定快照数据。
其中,该升级请求中包括版本信息。其中版本信息为待升级软件对应的版本信息,如包括终端设备当前安装版本的版本号。版本信息也可包括升级版本的版本号,或者由服务端查询升级版本的版本号。然后可依据升级版本和安装版本确定出差异内容的快照数据,即依据升级版本的版本号和安装版本的版本号,确定版本差值;依据所述版本差值获取对应差异内容的快照数据。
若所述版本差值为1,则从所述软件的升级版本的索引中查询快照编号,获取快照编号对应差异内容的快照数据。如图2示例中版本1升级为版本2时,版本差值为1,因此可从版本2的索引中获取快照编号4、6、7。
若版本差值大于1,则从所述升级版本的版本号开始,查询到目标版本的版本号,从升级版本的索引到目标版本的索引中依次查询快照编号,获取快照编号对应差异内容的快照数据,其中,所述目标版本的版本号与所述安装版本的版本号的版本差值为1。如图2示例中版本1升级为版本3时,版本差值为2,则目标版本为版本2,如图4所示,可从版本3的索引中获取快照编号1、8,再向前查询版本2的索引,获取快照编号4、6、7,则对应快照编号为1、4、6、7、8。本申请实施例中,版本差值依据版本号确定,两个相邻版本的版本号差值为1。其中,向前查询指的是向低版本查询。
步骤306,服务端依据所述快照数据获取差异内容,生成对应的升级包。
可依据该快照数据确定逻辑地址,再依据逻辑地址确定物理地址,从而获取对应差异内容的数据,生成升级版本的升级包,该升级包是依据差异内容生成的差量升级包。其中,可依据所述快照编号确定对应区间的逻辑地址;依据所述逻辑地址确定所述差异内容的物理地址,从所述物理地址中获取数据生成对应的升级包。如上例快照编号为4、6、7,则确定对应区间4、6、7的逻辑地址,再依据该逻辑地址确定数据的物理地址,从而物理地址中获取数据生成版本1升级为版本2对应的升级包。又如图4对应示例快照编号为1、4、6、7、8,则确定对应区间1、4、6、7、8的逻辑地址,再依据该逻辑地址确定数据的物理地址,从而物理地址中获取数据生成版本1升级为版本3对应的升级包。其中,升级包中还记录有快照数据,从而便于终端设备查询差异数据所在的区间,便于升级。
步骤308,服务端发送所述升级包给终端设备。
步骤310,终端设备在所述软件的安装包对应的存储位置写入所述升级包的数据。
终端设备在获取到升级包后,可依据升级包所需升级数据对应的区间进行升级,将相应区间的数据替换为升级包的数据可完成升级。因此可依据所述快照数据,确定快照编号对应的区间;从所述软件的安装包中查找所述区间对应的存储位置,将所述升级包中对应数据写入到所述存储位置。如上例中版本1升级为版本2时,确定对应快照编号为4、6、7,从而该软件安装包需要升级区间4、6、7的数据,然后基于区间4、6、7的逻辑地址确定物理地址,依据该物理地址确定存储位置,将升级包中对应数据写入到对应存储位置中。
其中,为了防止版本升级过程中由于错误等原因导致升级失败,升级版本出现无法使用的问题,还可在区间对应存储位置写入数据前,对该存储位置的数据进行迁移,如按照所述区间申请存储位置,将所述区间对应存储位置上所述安装包的数据复制到申请的存储位置中。其中,可按照区间确定所需申请存储空间的数据量,然后申请相应数据量的存储空间并确定存储位置,将安装包中所述区间对应存储位置的数据复制到申请的存储位置中,从而完成对区间中数据的迁移,便于后续版本数据的回滚。
本申请实施例中,有些软件升级过程中第一版本的安装包的数据量大于第二版本安装包的数据量,因此对于多出的数据,可在存储后申请相应的区间,从而在升级时,对于软件的安装包不具有所述快照编号对应的区间,则申请所述区间对应的存储位置;将所述升级包中所述区间对应的数据存储到所述区间对应的存储位置中,并在所述软件的安装包中记录所述区间和存储位置。
本申请实施例中,有时可能需要服务端提供全量的安装包,例如在初始安装软件、软件损坏等情况下,因此服务端也可提供软件的全量安装包。其中,接收针对全量安装包的数据请求;依据全量安装包对应的版本号,采用各版本对应的快照数据构成全量安装包。即可从数据请求中确定所需软件对应的版本号,然后依据该版本号查询相应版本的快照数据,直到查询到所有区间的快照数据,可构成全量安装包。
其中,可从所述全量安装包的版本号开始向前查询到设定版本,从所述全量安装包对应版本的索引到所述设定版本的索引中依次获取快照数据的快照编号,其中,所述设定版本存储的快照数据为全量的快照数据;依据所述快照编号确定快照数据对应区间的逻辑地址,依据所述逻辑地址确定物理地址;从所述物理地址中获取数据,生成全量安装包。软件各版本升级时,存储差异内容,记录差异内容所在区间,以及区间对应的快照编号,因此对于一个版本软件的全量安装包,需要通过一个或多个版本获取安装包数据。如图2对应示例中,对于版本3的全量安装包如图5所示,可基于版本3的索引确定快照编号1、8,从而获取对应区间1、8的数据,然后向前查询版本2的索引,确定快照编号4、6、7,从而获取区间4、6、7的数据,再向前查询版本1的索引,确定排除上述已获取快照编号之后,剩余的快照编号为2、3、5,从而获取区间2、3、5的数据,然后将上述数据构成全量安装包。其中,本实施例从全量安装包的版本号开始向前查询到设定版本,所述设定版本为能够获取到全量数据的版本,具体可以在查询过程中确定,如查询到版本2就获取了所有区间的数据,则无需继续查询版本1。如上例中版本3的升级版本为版本4,版本4的快照编号为2、3、5,即版本4差异数据对应区间为2、3、5,则对于版本4的全量安装包,查询到版本2即可获取区间1-8的数据,构成全量安装包,就从而无需查询版本1。
本申请实施例中,有时版本升级后,升级版本的软件可能出现崩溃、卡死等问题,导致升级版本的软件无法使用,则还可通过回滚,将软件由升级版本回退为升级前版本。
参照图6,示出了本申请实施例中软件升级回滚的示意图。
在步骤602中,检测软件对应已升级版本的安装包出现设定问题后,查询软件升级前的版本。其中设定问题为使软件无法正常运行的问题,例如启动后崩溃、闪退、卡死等,在出现这些导致用户无法使用软件的问题后,可确定该软件升级前的版本。如当前已升级版本为版本3,升级前的版本为版本1。然后在步骤604中,可确定所述安装包中已升级版本对应升级数据的存储位置,以及所述升级前的版本对应的迁移数据。基于已安装版本对应快照编号确定升级数据所在的区间,然后确定该区间对应的存储位置。再确定升级前的版本对应数据迁移的存储位置,从该存储位置中获取迁移数据。然后在步骤608中将迁移数据回滚到对应存储位置,可按照区间将迁移数据写入到对应存储位置中,从而回滚到升级前的版本。
从而通过回滚操作可将已安装版本回退为升级前的版本,如图4的示例中版本1升级为版本3,即已安装版本为版本3,升级前的版本为版本1,则可确定版本1升级为版本3时,对应快照编号为1、4、6、7、8,确定对应区间1、4、6、7、8的存储位置,以及区间1、4、6、7、8升级时版本1中数据迁移的存储位置,从该存储位置中获取迁移数据,将迁移数据写入到区间1、4、6、7、8的存储位置,从而回退为版本1。从而通过快照编号确定要回滚的数据,将要回滚的数据重新迁移回初始空间,不再需要和服务端交互,减少了终端设备流量消耗,并且提高了数据处理效率。
本申请实施例,在服务端存储版本升级的安装包时,就存储差异内容及对应的快照数据,从而减少对重复数据的存储,减少对服务器存储空间的占用,并且可减少版本维护的复杂度;在软件升级时,可以依据升级版本,获取相应版本对应的快照数据,从而采用快照数据和对应区间的数据生成升级包,无需服务器通过完整安装包的比较得到差量包,减少资源的消耗;终端设备依据该升级包获取快照数据及安装包的数据,然后写入到该软件安装包对应的存储位置中,完成对软件的升级,减少软件升级过程中的数据读写,减少对资源的消耗。
参照图7,示出了本申请的一种软件数据存储方法实施例的步骤流程图。
步骤702,针对软件,确定第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本。
软件开发出开发软件新版本后,将新版本作为第一版本,可以在服务端发布该软件第一版本的安装包,而服务端中存储有该软件第二版本的安装包,第一版本为第二版本的升级版本,如版本2为版本1的升级版本,版本3为版本2的升级版本。可在确定第一版本的安装包和第二版本的安装包的差异内容,将其写入到存储空间。其中,所述针对软件,确定第一版本的安装包和第二版本的安装包的差异内容,包括:针对软件,读取第一版本的安装包和第二版本的安装包的差异内容;将所述差异内容写入物理地址对应的内存空间中,并确定所述差异内容的逻辑地址。即读取第一版本的安装包和第二版本的安装包,确定两者的差异内容,再将差异内容写入到相应的内存空间并确定物理地址,以及确定差异内容的逻辑地址,其中,本实施例中,安装包的数据按照区间进行分段存储,因此可确定差异内容所在分段即区间的逻辑地址,并按照区间建立逻辑地址和对应差异内容所存储的物理地址的关联。
步骤704,创建所述差异内容的快照数据。
可基于存储差异内容的区间创建快照数据,即确定所述差异内容所在的至少一个区间,创建所述区间对应的快照数据。所述创建所述区间对应的快照数据,包括:确定所述区间对应的快照编号,并将所述快照编号和所述区间对应的逻辑地址关联,生成快照数据。其中,每个区间可对应一个编号,,基于该编号确定该区间对应的快照编号,其中,快照编号为该快照的唯一标识,可由数字、字符或其组合构成。将快照编号和所述区间对应的逻辑地址关联,生成快照数据,从而基于快照标号可确定逻辑地址,基于逻辑地址可确定物理地址,从而能够获取物理地址对应存储的数据。
步骤706,依据所述差异内容的快照数据,对所述软件的第一版本进行存储。
对于上述各区间对应的快照编号,可在所述软件的第一版本的索引中记录所述快照编号。从而基于索引可确定快照编号,进而确定出差异内容所在区间,获取差异内容对应的数据。
本申请实施例,在发布第一版本时,对于第一版本的安装包写入差异内容的数据,并记录差异内容所在区间对应的快照编号。如上述图2的示例中,在版本2发布时,会写入和版本1对应差异内容的区间的数据,即写入差异内容所在区间4、6、7的数据,并创建快照编号4、6、7,其它区间的数据相同,无需重复写入,也无需记录快照编号;同理,在版本3发布时,对比版本1中区间(1、2、3、5、8)和版本2中区间(4、6、7)的安装包数据,区间1、8的数据发生了变化,则版本3会写入差异内容所在区间1、8的数据,并创建快照编号,完成对版本3安装包的存储。其中,写入的原则是ROW(Redirect On Write,重定向写入)。
如图8所示的示例中,服务端中软件A对应128~256区间,第二版本的安装包数据的逻辑块编号为N,物理存储地址为N’,该128~256区间的快照数据写入的地址为逻辑块N的地址。软件A发布新版本时,通过比对确定该128~256区间的数据发生了变更,因此升级的第一版本对应安装包数据在128~256区间的逻辑块编号为M,对应物理存储地址为M’,将该128~256区间的快照数据重定向写入到逻辑块M的地址,并向索引节点(Inode)添加快照数据“快照1 128-256”的记录。
本申请实施例中,版本更新时按照区间比对不同版本的安装包数据,从而写入第一版本和第二版本的差异内容及其快照数据,因此快照数据的写入仅影响到修改的块即修改的区间,如果小于或者大于原始块(区间),则会减少存储块或者增加存储块,不会影响到其它的块,文件读取时根据索引(Inode)进行读取。从而在版本发布时,以文件字节或者内容区间形成版本间的差异内容进行存储,不需要存储大量的全量版本,或者不同版本之间的全组合包(如全量安装包、增量安装包等),在升级时只需要读取两个版本之间的差异内容即可。
参照图9,示出了本申请的一种软件升级方法实施例中服务端的步骤流程图。
步骤902,接收升级请求,所述升级请求包括版本信息。
客户端要升级软件时,可以发送升级请求,服务器接收到升级请求后,可从升级请求中获取版本信息,该版本信息包括:安装版本的版本号。若要进行软件的升级,还需要获取升级版本的版本号,该升级版本的版本号可携带在升级请求中,也可由服务端查询该软件的版本,确定对应升级版本的版本号,例如将该软件最高版本的版本号作为升级版本的版本号,或者将安装版本的下一版本的版本号作为升级版本的版本号等。
步骤904,依据所述版本信息,确定快照数据。
其中,可依据升级版本的版本号和安装版本的版本号,确定版本差值;依据所述版本差值获取对应的快照数据。可确定升级版本和安装版本中间间隔了几个版本,升级包的数据需要从这些版本中确定差异内容对应的快照数据。其中,可通过快照差异读取接口获取快照数据。其中,若所述版本差值为1,则从所述软件的升级版本的索引中查询快照编号。若版本差值大于1,则从所述升级版本的版本号开始,查询到目标版本的版本号,从升级版本的索引到目标版本的索引中依次查询快照编号,其中,所述目标版本的版本号与所述安装版本的版本号的版本差值为1。
其中,若所述版本差值为1,则从所述软件的升级版本的索引中查询快照编号。如图2示例中版本1升级为版本2时,版本差值为1,因此可从版本2的索引中获取快照编号4、6、7。若版本差值大于1,则从所述升级版本的版本号开始,向前查询到目标版本的版本号,从升级版本的索引到目标版本的索引中依次查询快照编号,其中,所述目标版本的版本号与所述安装版本的版本号的版本差值为1。如图2示例中版本1升级为版本3时,版本差值为2,则目标版本为版本2,如图4所示,可从版本3的索引中获取快照编号1、8,再向前查询版本2的索引,获取快照编号4、6、7,则对应快照编号为1、4、6、7、8。
本申请实施例中,升级过程中快照数据可从高版本向低版本查询,实际处理中,也可以从低版本向高版本查询,即从安装版本的下一版本开始向高版本查询直到达到升级版本。由于安装版本和升级版本之间可能差距多个版本,因此有些快照数据可能存在冲突,如对于一个区间可能存在多于一个快照数据,则以高版本为基准。如高版本向低版本查询时,以区间首次获取的快照数据为准,而从低版本向高版本查询时,以区间最后获取的快照数据为准。
步骤906,依据所述快照数据获取差异内容,生成对应的升级包,其中,所述差异内容依据软件不同版本的安装包确定。
在获取到快照数据后,可基于快照数据获取的差异内容,其中,可依据所述快照编号确定对应区间的逻辑地址;依据所述逻辑地址确定所述差异内容的物理地址,从所述物理地址中获取数据;采用获取的数据和快照编号生成对应的升级包。基于快照编号确定关联的逻辑地址,依据逻辑地址确定对应数据的物理地址,从该物理地址中获取数据,然后获取的数据和快照编号生成对应的升级包。如上例快照编号为4、6、7,则确定对应区间4、6、7的逻辑地址,再依据该逻辑地址确定数据的物理地址,从而物理地址中获取数据生成版本1升级为版本2时对应的升级包。又如图4对应示例快照编号为1、4、6、7、8,则确定对应区间1、4、6、7、8的逻辑地址,再依据该逻辑地址确定数据的物理地址,从而物理地址中获取数据生成版本1升级为版本3时对应的升级包。其中,升级包中还记录有快照数据,从而便于终端设备查询差异数据所在的区间来进行升级。
步骤908,发送所述升级包。
本申请实施例中,在软件升级过程中,不用再通过两个版本对应全量安装包的比较确定升级包,而是根据版本号直接能够读取到差异内容即增量的快照数据,系统性能得到了提升明显,并且大大减少了IO的次数。
本申请实施例中,终端设备有时可能还需要下载全量的安装包,例如首次安装该软件,又如软件被卸载后重新安装,又如终端设备中软件的安装包损坏等,因此服务端还可提供全量安装包的下载,接收针对全量安装包的数据请求;依据全量安装包对应的版本号,采用各版本对应的快照数据构成全量安装包。可从数据请求中确定所需软件对应的版本号,然后依据该版本号查询相应版本的快照数据,直到查询到所有区间的快照数据,即可构成全量安装包。与升级包类似,全量安装包也可以从高版本向低版本查询,或者从低版本向高版本查询,直到获取到每个区间最新的快照数据,即对于各区间冲突的快照数据,以高版本对应区间的快照数据为准。
以从高版本向低版本为例,可从所述全量安装包的版本号开始查询到设定版本,从所述全量安装包对应版本的索引到所述设定版本的索引中依次获取快照数据的快照编号,其中,所述设定版本存储的快照数据为全量的快照数据;依据所述快照编号确定快照数据对应区间的逻辑地址,依据所述逻辑地址确定物理地址;从所述物理地址中获取数据,生成全量安装包。软件各版本升级时,存储差异内容,记录差异内容所在区间,以及区间对应的快照编号,因此对于一个版本软件的全量安装包,需要通过一个或多个版本获取安装包数据。如图2对应示例中,对于版本3的全量安装包如图5所示,可基于版本3的索引确定快照编号1、8,从而获取对应区间1、8的数据,然后向前查询版本2的索引,确定快照编号4、6、7,从而获取区间4、6、7的数据,再向前查询版本1的索引,确定排除上述已获取快照编号之后,剩余的快照编号为2、3、5,从而获取区间2、3、5的数据,然后将上述数据构成全量安装包。其中,本实施例从全量安装包的版本号开始向前查询到设定版本,所述设定版本为能够获取到全量数据的版本,具体可以在查询过程中确定,如查询到版本2即获取所有区间的数据,则无需继续查询版本1。如上例中版本1-3后又发布版本4,版本4与版本3差异内容对应区间的快照编号为2、3、5,则对于版本4的全量安装包,查询到版本2即可获取区间1-8的数据,构成全量安装包,从而无需查询版本1。
本申请实施例中,对于全量安装包的下载,可以提供全量包读取接口,通过该接口即可从高版本向低版本查询,或者从低版本向高版本,来获取各区间对应的快照数据,组合全量安装包。从而终端设备可以安装该软件。
相应终端设备侧软件升级的处理过程如下:
参照图10,示出了本申请的一种软件升级方法实施例终端设备侧的步骤流程图。
步骤1002,发送所述升级请求,所述升级请求包括软件的版本信息。
步骤1004,获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件不同版本的安装包的差异内容的快照数据。
终端设备中软件要进行升级时,可以发送请求给服务器,请求中可携带版本信息,该版本信息可包括终端设备中该软件安装版本的版本号,还可添加需要升级的升级版本的版本号。终端设备可以从服务器接收升级版本的升级包。所述升级包括软件不同版本的安装包的差异内容的快照数据和软件不同版本的差异内容的安装包数据。
步骤1006,在所述软件的安装包对应的存储位置写入所述升级包的数据。
可依据所述快照数据,确定快照编号对应的区间;从所述软件的安装包中查找所述区间对应的存储位置,将所述升级包中对应数据写入到所述存储位置。其中,依据快照编号确定升级数据对应所在的区间,然后确定该软件的安装包中所述区间对应逻辑地址,再依据逻辑地址确定物理地址即存储位置的地址,将升级包中的数据写入到对应的存储位置中。如上例中版本1升级为版本2时,确定对应快照编号为4、6、7,从而该软件安装包需要升级区间4、6、7的数据,然后基于区间4、6、7的逻辑地址确定物理地址,依据该物理地址确定存储位置,将升级包中对应数据写入到对应存储位置中。本申请实施例中,终端设备可提供写入差异接口,写入原则采用COW(Copy on write,写时拷贝)。
其中,为了防止版本升级过程中由于错误等原因导致升级失败,升级版本出现无法使用的问题,因此还可在区间对应存储位置写入数据前,对该存储位置的数据进行迁移,可按照所述区间申请存储位置,将所述区间对应存储位置上所述安装包的数据复制到申请的存储位置中。如按照区间确定所需申请存储空间的数据量,然后相应数据量的存储空间并确定存储位置,将安装包中所述区间对应存储位置的数据复制到申请的存储位置中,从而完成对区间中数据的迁移,便于后续版本数据的回滚。其中,每个快照编号对应一个区间,每个区间对应存储数据量是已知的,因此可基于区间的数量确定所需空间的大小,然后在终端设备中申请相应的数据空间,再将安装包中各区间对应存储位置上存储的安装版本的数据复制到该申请的数据空间中,完成对安装版本中需要修改部分数据的迁移。将升级包的数据写入到所述存储位置,即覆盖该存储位置上原来的数据。
针对上述图4的示例中,版本1升级为版本3,则如图11所示,版本3的升级包中快照编号为1、4、6、7、8,终端设备中安装的版本1对应快照编号为1-8,升级后,版本3替换快照编号为1、4、6、7、8对应区间的数据,而版本1对应该快照编号为1、4、6、7、8的区间的原始数据迁移到申请的空间中。
通过上述对安装版本中数据的迁移,可实现对安装版本的备份,从而在需要时回滚到升级前的版本即备份的安装版本。
本实施例中,为便于理解版本回滚,在软件升级后,将升级后的版本称为已升级版本,升级前的版本仍然称为升级前的版本。相对于上例的升级过程,则升级版本对应已升级版本,安装版本对应升级前的版本。
参照图12,示出了本申请的一种软件版本回退方法实施例的步骤流程图。
步骤1202,检测软件对应已升级版本的安装包出现设定问题后,确定软件升级前的版本。
该设定问题指的是使得软件无法正常运行的问题,例如启动后崩溃、闪退、卡死等,在出现这些导致用户无法使用软件的问题后,可确定该软件升级前的版本。如当前已升级版本为版本3,升级前的版本为版本1。
步骤1204,确定所述安装包中已升级版本对应升级数据的存储位置,以及所述升级前的版本对应的迁移数据。
可基于已安装版本对应快照编号确定升级数据所在的区间,然后确定该区间对应的存储位置。再确定升级前的版本对应数据迁移的存储位置,从该存储位置中获取迁移数据。其中,可依据已升级版本安装包所记录升级的快照编号,确定本次升级中升级数据所在的区间,如依据快照编号确定对应区间的逻辑地址,再查询逻辑地址对应的物理地址,从而得到升级数据的存储位置。并且依据该快照编号确定对应区间的迁移数据的存储位置,从该存储位置中获取迁移数据。
步骤1206,将所述迁移数据回滚到对应存储位置,得到升级前的版本的安装包。
可按照区间将迁移数据写入到对应存储位置中,从而回滚到升级前的版本。
如图4的示例中版本1升级为版本3,即已安装版本为版本3,升级前的版本为版本1,则可确定版本1升级为版本3时,对应快照编号为1、4、6、7、8,确定对应区间1、4、6、7、8的存储位置,以及区间1、4、6、7、8升级时版本1中数据迁移的存储位置,从该存储位置中获取迁移数据,将迁移数据写入到区间1、4、6、7、8的存储位置,从而回退为版本1。从而通过快照编号确定要回滚的数据,将要回滚的数据重新迁移回初始空间,不再需要和服务端交互,减少了终端设备流量消耗,并且提高了数据处理效率。
如图13所示的一种示例的软件系统架构示意图。服务端中采用版本服务器对软件进行管理。则版本服务器包括:版本发布单元1302、第一快照单元1304、第一版本升级单元1306和第一文件系统单元1308。移动终端包括软件管理单元1312、第二文件系统单元1314、第二快照单元1316和第二版本升级单元1318。
软件完成版本更新后,可上传到服务器的版本发布单元1302,第一快照单元1304依据版本发布单元1302确定差异内容以及快照数据,然后存储到第一文件系统单元1308中,该第一文件系统单元1308可存储各软件各版本的安装包。
终端设备中通过第二文件系统1314存储各软件的安装包,通过软件管理单元1312对软件进行管理,确定更新等。从而在需要更新时,可通过第二版本升级单元1316发送请求给服务器的第一版本升级单元1306,第一版本升级单元1306通过第一快照单元1304从第一文件系统单元1308中获取升级包,然后传输给终端设备的第二版本升级单元1318。
终端设备的第二版本升级单元1318可将升级包通过第二快照单元1316写入到第二文件系统单元1314中,从而实现对软件的更新,并在更新后反馈给软件管理单元1312。
本申请实施例中,对应于图11,升级后,版本3替换快照编号为1、4、6、7、8对应区间的数据,而版本1对应该快照编号为1、4、6、7、8的区间的原始数据迁移到申请的空间中。则后续终端设备中运行该软件时,软件访问文件系统,文件系统会从版本3对应安装包中获取数据,如图14所示,迁移到申请空间的版本1中数据在升级后不访问。在需要退回版本时可回滚该迁移数据。即在升级后软件访问的是最高版本对应的内容区间的数据,使得升级后的软件常用常新。
从而本申请实施例可基于快照的版本传输,在传输规模上,粒度精确到存储块的差异内容,具有更优的性能。
以旧版本包128M,新版本包128M,有64M存在差异,每个I/O读取1M为例:
现有技术在升级时版本服务器读取新、旧版本包,需要(128M+128M)/1M=256次I/O,生成差量包需要64次I/O;终端设备读取读取旧版本包128次I/O,采用旧版本和差量包生成新安装包需要128次I/O,重新安装还需要128次I/O,因此现有升级总共需要:256+128*3+64=704次I/O。
而本申请实施例升级时,版本服务器生成升级包直接读取差异部分,因此只需要64次I/O,手机端接收升级包生成新版本也只需要64+64=128次I/O,总共需要I/O为192。
从而相对现有方式效率提示:t=1–(192/704)=72%。终端设备中软件升级时,若每个IO对应单位时间,则升级时间提升1-(64/448)=85%
相应的,若移动终端中保留升级之前各版本的快照数据,即不删除中间快照数据,则版本回退就不需要和服务端进行交互,而是直接读取保留的快照数据,从而100%节省传输流量。
本申请实施例中,通过基于目录的快照实现对软件发布和软件升级的管理,不需要单独维护版本列表和差分包列表,不需要为每个差异版本生成差分包;版本服务器接收升级请求后,根据快照版本的差异读取每个文件差异内容,粒度可以到字节,传输减少了流量消耗,不需要根据新旧版本的比较生成差分包;终端设备接收到升级包后,按照差异内容写入系统,直接形成升级后的版本,不需要根据新旧版本再重新生成安装包,减少了时间上和IO的消耗;终端设备快照版本能够有助于版本的回退,可以维护少量快照版本,如果更新失败或者版本回退能够快速本地的回退版本,不需要再向服务器申请安装包;基于快照的升级,可不再维护版本号信息,只需要将升级的内容按照版本服务器的原则写入,版本服务器会根据快照号自动维护类似版本管理的功能。
本申请实施例基于快照的软件升级系统,提升服务器端版本发布性能,减少存储内容,提高获取差异版本的读取速度,提升手机端版本升级的速度;而且,基于块的快照提供差量接口,最小化版本差异,减少传输内容,提升用户体验;快照保持云端一体的数据的一致性,方便版本发布管理。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
在上述实施例的基础上,本实施例还提供了一种软件数据存储装置,可以软件于服务器等电子设备中。
参照图15,示出了本申请的一种软件数据存储装置实施例的结构框图,具体可以包括如下模块:
差异确定模块1502,用于针对软件,确定第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本。
快照创建模块1504,用于创建所述差异内容的快照数据。
存储模块1506,用于依据所述差异内容的快照数据,对所述软件的第一版本进行存储。
综上,针软件可确定第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本,然后依据所述差异内容创建差异内容的快照数据,再依据所述差异内容的快照数据,对所述软件的第一版本进行存储,从而减少对重复数据的存储,减少对服务端存储空间的占用,减少资源的消耗。
参照图16,示出了本申请的另一种软件数据存储装置实施例的结构框图,具体可以包括如下模块:
差异确定模块1502,用于针对软件,确定第一版本的安装包和第二版本的安装包的差异内容,其中,所述第一版本为第二版本的升级版本。
快照创建模块1504,用于创建所述差异内容的快照数据。
存储模块1506,用于依据所述差异内容的快照数据,对所述软件的第一版本进行存储。
其中,所述差异确定模块1502,包括:差异读取子模块15022和差异写入子模块15024,其中:
所述差异读取子模块15022,用于针对软件,读取第一版本的安装包和第二版本的安装包的差异内容。
所述差异写入子模块15024,用于将所述差异内容写入物理地址对应的内存空间中,并确定所述差异内容的逻辑地址。
所述差异写入子模块15024,用于按照所述差异内容确定至少一个区间的逻辑地址,将所述逻辑地址和差异内容对应的物理地址关联。
所述快照创建模块1504,用于确定所述差异内容所在的至少一个区间,创建所述差异内容所在区间对应的快照数据。
所述快照创建模块1504,用于确定所述差异内容所在区间对应的快照编号,并将所述快照编号和所述差异内容所在区间对应的逻辑地址关联,生成快照数据。
所述存储模块1506,用于在所述软件的第一版本的索引中记录所述快照编号。
参照图17,示出了本申请的一种软件的升级装置实施例的结构框图,具体可以包括如下模块:
请求接收模块1702,用于接收升级请求,所述升级请求包括版本信息。
快照确定模块1704,用于依据所述版本信息,确定快照数据。
安装包生成模块1706,用于依据所述快照数据获取差异内容,生成对应的升级包并发送所述升级包,其中,所述差异内容依据软件不同版本的安装包确定。
参照图18,示出了本申请的一种软件的升级装置可选实施例的结构框图,具体可以包括如下模块:
请求接收模块1702,用于接收升级请求,所述升级请求包括版本信息;以及,接收针对全量安装包的数据请求。
快照确定模块1704,用于依据所述版本信息,确定快照数据.
安装包生成模块1706,用于依据所述快照数据获取差异内容,生成对应的升级包并发送所述升级包,其中,所述差异内容依据软件不同版本的安装包确定。
全量处理模块1708,用于依据全量安装包对应的版本号,采用各版本对应的快照数据构成全量安装包。
其中,所述版本信息包括:安装版本的版本号;所述差异内容为升级版本和所述安装版本的差异内容。
所述快照确定模块1704,包括:版本比较子模块17042和快照获取子模块17044,其中:
所述版本比较子模块17042,用于依据升级版本的版本号和安装版本的版本号,确定版本差值。
所述快照获取子模块17044,用于依据所述版本差值获取对应的快照数据。
其中,所述快照获取子模块17044,用于若所述版本差值为1,则从所述软件的升级版本的索引中查询快照编号。若版本差值大于1,则从所述升级版本的版本号开始,查询到目标版本的版本号,从升级版本的索引到目标版本的索引中依次查询快照编号,其中,所述目标版本的版本号与所述安装版本的版本号的版本差值为1。
所述安装包生成模块1706,用于依据所述快照编号确定对应区间的逻辑地址;依据所述逻辑地址确定所述差异内容的物理地址,从所述物理地址中获取数据;采用获取的数据和快照编号生成对应的升级包。
所述全量处理模块1708,用于从所述全量安装包的版本号开始查询到设定版本,从所述全量安装包对应版本的索引到所述设定版本的索引中依次获取快照数据的快照编号;依据所述快照编号确定对应区间的逻辑地址,依据所述逻辑地址确定物理地址;从所述物理地址中获取数据,生成全量安装包。
参照图19,示出了本申请的另一种软件的升级装置实施例的结构框图,具体可以包括如下模块:
请求发送模块1902,用于发送升级请求,所述升级请求包括软件的版本信息。
升级包获取模块1094,用于获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件至少两个不同版本的安装包的差异内容的快照数据。
升级模块1906,用于在所述软件的安装包对应的存储位置写入所述升级包的数据。
参照图20,示出了本申请的另一种软件的升级装置可选实施例的结构框图,具体可以包括如下模块:
请求发送模块1902,用于发送升级请求,所述升级请求包括软件的版本信息。
升级包获取模块1094,用于获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件至少两个不同版本的安装包的差异内容的快照数据。
升级模块1906,用于在所述软件的安装包对应的存储位置写入所述升级包的数据。
回滚模块1908,用于若所述软件的安装包不具有所述快照编号对应的区间,则申请所述区间对应的存储位置;将所述升级包中所述区间对应的数据存储到所述区间对应的存储位置中,并在所述软件的安装包中记录所述区间和存储位置。
其中,所述升级模块1906,包括:区间查询子模块19062、数据迁移子模块19064和升级存储子模块19066,其中:
区间查询子模块19062,用于依据所述快照数据,确定快照编号对应的区间。
数据迁移子模块19064,用于按照所述区间申请存储位置,将所述区间对应存储位置上所述安装包的数据复制到申请的存储位置中。
升级存储子模块19066,用于从所述软件的安装包中查找所述区间对应的存储位置,将所述升级包中对应数据写入到所述存储位置。
参照图21,示出了本申请的又一种软件的升级装置实施例的结构框图,具体可以包括如下模块:
版本查询模块2102,用于检测软件对应已升级版本的安装包出现设定问题后,确定软件升级前的版本。
数据获取模块2104,用于确定所述安装包中已升级版本对应升级数据的存储位置,以及所述升级前的版本对应的数据。
数据回滚模块2106,用于将所述升级前的版本对应的数据回滚到对应存储位置,得到升级前的版本的安装包。
其中,所述数据获取模块2104,用于依据所述已升级版本对应快照编号,确定所述已升级版本的升级包对应的至少一个区间;确定所述区间对应的存储位置。
所述数据获取模块2104,用于按照所述区间确定迁移的存储位置,从所述迁移的存储位置中获取所述升级前的版本的安装包对应区间的迁移数据。
所述数据回滚模块2106,用于按照区间将所述迁移数据写入所述存储位置。
本申请实施例中,通过基于目录的快照实现对软件发布和软件升级的管理,不需要单独维护版本列表和差分包列表,不需要为每个差异版本生成差分包;版本服务器接收升级请求后,根据快照版本的差异读取每个文件差异内容,粒度可以到文件字节,传输减少了流量消耗,不需要根据新旧版本的比较生成差分包;终端设备接收到升级包后,按照差异内容写入快照系统,直接形成升级后的版本,不需要根据新旧版本再重新生成安装包,减少了时间上和IO的消耗;终端设备快照版本能够有助于版本的回退,可以维护少量快照版本,如果更新失败或者版本回退能够快速本地的回退版本,不需要再向服务器申请安装包;基于快照的升级,可不再维护版本号信息,只需要将升级的内容按照版本服务器的原则写入,版本服务器会根据快照号自动维护类似版本管理的功能。
本申请实施例基于快照的软件增量升级系统,提升服务器端版本发布性能,减少存储内容,提高获取差异版本的读取速度,提升手机端版本升级的速度;而且,基于块的快照提供差量接口,最小化版本差异,减少传输内容,提升用户体验;快照保持云端一体的数据的一致性,方便版本发布管理。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行执行如上述实施例中一个或多个所述的方法。所述电子设备包括终端设备、服务器(集群)等设备。
图22为本申请一实施例提供的电子设备的硬件结构示意图,该电子设备可包括终端设备、服务器(集群)等设备。如图22所示,该电子设备可以包括输入设备220、处理器221、输出设备222、存储器223和至少一个通信总线224。通信总线224用于实现元件之间的通信连接。存储器223可能包含高速RAM(Random Access Memory,随机存取存储器),也可能还包括非易失性存储NVM(Non-Volatile Memory),例如至少一个磁盘存储器,存储器223中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。
可选的,上述处理器221例如可以为中央处理器(Central Processing Unit,简称CPU)、软件专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,该处理器221通过有线或无线连接耦合到上述输入设备220和输出设备222。
可选的,上述输入设备220可以包括多种输入设备,例如可以包括面向用户的用户接口、面向设备的设备接口、软件的可编程接口、摄像头、传感器中至少一种。可选的,该面向设备的设备接口可以是用于设备与设备之间进行数据传输的有线接口、还可以是用于设备与设备之间进行数据传输的硬件插入接口(例如USB接口、串口等);可选的,该面向用户的用户接口例如可以是面向用户的控制按键、用于接收语音输入的语音输入设备以及用户接收用户触摸输入的触摸感知设备(例如具有触摸感应功能的触摸屏、触控板等);可选的,上述软件的可编程接口例如可以是供用户编辑或者修改程序的入口,例如芯片的输入引脚接口或者输入接口等;可选的,上述收发信机可以是具有通信功能的射频收发芯片、基带处理芯片以及收发天线等。麦克风等音频输入设备可以接收语音数据。输出设备222可以包括显示器、音响等输出设备。
在本实施例中,该设备的处理器包括用于执行各电子设备中网络管理装置各模块的功能,具体功能和技术效果参照上述实施例即可,此处不再赘述。
图23为本申请另一实施例提供的电子设备的硬件结构示意图。图23是对图22在实现过程中的一个具体的实施例。如图23所示,本实施例的电子设备包括处理器231以及存储器232。
处理器231执行存储器232所存放的计算机程序代码,实现上述实施例中图1至图14的软件数据存储方法、软件的升级方法及其中版本回退方法等。
存储器232被配置为存储各种类型的数据以支持在电子设备的操作。这些数据的示例包括用于在电子设备上操作的任何软件程序或方法的指令,例如消息,图片,视频等。存储器232可能包含随机存取存储器RAM,也可能还包括非易失性存储器NVM,例如至少一个磁盘存储器。
可选地,处理器231设置在处理组件230中。该电子设备还可以包括:通信组件233,电源组件234,多媒体组件235,音频组件236,输入/输出接口237和/或传感器组件238。设备具体所包含的组件等依据实际需求设定,本实施例对此不作限定。
处理组件230通常控制设备的整体操作。处理组件230可以包括一个或多个处理器231来执行指令,以完成上述图1至图14方法的全部或部分步骤。此外,处理组件230可以包括一个或多个模块,便于处理组件230和其他组件之间的交互。例如,处理组件230可以包括多媒体模块,以方便多媒体组件235和处理组件230之间的交互。
电源组件234为设备的各种组件提供电力。电源组件234可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
多媒体组件235包括在设备和用户之间的提供一个输出接口的显示屏。在一些实施例中,显示屏可以包括液晶显示器(LCD)和触摸面板(TP)。如果显示屏包括触摸面板,显示屏可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
音频组件236被配置为输出和/或输入音频信号。例如,音频组件236包括一个麦克风(MIC),当设备处于操作模式,如语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器232或经由通信组件233发送。在一些实施例中,音频组件236还包括一个扬声器,用于输出音频信号。
输入/输出接口237为处理组件230和外围接口模块之间提供接口,上述外围接口模块可以是点击轮,按钮等。这些按钮可包括但不限于:音量按钮、启动按钮和锁定按钮。
传感器组件238包括一个或多个传感器,用于为设备提供各个方面的状态评估。例如,传感器组件238可以检测到设备的打开/关闭状态,组件的相对定位,用户与设备接触的存在或不存在。传感器组件238可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在,包括检测用户与设备间的距离。在一些实施例中,该传感器组件238还可以包括摄像头等。
通信组件233被配置为便于电子设备和其他电子设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个实施例中,该电子设备中可以包括SIM卡插槽,该SIM卡插槽用于插入SIM卡,使得设备可以登录GPRS网络,通过互联网与服务器建立通信。
由上可知,在图23实施例中所涉及的通信组件233、音频组件236以及输入/输出接口237、传感器组件238均可以作为图22实施例中的输入设备的实现方式。
本申请实施例提供了一种服务器,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的软件数据存储方法、软件升级的方法。
本申请实施例提供了一种终端设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的软件升级的方法,以及软件升级方法中版本回滚的方法。。
本申请实施例还提供一种用于终端设备的操作系统,如图24所示,该设备的操作系统包括:升级请求单元2402和升级单元2404。
升级请求单元2402,发送升级请求,所述升级请求包括软件的版本信息;
升级单元2404,升级包获取模块,用于获取所述升级请求对应的升级包,其中,所述升级包包括:所述软件至少两个不同版本的安装包的差异内容的快照数据;在所述软件的安装包对应的存储位置写入所述升级包的数据。
其中,所述升级单元1504,检测软件对应已升级版本的安装包出现设定问题后,确定软件升级前的版本;确定所述安装包中已升级版本对应升级数据的存储位置,以及所述升级前的版本对应的数据;将所述升级前的版本对应的数据回滚到对应存储位置,得到升级前的版本的安装包。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种软件数据存储方法和装置,一种软件升级方法和装置、一种服务器、一种终端设备和一种存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。