本发明涉及软件版本发布技术领域,尤其涉及一种分布式软件版本发布方法及系统。
背景技术:
当前,随着互联网的日新月异,用户和业务的需求变化越来越频繁。为此,软件项目的版本发布密度也越来越高。一般情况下,一个软件版本从立项到上线需要经过需求确认、功能设计、程序开发、软件测试等多个阶段,这样的方式虽然保证了版本的质量,但是延长了开发周期,造成了版本更新频度无法满足业务需求变化的现状。
为解决这个问题,现在比较常用的是一种“灰度发布”的方式,该方式主要是压缩了软件测试阶段,将新版本先行发布给一小部分用户使用,收集其用户反馈和运行指标,如果正常则推送到所有的用户,如果存在问题则立即回退版本。但这种方式目前还存在以下一些问题:①软件版本更新过程中需要暂停当前版本,可能造成短时内其他未更新的软件程序吞吐量增加,影响系统稳定;②版本在更新过程中可能会引起发送版本的服务器网络流量激增,影响其他功能的正常使用;③版本的更新和回退存在人工介入,无法实现自动操作,容易产生操作失误等风险。
技术实现要素:
本发明的实施例提供一种分布式软件版本发布方法及系统,以解决当前软件版本发布影响系统稳定、服务器网络流量激增且难以实现自动操作发布的问题。
为达到上述目的,本发明采用如下技术方案:
一种分布式软件版本发布方法,应用于一分布式软件版本发布系统,所述分布式软件版本发布系统包括节点控制装置和预先设置的多层级目标服务器,每层级目标服务器包括多个目标服务器节点;
所述分布式软件版本发布方法,包括:
节点控制装置获取新版本内容与用户自定义的版本生效策略;
节点控制装置生成各层级目标服务器清单,并根据所述各层级目标服务器清单生成版本推送策略;
节点控制装置将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第一层级目标服务器中的各第一层级目标服务器节点;
所述第一层级目标服务器节点在第一层级目标服务器节点本地部署所述新版本;
所述第一层级目标服务器节点继续推送所述新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点;其中,n≥2;其中,第n层级目标服务器为多层级目标服务器的最后一层级;
各层级目标服务器节点在各层级目标服务器节点本地部署所述新版本;
各层级目标服务器节点根据所述版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;
各层级目标服务器节点根据所述采集线程采集新版本内容的评估指标;
各层级目标服务器节点根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;
各层级目标服务器节点根据所述待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。
具体的,节点控制装置生成各层级目标服务器清单,包括:
节点控制装置根据网络服务器实际数量、新版本内容文件大小总和以及节点控制装置所占用的最大网络带宽确定所述第一层级目标服务器节点的数量;
其中,所述第一层级目标服务器节点的数量N1为:
N1′>N实际;或者N1=N实际,N1′≤N实际;A为所述节点控制装置所占用的最大网络带宽;B为新版本内容文件大小总和;N1′为A除以B,并向下取整得到的结果;N实际为所述网络服务器实际数量;
节点控制装置以随机方式在网络服务器中确定第一层级目标服务器清单;
节点控制装置确定第n层级目标服务器节点的数量;其中,所述第n层级目标服务器节点的数量Nn为:
Nn=N1n,或者,N实际为所述网络服务器实际数量;
节点控制装置以随机方式在网络服务器中确定第n层级目标服务器清单。
进一步的,所述的分布式软件版本发布方法,还包括:
各层级目标服务器节点将其接收所述新版本内容、版本生效策略和版本推送策略的推送结果反馈到各层级目标服务器节点的上一层数据推送端;所述上一层数据推送端包括各层级目标服务器节点或第一层级目标服务器节点对应的节点控制装置;
若上一层数据推送端在一预先设置的超时时间内接受到所述推送结果,根据各推送结果判断上一层数据推送端向各层级目标服务器节点推送所述新版本内容、版本生效策略和版本推送策略是否成功;
若所述推送结果为推送失败,则上一层数据推送端记录推送失败的目标服务器节点,形成推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器;
若上一层数据推送端在预先设置的超时时间内未接收到所述推送结果,判断上一层数据推送端向未反馈推送结果的目标服务器节点的推送次数是否超过一预设次数阈值;
若所述推送次数小于所述预设次数阈值,上一层数据推送端继续向未反馈推送结果的目标服务器节点推送一次所述新版本内容、版本生效策略和版本推送策略;
若所述推送次数大于等于所述预设次数阈值,上一层数据推送端将未反馈推送结果的目标服务器节点放入推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器。
具体的,各层级目标服务器节点根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容,包括:
各层级目标服务器节点获取历史版本内容的评估指标;
各层级目标服务器节点根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标;
若新版本内容的评估指标大于所述历史版本内容的评估指标,记录采用新版本内容的评估结果,生成包含待发布的新版本内容的单版本执行策略;
若新版本内容的评估指标小于所述历史版本内容的评估指标,记录采用旧版本内容的评估结果,生成包含待发布的旧版本内容的单版本执行策略。
此外,所述的分布式软件版本发布方法,还包括:
各层级目标服务器节点不比较新版本内容的评估指标与历史版本内容的评估指标,生成包含多个待发布的版本内容的多版本执行策略。
进一步的,所述的分布式软件版本发布方法,还包括:
各层级目标服务器节点根据单版本执行策略和多版本执行策略,确定在目标服务器节点上是否需要多版本并发执行;
若确定在目标服务器节点上需要多版本并发执行,目标服务器节点根据多版本执行策略中的多个待发布的版本内容,为每个版本启动一个线程,并注册版本线程信息,并启动采集线程采集各版本的评估指标;
若确定在目标服务器节点上需要单版本执行,目标服务器节点获取已经注册的注册版本线程信息,终止所有与单版本执行策略中的版本不一致的版本线程,删除与单版本执行策略中的版本不一致的版本的注册版本线程信息,关闭与单版本执行策略中的版本不一致的版本的采集线程。
具体的,所述版本生效策略包括版本的各评分项和各评分项加权值;版本的各评分项包括:CPU平均占用率评分、内存平均占用量评分、用户对版本的投诉频率评分;
所述分布式软件版本发布方法,还包括:根据版本的各评分项和各评分项加权值形成版本的评估指标;其中,第i个版本的评估指标为:
Si=Ci×x%+Di×y%+Ei×z%
Ci为第i个版本的CPU平均占用率评分;x%为CPU平均占用率评分的加权值;Di为第i个版本的内存平均占用量评分;y%为内存平均占用量评分的加权值;Ei为用户对版本的投诉频率评分;z%为用户对版本的投诉频率评分的加权值。
一种分布式软件版本发布系统,包括节点控制装置和预先设置的多层级目标服务器,每层级目标服务器包括多个目标服务器节点;
节点控制装置,用于获取新版本内容与用户自定义的版本生效策略;生成各层级目标服务器清单,并根据所述各层级目标服务器清单生成版本推送策略;将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第一层级目标服务器中的各第一层级目标服务器节点;
第一层级目标服务器节点,用于在第一层级目标服务器节点本地部署所述新版本;继续推送所述新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点;其中,n≥2;其中,第n层级目标服务器为多层级目标服务器的最后一层级;
各层级目标服务器节点,用于在各层级目标服务器节点本地部署所述新版本;根据所述版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;根据所述采集线程采集新版本内容的评估指标;根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;根据所述待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。
另外,所述节点控制装置,具体用于:
根据网络服务器实际数量、新版本内容文件大小总和以及节点控制装置所占用的最大网络带宽确定所述第一层级目标服务器节点的数量;
其中,所述第一层级目标服务器节点的数量N1为:
N1′>N实际;或者N1=N实际,N1′≤N实际;A为所述节点控制装置所占用的最大网络带宽;B为新版本内容文件大小总和;N1′为A除以B,并向下取整得到的结果;N实际为所述网络服务器实际数量;
以随机方式在网络服务器中确定第一层级目标服务器清单;
确定第n层级目标服务器节点的数量;其中,所述第n层级目标服务器节点的数量Nn为:
Nn=N1n,或者,N实际为所述网络服务器实际数量;
以随机方式在网络服务器中确定第n层级目标服务器清单。
此外,各层级目标服务器节点,还用于将其接收所述新版本内容、版本生效策略和版本推送策略的推送结果反馈到各层级目标服务器节点的上一层数据推送端;所述上一层数据推送端包括各层级目标服务器节点或第一层级目标服务器节点对应的节点控制装置;
在上一层数据推送端在一预先设置的超时时间内接受到所述推送结果时,上一层数据推送端根据各推送结果判断上一层数据推送端向各层级目标服务器节点推送所述新版本内容、版本生效策略和版本推送策略是否成功;
在所述推送结果为推送失败时,上一层数据推送端记录推送失败的目标服务器节点,形成推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器;
在上一层数据推送端在预先设置的超时时间内未接收到所述推送结果时,判断上一层数据推送端向未反馈推送结果的目标服务器节点的推送次数是否超过一预设次数阈值;
在所述推送次数小于所述预设次数阈值时,上一层数据推送端继续向未反馈推送结果的目标服务器节点推送一次所述新版本内容、版本生效策略和版本推送策略;
在所述推送次数大于等于所述预设次数阈值时,上一层数据推送端将未反馈推送结果的目标服务器节点放入推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器。
此外,各层级目标服务器节点,具体用于获取历史版本内容的评估指标;根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标;在新版本内容的评估指标大于所述历史版本内容的评估指标时,记录采用新版本内容的评估结果,生成包含待发布的新版本内容的单版本执行策略;在新版本内容的评估指标小于所述历史版本内容的评估指标时,记录采用旧版本内容的评估结果,生成包含待发布的旧版本内容的单版本执行策略。
此外,各层级目标服务器节点,还用于不比较新版本内容的评估指标与历史版本内容的评估指标,生成包含多个待发布的版本内容的多版本执行策略。
进一步的,各层级目标服务器节点,还用于根据单版本执行策略和多版本执行策略,确定在目标服务器节点上是否需要多版本并发执行;
在确定在目标服务器节点上需要多版本并发执行时,目标服务器节点根据多版本执行策略中的多个待发布的版本内容,为每个版本启动一个线程,并注册版本线程信息,并启动采集线程采集各版本的评估指标;
在确定在目标服务器节点上需要单版本执行时,目标服务器节点获取已经注册的注册版本线程信息,终止所有与单版本执行策略中的版本不一致的版本线程,删除与单版本执行策略中的版本不一致的版本的注册版本线程信息,关闭与单版本执行策略中的版本不一致的版本的采集线程。
具体的,所述版本生效策略包括版本的各评分项和各评分项加权值;版本的各评分项包括:CPU平均占用率评分、内存平均占用量评分、用户对版本的投诉频率评分;
所述分布式软件版本发布系统,还用于根据版本的各评分项和各评分项加权值形成版本的评估指标;其中,第i个版本的评估指标为:
Si=Ci×x%+Di×y%+Ei×z%
Ci为第i个版本的CPU平均占用率评分;x%为CPU平均占用率评分的加权值;Di为第i个版本的内存平均占用量评分;y%为内存平均占用量评分的加权值;Ei为用户对版本的投诉频率评分;z%为用户对版本的投诉频率评分的加权值。
本发明实施例提供的一种分布式软件版本发布方法及系统,系统包括节点控制装置和预先设置的多层级目标服务器,每层级目标服务器包括多个目标服务器节点;节点控制装置可将新版本内容、版本生效策略和版本推送策略发送到第一层级目标服务器中的各第一层级目标服务器节点;之后,第一层级目标服务器节点在第一层级目标服务器节点本地部署新版本;继续推送新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点;这样,各层级目标服务器节点在各层级目标服务器节点本地部署新版本;根据版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;根据采集线程采集新版本内容的评估指标;根据版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;根据待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。可见,本发明通过多版本并行机制实现了版本更新过程中的不间断服务,并实现公正评估新版本各项性能指标;通过服务器间分层渐进的版本推送方式解决了版本发布过程中单点网络开销过大的问题;通过预先设定版本生效策略实现了自动化的版本更新与回退,从而提供了一种高可用、低消耗的分布式版本发布方式,可以解决当前软件版本发布影响系统稳定、服务器网络流量激增且难以实现自动操作发布的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式软件版本发布方法的流程图一;
图2为本发明实施例提供的一种分布式软件版本发布方法的流程图二;
图3为本发明实施例提供中的推送结果反馈方式的流程图;
图4为本发明实施例提供的一种分布式软件版本发布系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种分布式软件版本发布方法,应用于一分布式软件版本发布系统,所述分布式软件版本发布系统包括节点控制装置和预先设置的多层级目标服务器,每层级目标服务器包括多个目标服务器节点。
所述分布式软件版本发布方法,包括:
步骤101、节点控制装置获取新版本内容与用户自定义的版本生效策略。
步骤102、节点控制装置生成各层级目标服务器清单,并根据所述各层级目标服务器清单生成版本推送策略。
步骤103、节点控制装置将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第一层级目标服务器中的各第一层级目标服务器节点。
步骤104、所述第一层级目标服务器节点在第一层级目标服务器节点本地部署所述新版本。
步骤105、所述第一层级目标服务器节点继续推送所述新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点。
其中,n≥2;第n层级目标服务器为多层级目标服务器的最后一层级。
步骤106、各层级目标服务器节点在各层级目标服务器节点本地部署所述新版本。
步骤107、各层级目标服务器节点根据所述版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程。
步骤108、各层级目标服务器节点根据所述采集线程采集新版本内容的评估指标。
步骤109、各层级目标服务器节点根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容。
步骤110、各层级目标服务器节点根据所述待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。
本发明实施例提供的一种分布式软件版本发布方法,节点控制装置可将新版本内容、版本生效策略和版本推送策略发送到第一层级目标服务器中的各第一层级目标服务器节点;之后,第一层级目标服务器节点在第一层级目标服务器节点本地部署新版本;继续推送新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点;这样,各层级目标服务器节点在各层级目标服务器节点本地部署新版本;根据版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;根据采集线程采集新版本内容的评估指标;根据版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;根据待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。可见,本发明通过多版本并行机制实现了版本更新过程中的不间断服务,并实现公正评估新版本各项性能指标;通过服务器间分层渐进的版本推送方式解决了版本发布过程中单点网络开销过大的问题;通过预先设定版本生效策略实现了自动化的版本更新与回退,从而提供了一种高可用、低消耗的分布式版本发布方式,可以解决当前软件版本发布影响系统稳定、服务器网络流量激增且难以实现自动操作发布的问题。
为了使本领域的技术人员更好的了解本发明,下面结合具体实例列举一个更为详细的实施例,如图2所示,本发明实施例提供一种分布式软件版本发布方法,包括:
步骤201、节点控制装置获取新版本内容与用户自定义的版本生效策略。
具体的,所述版本生效策略包括版本的各评分项和各评分项加权值;版本的各评分项可以包括:CPU平均占用率评分、内存平均占用量评分、用户对版本的投诉频率评分。此处仅以CPU平均占用率评分、内存平均占用量评分、用户对版本的投诉频率评分为例,该版本的各评分项还可以包括数据吞吐量评分等。
版本的各评估项可以分为技术类评估指标和业务类评估指标,其中技术类评估指标由指标采集线程通过调用操作系统接口(API)在指定的统计周期内以每秒一次的频度采集,可采集指标包括CPU、内存、硬盘、网络带宽等,每次采集后指标采集线程即以算数平均数的方式计算指标在统计周期内的平均值,统计周期结束后根据指标评分公式计算每一项技术类评估指标的得分。
业务类评估指标由指标采集线程通过连接外部评价类业务系统以触发器的方式采集。以版本生效策略为例,该版本生效策略要求用户对于该版本的投诉小于10人/天,统计周期7天。指标采集线程会在每次客服系统收到客户对该版本投诉后触发计数器加1操作,每日凌晨对统计期内截止前一日的投诉量计算其算数平均值,统计期结束后根据指标评分公式计算每一项业务类评估指标的得分。例如:
指标评分=100-(指标平均值-指标阈值)÷指标阈值×100
该指标评分正常情况下最高为100分,最低为0分,如果最终结果超出该区间则取最临近区间内的值。
此处的版本生效策略中,可根据版本的各评分项和各评分项加权值形成版本的评估指标;其中,第i个版本的评估指标为:
Si=Ci×x%+Di×y%+Ei×z%
Ci为第i个版本的CPU平均占用率评分;x%为CPU平均占用率评分的加权值;Di为第i个版本的内存平均占用量评分;y%为内存平均占用量评分的加权值;Ei为用户对版本的投诉频率评分;z%为用户对版本的投诉频率评分的加权值。
步骤202、节点控制装置根据网络服务器实际数量、新版本内容文件大小总和以及节点控制装置所占用的最大网络带宽确定所述第一层级目标服务器节点的数量。
其中,所述第一层级目标服务器节点的数量N1为:
N1′>N实际;或者N1=N实际,N1′≤N实际;A为所述节点控制装置所占用的最大网络带宽;B为新版本内容文件大小总和;N1′为A除以B,并向下取整得到的结果;N实际为所述网络服务器实际数量。
步骤203、节点控制装置以随机方式在网络服务器中确定第一层级目标服务器清单。
步骤204、节点控制装置确定第n层级目标服务器节点的数量。
其中,所述第n层级目标服务器节点的数量Nn为:
Nn=N1n,或者,N实际为所述网络服务器实际数量。
步骤205、节点控制装置以随机方式在网络服务器中确定第n层级目标服务器清单。
步骤206、节点控制装置根据各层级目标服务器清单生成版本推送策略。
版本推送策略一般定义了分层渐进的版本推送方式,从而缓解推送新版本时可能引起的网络瞬间流量激增。
步骤207、节点控制装置将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第一层级目标服务器中的各第一层级目标服务器节点。
步骤208、所述第一层级目标服务器节点在第一层级目标服务器节点本地部署所述新版本。
步骤209、所述第一层级目标服务器节点继续推送所述新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点。
其中,n≥2;第n层级目标服务器为多层级目标服务器的最后一层级。
步骤210、各层级目标服务器节点在各层级目标服务器节点本地部署所述新版本。在步骤210之后继续执行步骤211。
此处,在步骤207至步骤210中,可能存在推送结果反馈的方式,如图3所示,该推送结果反馈的方式为:
步骤301、各层级目标服务器节点将其接收所述新版本内容、版本生效策略和版本推送策略的推送结果反馈到各层级目标服务器节点的上一层数据推送端。
其中,所述上一层数据推送端包括各层级目标服务器节点或第一层级目标服务器节点对应的节点控制装置。
在步骤301之后,执行步骤302或者步骤304。
步骤302、若上一层数据推送端在一预先设置的超时时间内接受到所述推送结果,根据各推送结果判断上一层数据推送端向各层级目标服务器节点推送所述新版本内容、版本生效策略和版本推送策略是否成功。
步骤303、若所述推送结果为推送失败,则上一层数据推送端记录推送失败的目标服务器节点,形成推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器。在步骤303之后可以返回步骤301。
步骤304、若上一层数据推送端在预先设置的超时时间内未接收到所述推送结果,判断上一层数据推送端向未反馈推送结果的目标服务器节点的推送次数是否超过一预设次数阈值。
步骤305、若所述推送次数小于所述预设次数阈值,上一层数据推送端继续向未反馈推送结果的目标服务器节点推送一次所述新版本内容、版本生效策略和版本推送策略。
步骤306、若所述推送次数大于等于所述预设次数阈值,上一层数据推送端将未反馈推送结果的目标服务器节点放入推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器。在步骤306之后,可以返回步骤301。
步骤211、各层级目标服务器节点根据所述版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程。
步骤212、各层级目标服务器节点根据所述采集线程采集新版本内容的评估指标。
在步骤212之后,可执行步骤213或者步骤217。
步骤213、各层级目标服务器节点获取历史版本内容的评估指标。
步骤214、各层级目标服务器节点根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标。在步骤214之后,执行步骤215或者步骤216。
步骤215、若新版本内容的评估指标大于所述历史版本内容的评估指标,记录采用新版本内容的评估结果,生成包含待发布的新版本内容的单版本执行策略。
步骤216、若新版本内容的评估指标小于所述历史版本内容的评估指标,记录采用旧版本内容的评估结果,生成包含待发布的旧版本内容的单版本执行策略。
步骤217、各层级目标服务器节点不比较新版本内容的评估指标与历史版本内容的评估指标,生成包含多个待发布的版本内容的多版本执行策略。
在步骤215、216、217之后,可以执行步骤218。
步骤218、各层级目标服务器节点根据单版本执行策略和多版本执行策略,确定在目标服务器节点上是否需要多版本并发执行。在步骤218之后,执行步骤219或者步骤220。
步骤219、若确定在目标服务器节点上需要多版本并发执行,目标服务器节点根据多版本执行策略中的多个待发布的版本内容,为每个版本启动一个线程,并注册版本线程信息,并启动采集线程采集各版本的评估指标。
步骤220、若确定在目标服务器节点上需要单版本执行,目标服务器节点获取已经注册的注册版本线程信息,终止所有与单版本执行策略中的版本不一致的版本线程,删除与单版本执行策略中的版本不一致的版本的注册版本线程信息,关闭与单版本执行策略中的版本不一致的版本的采集线程。
本发明实施例提供的一种分布式软件版本发布方法,节点控制装置可将新版本内容、版本生效策略和版本推送策略发送到第一层级目标服务器中的各第一层级目标服务器节点;之后,第一层级目标服务器节点在第一层级目标服务器节点本地部署新版本;继续推送新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点;这样,各层级目标服务器节点在各层级目标服务器节点本地部署新版本;根据版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;根据采集线程采集新版本内容的评估指标;根据版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;根据待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。可见,本发明通过多版本并行机制实现了版本更新过程中的不间断服务,并实现公正评估新版本各项性能指标;通过服务器间分层渐进的版本推送方式解决了版本发布过程中单点网络开销过大的问题;通过预先设定版本生效策略实现了自动化的版本更新与回退,从而提供了一种高可用、低消耗的分布式版本发布方式,可以解决当前软件版本发布影响系统稳定、服务器网络流量激增且难以实现自动操作发布的问题。
对应于上述图1、图2和图3所示的方法实施例,如图4所示,本发明实施例提供一种分布式软件版本发布系统40,包括节点控制装置401和预先设置的多层级目标服务器402,每层级目标服务器402包括多个目标服务器节点403。
该节点控制装置401,用于获取新版本内容与用户自定义的版本生效策略;生成各层级目标服务器清单,并根据所述各层级目标服务器清单生成版本推送策略;将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第一层级目标服务器404中的各第一层级目标服务器节点405。
第一层级目标服务器节点405,用于在第一层级目标服务器节点本地部署所述新版本;继续推送所述新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将所述新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器406中的各第n层级目标服务器节点407;其中,n≥2;其中,第n层级目标服务器为多层级目标服务器的最后一层级。
各层级目标服务器节点403,用于在各层级目标服务器节点本地部署所述新版本;根据所述版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;根据所述采集线程采集新版本内容的评估指标;根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;根据所述待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。
另外,所述节点控制装置401,具体用于:
根据网络服务器实际数量、新版本内容文件大小总和以及节点控制装置所占用的最大网络带宽确定所述第一层级目标服务器节点的数量。
其中,所述第一层级目标服务器节点的数量N1为:
N1′>N实际;或者N1=N实际,N1′≤N实际;A为所述节点控制装置所占用的最大网络带宽;B为新版本内容文件大小总和;N1′为A除以B,并向下取整得到的结果;N实际为所述网络服务器实际数量。
以随机方式在网络服务器中确定第一层级目标服务器清单。
确定第n层级目标服务器节点的数量;其中,所述第n层级目标服务器节点的数量Nn为:
Nn=N1n,或者,N实际为所述网络服务器实际数量。
以随机方式在网络服务器中确定第n层级目标服务器清单。
此外,各层级目标服务器节点403,还用于将其接收所述新版本内容、版本生效策略和版本推送策略的推送结果反馈到各层级目标服务器节点的上一层数据推送端;所述上一层数据推送端包括各层级目标服务器节点或第一层级目标服务器节点对应的节点控制装置。
在上一层数据推送端在一预先设置的超时时间内接受到所述推送结果时,上一层数据推送端根据各推送结果判断上一层数据推送端向各层级目标服务器节点推送所述新版本内容、版本生效策略和版本推送策略是否成功。
在所述推送结果为推送失败时,上一层数据推送端记录推送失败的目标服务器节点,形成推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器。
在上一层数据推送端在预先设置的超时时间内未接收到所述推送结果时,判断上一层数据推送端向未反馈推送结果的目标服务器节点的推送次数是否超过一预设次数阈值。
在所述推送次数小于所述预设次数阈值时,上一层数据推送端继续向未反馈推送结果的目标服务器节点推送一次所述新版本内容、版本生效策略和版本推送策略。
在所述推送次数大于等于所述预设次数阈值时,上一层数据推送端将未反馈推送结果的目标服务器节点放入推送失败清单,并将推送失败清单中的目标服务器节点随机替换为其他网络服务器。
此外,各层级目标服务器节点403,具体用于获取历史版本内容的评估指标;根据所述版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标;在新版本内容的评估指标大于所述历史版本内容的评估指标时,记录采用新版本内容的评估结果,生成包含待发布的新版本内容的单版本执行策略;在新版本内容的评估指标小于所述历史版本内容的评估指标时,记录采用旧版本内容的评估结果,生成包含待发布的旧版本内容的单版本执行策略。
此外,各层级目标服务器节点403,还用于不比较新版本内容的评估指标与历史版本内容的评估指标,生成包含多个待发布的版本内容的多版本执行策略。
进一步的,各层级目标服务器节点403,还用于根据单版本执行策略和多版本执行策略,确定在目标服务器节点上是否需要多版本并发执行。
在确定在目标服务器节点上需要多版本并发执行时,目标服务器节点403根据多版本执行策略中的多个待发布的版本内容,为每个版本启动一个线程,并注册版本线程信息,并启动采集线程采集各版本的评估指标。
在确定在目标服务器节点上需要单版本执行时,目标服务器节点403获取已经注册的注册版本线程信息,终止所有与单版本执行策略中的版本不一致的版本线程,删除与单版本执行策略中的版本不一致的版本的注册版本线程信息,关闭与单版本执行策略中的版本不一致的版本的采集线程。
具体的,所述版本生效策略包括版本的各评分项和各评分项加权值;版本的各评分项包括:CPU平均占用率评分、内存平均占用量评分、用户对版本的投诉频率评分。
所述分布式软件版本发布系统40,还用于根据版本的各评分项和各评分项加权值形成版本的评估指标;其中,第i个版本的评估指标为:
Si=Ci×x%+Di×y%+Ei×z%
Ci为第i个版本的CPU平均占用率评分;x%为CPU平均占用率评分的加权值;Di为第i个版本的内存平均占用量评分;y%为内存平均占用量评分的加权值;Ei为用户对版本的投诉频率评分;z%为用户对版本的投诉频率评分的加权值。
本发明实施例提供的一种分布式软件版本发布系统的具体实现方式可以参见上述的方法实施例,此处不再赘述。
本发明实施例提供的一种分布式软件版本发布系统,包括节点控制装置和预先设置的多层级目标服务器,每层级目标服务器包括多个目标服务器节点;节点控制装置可将新版本内容、版本生效策略和版本推送策略发送到第一层级目标服务器中的各第一层级目标服务器节点;之后,第一层级目标服务器节点在第一层级目标服务器节点本地部署新版本;继续推送新版本内容、版本生效策略和版本推送策略,使得多层级目标服务器中的第n-1层级目标服务器中的各第n-1层级目标服务器节点将新版本内容、版本生效策略和版本推送策略发送到多层级目标服务器中的第n层级目标服务器中的各第n层级目标服务器节点;这样,各层级目标服务器节点在各层级目标服务器节点本地部署新版本;根据版本生效策略启动一个或多个版本运行线程,并为每一个版本启动对应的采集线程;根据采集线程采集新版本内容的评估指标;根据版本生效策略,比较新版本内容的评估指标与历史版本内容的评估指标,确定待发布的版本内容;根据待发布的版本内容终止其他版本的运行线程,保留待发布的版本的运行线程。可见,本发明通过多版本并行机制实现了版本更新过程中的不间断服务,并实现公正评估新版本各项性能指标;通过服务器间分层渐进的版本推送方式解决了版本发布过程中单点网络开销过大的问题;通过预先设定版本生效策略实现了自动化的版本更新与回退,从而提供了一种高可用、低消耗的分布式版本发布方式,可以解决当前软件版本发布影响系统稳定、服务器网络流量激增且难以实现自动操作发布的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。