CN112199104A - 一种软件升级方法、装置、电子设备和存储介质 - Google Patents

一种软件升级方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN112199104A
CN112199104A CN202011082207.XA CN202011082207A CN112199104A CN 112199104 A CN112199104 A CN 112199104A CN 202011082207 A CN202011082207 A CN 202011082207A CN 112199104 A CN112199104 A CN 112199104A
Authority
CN
China
Prior art keywords
canary
service instance
issued
package
program package
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.)
Granted
Application number
CN202011082207.XA
Other languages
English (en)
Other versions
CN112199104B (zh
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.)
Winning Health Technology Group Co Ltd
Original Assignee
Winning Health Technology Group 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 Winning Health Technology Group Co Ltd filed Critical Winning Health Technology Group Co Ltd
Priority to CN202011082207.XA priority Critical patent/CN112199104B/zh
Publication of CN112199104A publication Critical patent/CN112199104A/zh
Application granted granted Critical
Publication of CN112199104B publication Critical patent/CN112199104B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种软件升级方法、装置、电子设备和存储介质,该方法包括获取待发布的程序包以及预设的发布范围,待发布的程序包用于升级目标软件的功能;根据预设的发布范围判断当前发布模式是否为金丝雀发布;若是,则将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例,第一定位信息包括属于金丝雀的类型参数以及预设的金丝雀标识信息;调用金丝雀服务实例以对待发布的程序包进行测试并判断待发布的程序包在测试时是否出现异常;若是,则将金丝雀服务实例删除以回滚至升级前的版本;若否,则将金丝雀服务实例应用到主线服务实例中以升级目标软件。

Description

一种软件升级方法、装置、电子设备和存储介质
技术领域
本申请涉及软件升级技术领域,具体而言,涉及一种软件升级方法、装置、电子设备和存储介质。
背景技术
现有的软件升级方法多采用蓝绿部署方式,其中,蓝绿部署方式具体是设置两个集群假设分别为A和B,在没有软件更新的情况下,集群A和集群B的代码版本是一致的并且同时对外提供服务;在有软件更新的情况下,首先把集群A从负载列表中摘除进行新版本的部署,集群B仍然继续提供服务,当进行集群A新版本升级完毕后,将负载均衡重新指向集群A,然后对集群B进行升级,当集群B也升级完毕后,把集群B也恢复到负载列表当中。
但上述方式需要进行两个集群的整体维护,维护成本高。
发明内容
本申请实施例的目的在于提供一种软件升级方法、装置、电子设备和存储介质,用以解决目前的蓝绿部署方式需要进行两个集群的整体维护存在的维护成本高的问题。
第一方面,本发明实施例提供一种软件升级方法,所述方法包括:获取待发布的程序包以及预设的发布范围,所述待发布的程序包用于升级目标软件的功能;根据所述预设的发布范围判断当前发布模式是否为金丝雀发布;若是,则将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例,所述第一定位信息包括所述金丝雀服务实例的类型参数以及标识信息;根据所述第一定位信息调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述待发布的程序包在测试时是否出现异常;若是,则将所述金丝雀服务实例删除以回滚至升级前的版本;若否,则将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
在上述设计的基于分布式系统的软件升级方法中,在进行待发布软件包部署时将待发布的程序包添加上包含属于金丝雀的类型参数以及预设的金丝雀标识进而将添加完成的待发布的程序包注册在服务注册与发现中形成对应的金丝雀服务实例,然后调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常,在异常时可即可回滚至升级前的版本,在没有出现异常时则将金丝雀服务实例应用到主线服务实例中以升级目标软件,使得只需在待发布的程序包中添加金丝雀相关参数并注册到服务注册与发现中并在测试时直接调用注册的金丝雀服务实例即可对待发布的程序包进行测试,并且在错误时及时回滚,正确时应用到主线中,使得本方案对于服务器需求小,硬件资源利用率更高,可以极大地降低部署成本和维护成本,解决目前的蓝绿部署方式需要进行两个集群的整体维护存在的维护成本高的问题;同时,本方案中利用服务注册与发现中具有的大量金丝雀服务实例资源,可支持多种升级功能同时实现升级。
在第一方面的可选实施方式中,所述根据所述第一定位信息调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述待发布的程序包在测试时是否出现异常,包括:获取金丝雀功能测试请求,所述金丝雀功能测试请求包括所述金丝雀服务实例的第一定位信息;获取根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例;调用并运行查找到的金丝雀服务实例以判断所述待发布的程序包在运行时是否出现异常;若是,则将所述金丝雀服务实例删除以回滚至升级前的版本;若否,则将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
在第一方面的可选实施方式中,所述获取根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例,包括:将所述金丝雀服务实例的第一参数信息添加在所述金丝雀功能测试请求的请求头中;将添加完成的所述金丝雀功能测试请求发送给调用组件;获取所述调用组件根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例。
在第一方面的可选实施方式中,所述将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件,包括:将第二定位信息添加到测试通过的待发布的程序包中,所述第二定位信息包括属于主线的类型参数信息以及主线版本的递增信息,所述主线版本的递增信息表示在主线服务实例上增加所述金丝雀服务实例的信息;将添加完成的测试通过的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的主线服务实例;调用所述主线服务实例以对所述测试通过的待发布的程序包进行测试并判断所述测试通过的待发布的程序包是否出现异常;若是,则将所述主线服务实例删除以回滚至升级前的版本;若否,则确定升级完成。
在第一方面的可选实施方式中,所述调用所述主线服务实例以对所述测试通过的待发布的程序包进行测试并判断所述测试通过的待发布的程序包是否出现异常,包括:获取主线功能测试请求,所述主线功能测试请求中包含所述主线服务实例的第二定位信息;获取根据所述主线服务实例的第二定位信息在所述服务注册与发现中查找到的主线服务实例;调用并运行查找到的主线服务实例以判断所述主线服务实例在运行时是否出现异常;若是,则将所述主线服务实例删除以回滚至升级前的版本;若否,则升级完成。
在第一方面的可选实施方式中,所述待发布的程序包包括前端包和后端包,在所述将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例之前,所述方法还包括:判断所述待发布的程序包中是否包含前端包;若是,根据所述预设的发布范围确定所述前端包部署的前端服务器,将所述前端包部署于所述前端服务器中。
在第一方面的可选实施方式中,在所述将所述前端包部署于所述前端服务器中之后,所述方法还包括:判断所述前端包在所述金丝雀前端服务器中运行是否异常;若是,则将部署的所述前端包删除以回滚至升级前的版本;若否,则执行将所述将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例的步骤。
第二方面,本发明实施例提供一种软件升级装置,所述装置包括:获取模块,用于获取待发布的程序包以及预设的发布范围,所述待发布的程序包用于升级所述目标软件的功能;判断模块,用于根据所述预设的发布范围判断当前发布模式是否为金丝雀发布;添加注册模块,用于将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例,所述第一定位信息包括所述金丝雀服务实例的类型参数以及标识信息;测试判断模块,用于根据所述第一定位信息调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述金丝雀服务实例在测试时是否出现异常;回滚模块,在确定异常后用于将所述目标软件的当前升级功能回滚至升级前的版本;应用模块,在没出现异常后还用于将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
在上述设计的软件升级装置中,在进行待发布软件包部署时将待发布的程序包添加上包含属于金丝雀的类型参数以及预设的金丝雀标识进而将添加完成的待发布的程序包注册在服务注册与发现中形成对应的金丝雀服务实例,然后调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常,在异常时可即可回滚至升级前的版本,在没有出现异常时则将金丝雀服务实例应用到主线服务实例中以升级目标软件,使得只需在待发布的程序包中添加金丝雀相关参数并注册到服务注册与发现中并在测试时直接调用注册的金丝雀服务实例即可对待发布的程序包进行测试,并且在错误时及时回滚,正确时应用到主线中,使得本方案对于服务器需求小,硬件资源利用率更高,可以极大地降低部署成本和维护成本,解决目前的蓝绿部署方式需要进行两个集群的整体维护存在的维护成本高的问题;同时,本方案中利用服务注册与发现中具有的大量金丝雀服务实例资源,可支持多种升级功能同时实现升级。
在第二方面的可选实施方式中,所述测试判断模块,具体用于获取金丝雀功能测试请求,所述金丝雀功能测试请求包括所述金丝雀服务实例的第一定位信息;获取根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例;调用并运行查找到的金丝雀服务实例以判断所述待发布的程序包在运行时是否出现异常;若是,则将所述金丝雀服务实例删除以回滚至升级前的版本;若否,则将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
在第二方面的可选实施方式中,所述应用模块,具体用于将第二定位信息添加到测试通过的待发布的程序包中,所述第二定位信息包括属于主线的类型参数信息以及主线版本的递增信息,所述主线版本的递增信息表示在主线服务实例上增加所述金丝雀服务实例的信息;将添加完成的测试通过的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的主线服务实例;调用所述主线服务实例以对所述测试通过的待发布的程序包进行测试并判断所述测试通过的待发布的程序包是否出现异常;若是,则将所述主线服务实例删除以回滚至升级前的版本;若否,则确定升级完成。
第三方面,实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行第一方面、第一方面的任一可选的实现方式中的所述方法。
第四方面,实施例提供一种非暂态可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时执行第一方面、第一方面的任一可选的实现方式中的所述方法。
第五方面,实施例提供了一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行第一方面、第一方面的任一可选的实现方式中的所述方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的软件升级方法第一流程图;
图2为本申请实施例提供的软件升级方法第二流程图;
图3为本申请实施例提供的软件升级方法第三流程图;
图4为本申请实施例提供的软件升级方法第四流程图;
图5为本申请实施例提供的软件升级方法第五流程图;
图6为本申请实施例提供的软件升级方法第六流程图;
图7为本申请实施例提供的软件升级方法第七流程图;
图8为本申请实施例提供的软件升级装置结构示意图;
图9为本申请实施例提供的电子设备结构示意图。
图标:200-获取模块;202-判断模块;204-添加注册模块;206-测试判断模块;208-回滚模块;210-应用模块;3-电子设备;301-处理器;302-存储器;303-通信总线。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
第一实施例
本申请提供一种软件升级方法,该软件升级方法可应用于对目标软件进行升级,如图1所示,该方法具体可包括如下步骤:
步骤S200:获取待发布的程序包以及预设的发布范围。
步骤S202:根据预设的发布范围判断当前发布模式是否为金丝雀发布,若是,则转到步骤S2040。
步骤S2040:将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例。
步骤S2042:根据第一定位信息调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常,若是,则转到步骤S2044;若否,则转到步骤S2045。
步骤S2044:将金丝雀服务实例删除以回滚至升级前的版本。
步骤S2045:将金丝雀服务实例应用到主线服务实例中以升级目标软件。
在步骤S200中,该待发布的程序包为升级该目标软件的一个或多个功能的升级软件包,利用该待发布的程序包可以对该目标软件的一个或多个功能进行实现或者升级,该预设的发布范围可通过设计人员根据实际情况进行选择,例如,在进行某些功能升级时,该设计人员确定将该待发布的软件包注册为服务注册与发现中的金丝雀服务实例更好,那么,发布范围即可确定为金丝雀发布;假设该升级功能设计人员认为在主线服务实例上发布更好,那么,发布范围即可确定为主线发布,其中,发布范围可设置为选项,进而供设计人员选择。本方案在执行步骤S200之后即可执行步骤S202。
在步骤S202中,本方案会根据预设的发布范围判断当前发布模式是否为金丝雀发布,例如,前述的说明基础上,当设计人员选择发布范围为金丝雀发布,那么即可执行步骤S2040将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例。
在步骤S2040中,本方案可提前在服务注册与发现中将所有的服务实例分为两大类,一大类是主线服务实例,另一大类是金丝雀服务实例,其中,主线服务实例表示运行当前目标软件所提供的微服务,金丝雀服务实例表示空闲的或新建的用于进行某些新增功能测试的服务实例;其中,主线服务实例和金丝雀服务实例可通过具有不同的参数信息来区分,例如,金丝雀服务实例可具有第一定位信息,该第一定位信息中包含了属于金丝雀类型的参数信息以及对应的标识信息,该标识信息可为服务实例编号,第一定位信息具体可为“W-FLOW=canary,W-SEQ=n”其中,“W-FLOW=default”表示属于主线类型的服务实例,“W-FLOW=canary”表示属于金丝雀类型的服务实例,SEQ表示服务实例的标识信息或编号信息。
在步骤S2040中当其确定为金丝雀发布后,可在待发布的程序包中添加预设的第一定位信息,包括属于金丝雀类型的参数信息以及预设的金丝雀标识信息,其中,预设的金丝雀标识信息可根据服务注册与发现中与当前升级功能类似的功能分区中的空闲的服务实例中进行选择,在选择之后将选择的金丝雀服务实例的标识信息和属于金丝雀类型的参数信息结合起来添加到待发布的程序包中,以前述的举例来说可以将“W-FLOW=canary,W-SEQ=n”添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中生成对应的金丝雀服务实例,以使后续进行测试时直接调用该金丝雀服务实例即可运行该待发布的程序包。
这里需要说明的是,当执行步骤S2040将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例之后,本方案还可以注册得到的金丝雀服务实例同步到门户管理系统中并与设定的进行测试的用户ID相互映射,进而使得映射的用户ID可登录门户管理系统进行该金丝雀服务实例对应的功能的测试。
在上述的基础上,即可执行步骤S2042调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常,若出现异常,则说明待发布的程序包注册的金丝雀服务实例存在问题,那么则执行步骤S2044将金丝雀服务实例删除以回滚至升级前的版本;当没有出现异常,则说明该待发布的程序包注册的金丝雀服务实例的功能是正确并稳定的,进而可以执行步骤S2045将金丝雀服务实例应用到主线服务实例中以升级目标软件,进而实现目标软件的升级。
在上述设计的软件升级方法中,在进行待发布软件包部署时将待发布的程序包添加上包含属于金丝雀的类型参数以及预设的金丝雀标识进而将添加完成的待发布的程序包注册在服务注册与发现中形成对应的金丝雀服务实例,然后调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常,在异常时可即可回滚至升级前的版本,在没有出现异常时则将金丝雀服务实例应用到主线服务实例中以升级目标软件,使得只需在待发布的程序包中添加金丝雀相关参数并注册到服务注册与发现中并在测试时直接调用注册的金丝雀服务实例即可对待发布的程序包进行测试,并且在错误时及时回滚,正确时应用到主线中,使得本方案对于服务器需求小,硬件资源利用率更高,可以极大地降低部署成本和维护成本,解决目前的蓝绿部署方式需要进行两个集群的整体维护存在的维护成本高的问题;同时,本方案中利用服务注册与发现中具有的大量金丝雀服务实例资源,可支持多种升级功能同时实现升级。
在本实施例的可选实施方式中,前述已经描述到可通过步骤S2042调用金丝雀服务实例来对待发布的程序包进行测试,如图2所示,其具体可包括如下步骤:
步骤S20420:获取金丝雀功能测试请求,金丝雀功能测试请求中包含第一定位信息。
步骤S20422:获取根据金丝雀服务实例的第一定位信息在服务注册与发现中查找到的金丝雀服务实例。
步骤S20424:调用并运行查找到的金丝雀服务实例以判断待发布的程序包在运行时是否出现异常,若是,则转到步骤S2044;若否,则转到步骤S2045。
在步骤S20420中前述已经描述到在金丝雀服务实例注册完成之后可同步到门户管理系统并与进行测试的用户ID相互映射,进而使得映射的用户ID可登录门户管理系统进行该金丝雀服务实例对应的功能的测试,其中,步骤S2048中的金丝雀功能测试请求可映射的用户ID对应的用户发送获得,该金丝雀功能测试请求中可通过请求中包含的功能来进行识别,也可以通过金丝雀功能测试请求中是否包含属于金丝雀的类型参数来识别是否是金丝雀功能测试请求,该金丝雀功能测试请求中包含有该第一定位信息。
在步骤S20422中,本方案会获取根据目标金丝雀服务实例的第一定位信息在服务注册与发现中查找到的目标金丝雀服务实例,其中,获取的方式有两种,第一种是本方案执行端根据目标金丝雀服务实例的第一定位信息在服务注册与发现中查找;另一种是本方案将目标金丝雀服务实例的第一定位信息发送给调用组件,通过调用组件查找获得后返回给本方案的执行端,具体的,如图3所示,第二种的具体过程包括如下步骤:
步骤S204220:将金丝雀服务实例的第一参数信息添加在金丝雀功能测试请求的请求头中。
步骤S204222:将添加完成的金丝雀功能测试请求发送给调用组件。
步骤S204224:获取调用组件根据金丝雀服务实例的第一定位信息在服务注册与发现中查找到的金丝雀服务实例。
在上述步骤中,调用组件可包括网关和/或服务注册与发现调用组件,在生成目标金丝雀服务实例的第一参数信息之后,可将该金丝雀服务实例的第一参数信息添加在金丝雀功能测试请求的请求头中,然后将其发送给调用组件,通过调用组件根据金丝雀服务实例的第一参数信息在服务注册与发现中查找金丝雀服务实例,然后将查找到的发送给本执行端。另外,这里需要说明的是,当金丝雀服务实例有多个时,可单独通过网关或服务注册与发现调用组件来进行查找,还可以结合二者来共同查找。
在本实施例的可选实施方式中,该待发布的软件包还可以分为前端包和后端包,前端包用于部署在前端服务器的前端目录中,该后端包用于部署在服务实例中,在步骤S2040将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例之前,如图4所示,该方法还包括:
步骤S2030:判断待发布的程序包中是否包含前端包,若是,则转到步骤S2031;若否,则转到步骤S2040。
步骤S2031:根据预设的发布范围确定前端包部署的前端服务器,将前端包部署于前端服务器中。
在上述的基础上,步骤S2040具体可为:
步骤S20400:将第一定位信息添加到后端包中并将添加完成的后端包注册到服务注册与发现中形成后端包对应的金丝雀服务实例。
步骤S2042具体可为:
步骤S20420:根据第一定位信息调用金丝雀服务实例以对后端包进行测试并判断后端包在测试时是否出现异常。
在上述设计的实施方式中,当待发布的程序包包括前端包和后端包时首先执行步骤S2031将前端包部署在前端服务器中,然后执行步骤S20400和S20420将第一定位信息添加到后端包中并将添加完成的后端包注册到服务注册与发现中形成后端包对应的金丝雀服务实例,调用金丝雀服务实例以对后端包进行测试并判断后端包在测试时是否出现异常。
在本实施例的可选实施方式中,在步骤S2031之后,本方案还可以对部署的前端包的是否异常进行确定,如图5所示,包括:
步骤S2032:判断前端包在前端服务器中运行是否异常,若是,则转到步骤S2033;若否,则转到步骤S20400。
步骤S2033:将部署的前端包删除以回滚至升级前的版本。
在上述步骤中通过判断前端包在前端服务器中运行是否异常进而判断前端包的部署是否异常,当异常时则删除部署的前端包进行回滚。
这里需要说明的是,当具有前端包时,本方案在测试时会首先访问前端服务器,在访问前端服务器部署的前端包之后,会通过前端服务器发送该加入第一定位信息在请求头中的请求给网关,然后网关基于第一定位信息在服务注册与发现中查找对应的目标金丝雀服务实例。
在本实施例的可选实施方式中,前述步骤S2045中的将金丝雀服务实例应用到主线服务实例中以升级目标软件,如图6所示,其具体包括如下步骤:
步骤S20450:将第二定位信息添加到测试通过的待发布的程序包中,所述第二定位信息包括属于主线的类型参数信息以及主线版本的递增信息。
步骤S20451:将添加完成的测试通过的待发布的程序包注册到所述服务注册与发现中形成待发布的程序包对应的主线服务实例。
步骤S20452:调用主线服务实例以对测试通过的待发布的程序包进行测试并判断测试通过的待发布的程序包是否出现异常,若是,则转到步骤S20453;若否,则转到步骤S20454。
步骤S20453:将主线服务实例删除以回滚至升级前的版本。
步骤S20454:升级完成。
当确定金丝雀服务实例对应的待发布软件包没有异常之后,即可执行步骤S20450将第二定位信息添加到测试通过的待发布的程序包中,所述第二定位信息包括属于主线的类型参数信息以及主线版本的递增信息,第二定位信息即包括属于主线的类型参数信息以及主线版本的递增信息,其中主线的类型参数信息可与前述的属于金丝雀的参数信息进行区分,例如具体可以是“W-FLOW=default”,该主线版本的递增信息表示在主线版本上增加该金丝雀服务实例的信息,例如第二定位信息具体可为“W-SEQ=n_4”,其中,n为主线版本在此环境递增,4为金丝雀服务实例;在执行步骤S20450之后即可执行步骤S20451到步骤S20454将添加第二定位信息的并通过金丝雀测试的待发布的程序包注册到服务注册与发现中进行形成主线服务实例,进而调用主线服务实例对添加第二定位信息的并通过金丝雀测试的待发布的程序包进行测试,当测试没有异常时则说明软件升级完成,当测试具有异常时,则进行回滚,进而完成将金丝雀服务实例应用到主线服务实例中。
在本实施例的可选实施方式中,前述的步骤S20452调用主线服务实例以对测试通过的待发布的程序包进行测试并判断测试通过的待发布的程序包是否出现异常,如图7所示,其具体可包括如下步骤:
步骤S20510:获取主线功能测试请求,主线功能测试请求中包含主线服务实例的第二定位信息。
步骤S20512:获取根据主线服务实例的第二定位信息在服务注册与发现中查找到的主线服务实例。
步骤S20513:调用并运行查找到的主线服务实例以判断待发布的程序包在运行时是否出现异常,若是,则转到步骤S20514,若否,则转到步骤S20515。
步骤S20514:将主线服务实例删除以回滚至升级前的版本。
步骤S20515:升级完成。
上述步骤主线测试过程与前述的金丝雀测试过程基本一致,具体是基于请求中的标识信息生成第二定位信息进而在服务注册与发现中查找并调用目标主线服务实例运行通过金丝雀测试的待发布的软件包进而判断其是否异常,当没有异常时,则说明待发布软件在主线运行时无异常,则说明软件升级完成。
第二实施例
图8出示了本申请提供的软件升级装置的示意性结构框图,应理解,该装置与上述图1至图7中执行的方法实施例对应,能够执行第二实施例中处理单元执行的方法涉及的步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。具体地,该装置包括:获取模块200,用于获取待发布的程序包以及预设的发布范围,待发布的程序包用于升级目标软件的功能;判断模块202,用于根据预设的发布范围判断当前发布模式是否为金丝雀发布;添加注册模块204,用于将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例,第一定位信息包括所述金丝雀服务实例的类型参数以及标识信息;测试判断模块206,用于根据第一定位信息调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常;回滚模块208,在确定异常后用于将目标软件的当前升级功能回滚至升级前的版本;应用模块210,在没出现异常后还用于将金丝雀服务实例应用到主线服务实例中以升级目标软件。
在上述设计的软件升级装置中,在进行待发布软件包部署时将待发布的程序包添加上包含属于金丝雀的类型参数以及预设的金丝雀标识进而将添加完成的待发布的程序包注册在服务注册与发现中形成对应的金丝雀服务实例,然后调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常,在异常时可即可回滚至升级前的版本,在没有出现异常时则将金丝雀服务实例应用到主线服务实例中以升级目标软件,使得只需在待发布的程序包中添加金丝雀相关参数并注册到服务注册与发现中并在测试时直接调用注册的金丝雀服务实例即可对待发布的程序包进行测试,并且在错误时及时回滚,正确时应用到主线中,使得本方案对于服务器需求小,硬件资源利用率更高,可以极大地降低部署成本和维护成本,解决目前的蓝绿部署方式需要进行两个集群的整体维护存在的维护成本高的问题;同时,本方案中利用服务注册与发现中具有的大量金丝雀服务实例资源,可支持多种升级功能同时实现升级。
在本实施例的可选实施方式中,测试判断模块206,具体用于获取金丝雀功能测试请求,金丝雀功能测试请求包括金丝雀服务实例的第一定位信息;获取根据金丝雀服务实例的第一定位信息在服务注册与发现中查找到的金丝雀服务实例;调用并运行查找到的金丝雀服务实例以判断待发布的程序包在运行时是否出现异常;若是,则将金丝雀服务实例删除以回滚至升级前的版本;若否,则将金丝雀服务实例应用到主线服务实例中以升级目标软件。
在本实施例的可选实施方式中,应用模块210,具体用于将第二定位信息添加到测试通过的待发布的程序包中,第二定位信息包括属于主线的类型参数信息以及主线版本的递增信息,主线版本的递增信息表示在主线服务实例上增加金丝雀服务实例的信息;将添加完成的测试通过的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的主线服务实例;调用主线服务实例以对测试通过的待发布的程序包进行测试并判断测试通过的待发布的程序包是否出现异常;若是,则将主线服务实例删除以回滚至升级前的版本;若否,则确定升级完成。
第三实施例
如图9所示,本申请提供一种电子设备3,包括:处理器301和存储器302,处理器301和存储器302通过通信总线303和/或其他形式的连接机构(未标出)互连并相互通讯,存储器302存储有处理器301可执行的计算机程序,当计算设备运行时,处理器301执行该计算机程序,以执行时执行第二实施例、第二实施例的任一可选的实现方式中的方法,例如步骤S200至步骤S2045:获取待发布的程序包以及预设的发布范围;根据预设的发布范围判断当前发布模式是否为金丝雀发布,若是,将第一定位信息添加到待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成待发布的程序包对应的金丝雀服务实例;根据第一定位信息调用金丝雀服务实例以对待发布的程序包进行测试并判断金丝雀服务实例在测试时是否出现异常;若是则将金丝雀服务实例删除以回滚至升级前的版本;若否则将金丝雀服务实例应用到主线服务实例中以升级目标软件。
本申请提供一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第二实施例、第二实施例的任一可选的实现方式中的方法。
其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请提供一种计算机程序产品,该计算机程序产品在计算机上运行时,使得计算机执行第二实施例、第二实施例的任一可选的实现方式中的所述方法。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种软件升级方法,其特征在于,所述方法包括:
获取待发布的程序包以及预设的发布范围,所述待发布的程序包用于升级目标软件的功能;
根据所述预设的发布范围判断当前发布模式是否为金丝雀发布;
若是,则将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例,所述第一定位信息包括所述金丝雀服务实例的类型参数以及标识信息;
根据所述第一定位信息调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述待发布的程序包在测试时是否出现异常;
若是,则将所述金丝雀服务实例删除以回滚至升级前的版本;
若否,则将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一定位信息调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述待发布的程序包在测试时是否出现异常,包括:
获取金丝雀功能测试请求,所述金丝雀功能测试请求包括所述金丝雀服务实例的第一定位信息;
获取根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例;
调用并运行查找到的金丝雀服务实例以判断所述待发布的程序包在运行时是否出现异常;
若是,则将所述金丝雀服务实例删除以回滚至升级前的版本;
若否,则将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
3.根据权利要求2所述的方法,其特征在于,所述获取根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例,包括:
将所述金丝雀服务实例的第一参数信息添加在所述金丝雀功能测试请求的请求头中;
将添加完成的所述金丝雀功能测试请求发送给调用组件;
获取所述调用组件根据所述金丝雀服务实例的第一定位信息在所述服务注册与发现中查找到的金丝雀服务实例。
4.根据权利要求1所述的方法,其特征在于,所述将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件,包括:
将第二定位信息添加到测试通过的待发布的程序包中,所述第二定位信息包括属于主线的类型参数信息以及主线版本的递增信息,所述主线版本的递增信息表示在主线服务实例上增加所述金丝雀服务实例的信息;
将添加完成的测试通过的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的主线服务实例;
调用所述主线服务实例以对所述测试通过的待发布的程序包进行测试并判断所述测试通过的待发布的程序包是否出现异常;
若是,则将所述主线服务实例删除以回滚至升级前的版本;
若否,则确定升级完成。
5.根据权利要求4所述的方法,其特征在于,所述调用所述主线服务实例以对所述测试通过的待发布的程序包进行测试并判断所述测试通过的待发布的程序包是否出现异常,包括:
获取主线功能测试请求,所述主线功能测试请求中包含所述主线服务实例的第二定位信息;
获取根据所述主线服务实例的第二定位信息在所述服务注册与发现中查找到的主线服务实例;
调用并运行查找到的主线服务实例以判断所述主线服务实例在运行时是否出现异常;
若是,则将所述主线服务实例删除以回滚至升级前的版本;
若否,则升级完成。
6.根据权利要求1所述的方法,其特征在于,所述待发布的程序包包括前端包和后端包,在所述将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例之前,所述方法还包括:
判断所述待发布的程序包中是否包含前端包;
若是,根据所述预设的发布范围确定所述前端包部署的前端服务器,将所述前端包部署于所述前端服务器中;
所述将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例,包括:
将第一定位信息添加到所述后端包中并将添加完成的后端包注册到所述服务注册与发现中形成所述后端包对应的金丝雀服务实例;
所述调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述待发布的程序包在测试时是否出现异常,包括:
调用所述金丝雀服务实例以对所述后端包进行测试并判断所述后端包在测试时是否出现异常。
7.根据权利要求6所述的方法,其特征在于,在所述将所述前端包部署于所述前端服务器中之后,所述方法还包括:
判断所述前端包在所述前端服务器中运行是否异常;
若是,则将部署的所述前端包删除以回滚至升级前的版本;
若否,则执行将所述将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到所述服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例的步骤。
8.一种软件升级装置,其特征在于,所述装置包括:
获取模块,用于获取待发布的程序包以及预设的发布范围,所述待发布的程序包用于升级目标软件的功能;
判断模块,用于根据所述预设的发布范围判断当前发布模式是否为金丝雀发布;
添加注册模块,用于将第一定位信息添加到所述待发布的程序包中并将添加完成的待发布的程序包注册到服务注册与发现中形成所述待发布的程序包对应的金丝雀服务实例,所述第一定位信息包括所述金丝雀服务实例的类型参数以及标识信息;
测试判断模块,用于根据所述第一定位信息调用所述金丝雀服务实例以对所述待发布的程序包进行测试并判断所述金丝雀服务实例在测试时是否出现异常;
回滚模块,在确定异常后用于将所述目标软件的当前升级功能回滚至升级前的版本;
应用模块,在没出现异常后还用于将所述金丝雀服务实例应用到主线服务实例中以升级所述目标软件。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
CN202011082207.XA 2020-10-10 2020-10-10 一种软件升级方法、装置、电子设备和存储介质 Active CN112199104B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011082207.XA CN112199104B (zh) 2020-10-10 2020-10-10 一种软件升级方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011082207.XA CN112199104B (zh) 2020-10-10 2020-10-10 一种软件升级方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN112199104A true CN112199104A (zh) 2021-01-08
CN112199104B CN112199104B (zh) 2024-03-01

Family

ID=74012779

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011082207.XA Active CN112199104B (zh) 2020-10-10 2020-10-10 一种软件升级方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN112199104B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114640687A (zh) * 2022-03-15 2022-06-17 北京中交兴路信息科技有限公司 一种软件升级方法、装置、存储介质及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170048338A1 (en) * 2015-08-13 2017-02-16 Molbase (Shanghai) Biotechnology Co., Ltd. Online testing system and method thereof
WO2017070108A1 (en) * 2015-10-23 2017-04-27 Netflix, Inc. Techniques for determining client-side effects of server-side behavior using canary analysis
CN109240708A (zh) * 2018-07-02 2019-01-18 北京百度网讯科技有限公司 应用部署方法、装置、计算机设备及存储介质
CN109814910A (zh) * 2018-12-14 2019-05-28 深圳壹账通智能科技有限公司 自动化灰度发布方法、装置、计算机系统及存储介质
CN110333884A (zh) * 2019-06-05 2019-10-15 钛马信息网络技术有限公司 软件升级方法、分布式系统及装置
CN110427204A (zh) * 2019-08-08 2019-11-08 浪潮云信息技术有限公司 一种基于容器和服务网格技术的自动化灰度发布方法
CN110780904A (zh) * 2019-10-28 2020-02-11 深圳前海微众银行股份有限公司 一种应用更新方法及装置
CN111290867A (zh) * 2020-02-27 2020-06-16 北京三快在线科技有限公司 流量调度方法、业务服务器、存储介质及流量调度系统
CN111443941A (zh) * 2020-03-27 2020-07-24 中国平安财产保险股份有限公司 灰度发布的方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170048338A1 (en) * 2015-08-13 2017-02-16 Molbase (Shanghai) Biotechnology Co., Ltd. Online testing system and method thereof
WO2017070108A1 (en) * 2015-10-23 2017-04-27 Netflix, Inc. Techniques for determining client-side effects of server-side behavior using canary analysis
CN109240708A (zh) * 2018-07-02 2019-01-18 北京百度网讯科技有限公司 应用部署方法、装置、计算机设备及存储介质
CN109814910A (zh) * 2018-12-14 2019-05-28 深圳壹账通智能科技有限公司 自动化灰度发布方法、装置、计算机系统及存储介质
CN110333884A (zh) * 2019-06-05 2019-10-15 钛马信息网络技术有限公司 软件升级方法、分布式系统及装置
CN110427204A (zh) * 2019-08-08 2019-11-08 浪潮云信息技术有限公司 一种基于容器和服务网格技术的自动化灰度发布方法
CN110780904A (zh) * 2019-10-28 2020-02-11 深圳前海微众银行股份有限公司 一种应用更新方法及装置
CN111290867A (zh) * 2020-02-27 2020-06-16 北京三快在线科技有限公司 流量调度方法、业务服务器、存储介质及流量调度系统
CN111443941A (zh) * 2020-03-27 2020-07-24 中国平安财产保险股份有限公司 灰度发布的方法及装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
SHRIRAM RAJAGOPALAN等: "App–Bisect: Autonomous Healing for Microservice-based Apps", 《" 7TH USENIX WORKSHOP ON HOT TOPICS IN CLOUD COMPUTING 》, pages 1 - 7 *
小石桥胡同: "金丝雀(灰度)发版系列一,基于Kong实现", pages 1 - 9, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/196775758> *
熊军军等: "基于"Nginx+Lua"组件的应用系统灰度发布", 《金融电子化》, pages 92 - 94 *
赵毅等: "恒丰银行分布式核心系统-API网关技术原型落地实践", 《中国金融电脑》, no. 04, pages 48 - 55 *
阿里云技术: "微服务治理实践 | 金丝雀发布", pages 1 - 29, Retrieved from the Internet <URL:https://blog.csdn.net/weixin_43970890/article/details/104796289> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114640687A (zh) * 2022-03-15 2022-06-17 北京中交兴路信息科技有限公司 一种软件升级方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN112199104B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN107844343B (zh) 一种复杂服务端应用系统的升级系统及方法
US10635473B2 (en) Setting support program, setting support method, and setting support device
CN109309693B (zh) 基于docker的多服务系统、部署方法及装置、设备及存储介质
CN108255708B (zh) 测试环境中访问生产文件的方法、装置、存储介质及设备
CN110602227B (zh) 一种智能合约管理的方法以及相关装置
CN111694638A (zh) 规则包加载方法、规则包执行方法及终端设备
CN110750286B (zh) OTA升级Mbn的管理方法、装置、系统、设备和介质
CN110990350B (zh) 日志的解析方法及装置
CN112615747A (zh) 一种网络设备自动部署配置的方法及装置
CN110069406B (zh) 自动触发的tpc-ds测试方法以及系统
CN112199104A (zh) 一种软件升级方法、装置、电子设备和存储介质
CN110737458A (zh) 一种代码更新方法和相关装置
CN113900925A (zh) 测试环境搭建利用方法、装置、设备和存储介质
US9176974B1 (en) Low priority, multi-pass, server file discovery and management
CN112631646A (zh) App版本降级的数据兼容方法、装置、设备及存储介质
CN110795674A (zh) 一种配置更新方法及装置
CN115729590A (zh) 服务部署方法、装置、设备和计算机可读存储介质
CN115016821A (zh) 回调数据的灰度分发方法、装置、计算机设备和存储介质
CN113326052A (zh) 业务组件的升级方法、装置、计算机设备和存储介质
CN110727601B (zh) 多平台程序的测试方法及相关装置
CN113704114A (zh) 功能接口的自动化测试方法、装置、设备及介质
CN114840407A (zh) 一种Mock测试方法及相关设备
CN112860398A (zh) 基于规则引擎的数据处理方法、装置、设备及介质
CN109922482B (zh) Omc系统的部署方法、omc系统、电子设备和存储介质
CN111125232A (zh) 一种公有云资产信息接入的方法及装置

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
GR01 Patent grant
GR01 Patent grant