CN113138774A - 灰度发布方法、装置、电子设备、介质和程序产品 - Google Patents

灰度发布方法、装置、电子设备、介质和程序产品 Download PDF

Info

Publication number
CN113138774A
CN113138774A CN202110513925.6A CN202110513925A CN113138774A CN 113138774 A CN113138774 A CN 113138774A CN 202110513925 A CN202110513925 A CN 202110513925A CN 113138774 A CN113138774 A CN 113138774A
Authority
CN
China
Prior art keywords
gray scale
gray
server
grayscale
control engine
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
CN202110513925.6A
Other languages
English (en)
Other versions
CN113138774B (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110513925.6A priority Critical patent/CN113138774B/zh
Publication of CN113138774A publication Critical patent/CN113138774A/zh
Application granted granted Critical
Publication of CN113138774B publication Critical patent/CN113138774B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

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

Abstract

本公开提供了一种灰度发布方法,包括:响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将目标对象的新版本被部署在服务器集群的灰度服务器上,将目标对象的旧版本被部署在服务器集群的非灰度服务器上。由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,灰度爬坡策略用于表征流入灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段。在灰度验证结果表明符合灰度拉齐条件的情况下,由流程控制引擎驱动灰度拉齐流程将目标对象的新版本部署在非灰度服务器上来完成目标对象的灰度发布。本公开提供了一种灰度发布装置、电子设备、介质和程序产品。本公开提供的方法和装置例如可以应用于金融领域或其他领域。

Description

灰度发布方法、装置、电子设备、介质和程序产品
技术领域
本公开涉及互联网技术领域,特别是涉及一种灰度发布方法、装置、电子设备、介质和程序产品。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着智能终端以及移动通信技术的飞速发展,整个社会已步入“互联网+”的时代,消费互联网已经渗透到人们生活的各个领域,人们对产品服务的要求越来越高。银行在整个“互联网+”的生态中,扮演着越来越重要的角色,各行业对银行也提出了更高的行业标准和要求。在此背景下,银行也在不断地拓展新的业务领域,而随着业务领域的不断拓展,银行系统的架构不断变化,规模持续增长,各系统的用户量以及影响也在不断扩大,因此通过快速迭代的方式去了解试探用户的需求变得越来越重要。但是在快速迭代的模式下,针对版本升级的传统发布方式存在较大的技术风险和业务风险,为了降低新版本发布可能带来的风险,相关技术中通常采用灰度发布(Feature Toggle)的方式来实现未上线功能的平稳过渡。
但是灰度发布涉及多次版本的升级部署、每次升级部署之后的灰度验证、灰度过程中出现问题时的应急切换、以及灰度期切换等多个阶段,各个阶段的系统部署或配置极大地增加了运维人员的操作步骤和复杂程度,也增加了运维风险。
发明内容
有鉴于此,为了至少部分地克服相关技术在灰度发布时所存在的上述技术问题,本公开提供了一种不仅可以减少运维人员的操作步骤和复杂程度,还可以降低运维风险的基于流程控制的自动化的灰度发布解决方案,即灰度发布方法、装置、电子设备、介质和程序产品。
为了实现上述目标,本公开的一个方面提供了一种灰度发布方法,可以包括:响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将上述目标对象的不同版本部署在服务器集群上,其中,上述目标对象的新版本被部署在上述服务器集群的灰度服务器上,上述目标对象的旧版本被部署在上述服务器集群的非灰度服务器上;由上述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,其中,灰度爬坡策略用于表征流入上述灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数;以及在上述灰度验证结果表明符合灰度拉齐条件的情况下,由上述流程控制引擎驱动灰度拉齐流程将上述目标对象的新版本部署在上述非灰度服务器上,来完成上述目标对象的灰度发布。
根据本公开的实施例,上述由上述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果可以包括:由上述流程控制引擎驱动部署验证流程来获得上述灰度服务器的部署验证结果;在上述灰度服务器的部署验证结果表明部署验证通过的情况下,由上述流程控制引擎驱动灰度验证流程来获得上述灰度服务器的灰度验证结果;在上述灰度服务器的灰度验证结果表明灰度验证通过的情况下,由上述流程控制引擎驱动灰度期切换流程来将上述目标对象的灰度发布切换至灰度期;以及由上述流程控制引擎驱动上述灰度爬坡流程按照上述灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,上述方法还可以包括:在上述灰度服务器的部署验证结果表明部署验证未通过的情况下,由上述流程控制引擎停止上述目标对象的灰度发布;和/或在上述灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由上述流程控制引擎驱动上述灰度期切换流程来将上述目标对象的灰度发布切换至异常期。
根据本公开的实施例,上述由上述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果可以包括:针对上述m个灰度阶段中的每个灰度阶段,获得流入上述灰度服务器的灰度用户的用户流量;由上述流程控制引擎驱动上述灰度爬坡流程来确定上述灰度服务器的数量是否满足流入上述灰度服务器的灰度用户的用户流量;在上述灰度服务器的数量不满足流入上述灰度服务器的灰度用户的用户流量的情况下,增加上述服务器集群中灰度服务器的数量来获得扩容后的灰度服务器;由上述流程控制引擎驱动上述灰度验证流程来获得上述扩容后的灰度服务器的灰度验证结果;以及在上述扩容后的灰度服务器的灰度验证结果表明灰度验证通过的情况下,由上述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,上述方法还可以包括:在上述扩容后的灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由上述流程控制引擎终止上述灰度爬坡流程;以及由上述流程控制引擎驱动上述灰度期切换流程来将上述目标对象的灰度发布切换至异常期。
根据本公开的实施例,上述方法还可以包括:在将上述目标对象的新版本部署在上述非灰度服务器上之后,获得流入上述扩容后的灰度服务器的灰度用户的用户流量;由上述流程控制引擎驱动上述灰度爬坡流程来确定上述扩容后的灰度服务器的数量是否满足流入上述扩容后的灰度服务器的灰度用户的用户流量;以及在上述扩容后的灰度服务器的数量不满足流入上述扩容后的灰度服务器的灰度用户的用户流量的情况下,减少上述服务器集群中灰度服务器的数量来获得缩容后的灰度服务器。
根据本公开的实施例,上述方法还可以包括:由上述流程控制引擎驱动灰度验证流程来获得上述非灰度服务器的灰度验证结果;以及在上述非灰度服务器的灰度验证结果表明灰度验证通过的情况下,由上述流程控制引擎驱动灰度期切换流程来将上述目标对象的灰度发布切换至非灰度期。
根据本公开的实施例,上述方法还可以包括:在上述非灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由上述流程控制引擎驱动灰度期切换流程来将上述目标对象的灰度发布切换至应急期;以及由上述流程控制引擎驱动灰度应急流程来将上述目标对象的新版本回退至上述目标对象的旧版本。
根据本公开的实施例,针对上述m个灰度阶段中的第m个灰度阶段,在上述灰度服务器的灰度验证通过的情况下,确定上述灰度验证结果表明符合上述灰度拉齐条件。
为了实现上述目标,本公开的另一个方面提供了一种灰度发布装置,可以包括:版本部署模块,用于响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将上述目标对象的不同版本部署在服务器集群上,其中,上述目标对象的新版本被部署在上述服务器集群的灰度服务器上,上述目标对象的旧版本被部署在上述服务器集群的非灰度服务器上;灰度爬坡模块,用于由上述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,其中,灰度爬坡策略用于表征流入上述灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数;以及灰度发布模块,用于在上述灰度验证结果表明符合灰度拉齐条件的情况下,由上述流程控制引擎驱动灰度拉齐流程将上述目标对象的新版本部署在上述非灰度服务器上,来完成上述目标对象的灰度发布。
根据本公开的实施例,上述灰度爬坡模块可以包括:第一获得子模块,用于由上述流程控制引擎驱动部署验证流程来获得上述灰度服务器的部署验证结果;第二获得子模块,用于在上述灰度服务器的部署验证结果表明部署验证通过的情况下,由上述流程控制引擎驱动灰度验证流程来获得上述灰度服务器的灰度验证结果;第一切换子模块,用于在上述灰度服务器的灰度验证结果表明灰度验证通过的情况下,由上述流程控制引擎驱动灰度期切换流程来将上述目标对象的灰度发布切换至灰度期;以及第三获得子模块,用于由上述流程控制引擎驱动上述灰度爬坡流程按照上述灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,上述装置还可以包括:停止子模块,用于在上述灰度服务器的部署验证结果表明部署验证未通过的情况下,由上述流程控制引擎停止上述目标对象的灰度发布;和/或第二切换子模块,用于在上述灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由上述流程控制引擎驱动上述灰度期切换流程来将上述目标对象的灰度发布切换至异常期。
根据本公开的实施例,上述灰度爬坡模块可以包括:第四获得子模块,用于针对上述m个灰度阶段中的每个灰度阶段,获得流入上述灰度服务器的灰度用户的用户流量;第一确定子模块,用于由上述流程控制引擎驱动上述灰度爬坡流程来确定上述灰度服务器的数量是否满足流入上述灰度服务器的灰度用户的用户流量;扩容子模块,用于在上述灰度服务器的数量不满足流入上述灰度服务器的灰度用户的用户流量的情况下,增加上述服务器集群中灰度服务器的数量来获得扩容后的灰度服务器;第五获得子模块,用于由上述流程控制引擎驱动上述灰度验证流程来获得上述扩容后的灰度服务器的灰度验证结果;以及第六获得子模块,用于在上述扩容后的灰度服务器的灰度验证结果表明灰度验证通过的情况下,由上述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,上述装置还可以包括:终止子模块,用于在上述扩容后的灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由上述流程控制引擎终止上述灰度爬坡流程;以及第三切换子模块,用于由上述流程控制引擎驱动上述灰度期切换流程来将上述目标对象的灰度发布切换至异常期。
根据本公开的实施例,上述装置还可以包括:第七获得子模块,用于在将上述目标对象的新版本部署在上述非灰度服务器上之后,获得流入上述扩容后的灰度服务器的灰度用户的用户流量;第二确定子模块,用于由上述流程控制引擎驱动上述灰度爬坡流程来确定上述扩容后的灰度服务器的数量是否满足流入上述扩容后的灰度服务器的灰度用户的用户流量;以及缩容子模块,用于在上述扩容后的灰度服务器的数量不满足流入上述扩容后的灰度服务器的灰度用户的用户流量的情况下,减少上述服务器集群中灰度服务器的数量来获得缩容后的灰度服务器。
根据本公开的实施例,上述装置还可以包括:灰度验证模块,用于由上述流程控制引擎驱动灰度验证流程来获得上述非灰度服务器的灰度验证结果;以及第一灰度切换模块,用于在上述非灰度服务器的灰度验证结果表明灰度验证通过的情况下,由上述流程控制引擎驱动灰度期切换流程来将上述目标对象的灰度发布切换至非灰度期。
根据本公开的实施例,上述装置还包括:第二灰度切换模块,用于在上述非灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由上述流程控制引擎驱动灰度期切换流程来将上述目标对象的灰度发布切换至应急期;以及回退模块,用于由上述流程控制引擎驱动灰度应急流程来将上述目标对象的新版本回退至上述目标对象的旧版本。
根据本公开的实施例,针对上述m个灰度阶段中的第m个灰度阶段,在上述灰度服务器的灰度验证通过的情况下,确定上述灰度验证结果表明符合上述灰度拉齐条件。
为了实现上述目标,本公开的另一方面提供了一种电子设备,包括:一个或多个处理器,存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的灰度发布方法。
为了实现上述目标,本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的灰度发布方法。
为了实现上述目标,本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的灰度发布方法。
根据本公开的实施例,由流程控制引擎驱动版本部署流程将目标对象的不同版本部署在服务器集群上,驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,驱动灰度拉齐流程将所述目标对象的新版本部署在所述非灰度服务器上,来完成所述目标对象的灰度发布,通过流程控制引擎的驱动来控制目标对象灰度发布过程所涉及的各个阶段的系统部署或配置,实现整个灰度发布过程的一键式操作,可以至少部分地克服相关技术中各个阶段的系统部署或配置极大地增加运维人员的操作步骤和复杂程度,也增加运维风险的技术问题,不仅可以减少运维人员的操作步骤和复杂程度,还可以降低运维风险。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1示意性示出了适用于本公开实施例的灰度发布方法、装置、电子设备、介质和程序产品的系统架构;
图2示意性示出了适用于本公开实施例的灰度发布方法、装置、电子设备、介质和程序产品的应用场景;
图3示意性示出了根据本公开实施例的灰度发布方法的流程图;
图4示意性示出了根据本公开实施例的灰度发布的阶段图;
图5示意性示出了根据本公开另一实施例的灰度发布方法的流程图;
图6示意性示出了根据本公开实施例的灰度发布装置的框图;
图7示意性示出了根据本公开另一实施例的灰度发布装置的框图;
图8示意性示出了根据本公开实施例的适于实现上文描述的灰度发布方法的计算机可读存储介质产品的示意图;以及
图9示意性示出了根据本公开实施例的适于实现上文描述的灰度发布方法的电子设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
应该注意的是,附图并未按比例绘制,并且出于说明目的,在整个附图中类似结构或功能的元素通常用类似的附图标记来表示。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了上述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程灰度发布装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。灰度发布通过新旧版本的短期共存,且控制新版本只向特定用户发布,使得新版本存在的问题,只会影响到特定用户而不会影响到全量用户,从而达到降低新版本投产风险的目的。但是各个阶段的系统部署或配置极大地增加了运维人员的操作步骤和复杂程度,也增加了运维风险。
本公开的实施例提供了一种灰度发布方法,包括版本部署阶段、灰度爬坡阶段以及灰度拉齐阶段。其中在版本部署阶段,响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将目标对象的不同版本部署在服务器集群上,目标对象的新版本被部署在服务器集群的灰度服务器上,目标对象的旧版本被部署在服务器集群的非灰度服务器上。在灰度爬坡阶段,由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,灰度爬坡策略用于表征流入灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数。在灰度拉齐阶段,在灰度验证结果表明符合灰度拉齐条件的情况下,由流程控制引擎驱动灰度拉齐流程将目标对象的新版本部署在非灰度服务器上,来完成目标对象的灰度发布。
本公开基于流程控制引擎的灰度自动化发布方案及系统,对灰度发布的各阶段场景及流程判断进行自动化处理。可以解决灰度发布带来的运维复杂度提高、风险增大的问题,自动化的部署模式可以提升系统运维能力,灰度渐进式引流能力可以充分发挥灰度发布的优势。整体上,本方案提供的灰度发布方法可以极大地提升应用系统的运营效率,降低了出现问题时的对用户的影响。
需要说明的是,本公开提供的灰度发布方法、装置、电子设备、介质和程序产品可用于金融领域中,也可用于除金融领域之外的任意领域中。因此,对本公开所提供的灰度发布方法、装置、电子设备、介质和程序产品的应用领域不做限定。
图1示意性示出了适用于本公开实施例的灰度发布方法、装置、电子设备、介质和程序产品的系统架构100。需要注意的是,图1所示仅为可应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的灰度发布方法一般可以由服务器105执行。相应地,本公开实施例所提供的灰度发布装置一般可以设置于服务器105中。本公开实施例所提供的灰度发布方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的灰度发布装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
对于互联网产品来说,上线和未上线就是黑与白之分,而实现未上线功能平稳过渡的一种方式称为灰度发布。非黑即白从来不是一种普遍现象,从色彩角度讲,灰度指不饱和的黑色,把黑色定为基准色,每个灰度对象是从白色到黑色的中间值。互联网产品的几大特点:用户规模大,版本更新频繁。新版本的每次上线,产品都要承受极大的压力,而灰度发布可以很好的规避这种风险。灰度发布通过新旧版本短期共存,且控制新版本只向特定用户发布的方式,使得新版本的问题只影响部分用户,从而达到降低新版本投产风险的目的。
图2示意性示出了适用于本公开实施例的灰度发布方法、装置、电子设备、介质和程序产品的应用场景。如图2所示,在该应用场景200中,包括服务器集群210,根据目标对象220的实际部署需要,可以将目标对象220的不同版本(新版本2201、旧版本2202)部署在服务器集群210中的服务器上,在本公开中,将部署有目标对象220的新版本2201的服务器称为灰度服务器2101,将部署目标对象220的旧版本2202的服务器称为非灰度服务器2102。本公开从较小的灰度范围开始,逐渐扩大灰度范围,在灰度范围达到一定程度,且已经达到灰度发布的系统评估的目的后,可进行新版本2201的整体对外发布,此时需要将非灰度服务器2102中部署的旧版本2202升级至新版本2201。
需要说明的是,在本公开的上下文中,新旧版本并存期为灰度期。灰度期内系统指定的特定用户为灰度用户。灰度验证不仅包含在灰度期内,灰度用户对新版本系统进行的体验验证,也包含通过技术手段对新版本系统进行的各类技术指标验证。在灰度验证出现问题的情况下,为保证对灰度用户正常地提供服务,将灰度用户切换至旧版本系统为灰度应急切换。逐步扩大灰度用户范围为灰度爬坡。经过一定周期的灰度验证,新版本具备全面推广能力的情况下,将部署系统的所有服务器升级为新版本为灰度拉齐。
图3示意性示出了根据本公开实施例的灰度发布方法的流程图。
如图3所示,该灰度发布方法300可以包括操作S310~操作S330。
在操作S310,响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将目标对象的不同版本部署在服务器集群上。
根据本公开的实施例,目标对象指的是需要对其进行灰度发布的对象,例如可以是系统应用。流程控制引擎用来驱动业务按照设定的固定流程去流转。固定流程指的是灰度发布过程中涉及到的灰度升级、灰度爬坡、灰度验证、灰度期切换、灰度拉齐的各个流程。目标对象的不同版本包括新版本以及旧版本。版本部署流程被流程控制引擎驱动后,将新版本导入服务器集群中的一个或多个服务器,目标对象的新版本就被部署在服务器集群的灰度服务器上,将旧版本导入服务器集群中除灰度服务器之外的一个或多个服务器上,目标对象的旧版本就被部署在服务器集群的非灰度服务器上。
在操作S320,由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,在版本部署流程完成之后,可以进入灰度爬坡流程,灰度爬坡策略用于表征流入灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数,即m个灰度阶段中,对相邻的两个灰度阶段来说,后一灰度阶段的灰度用户在前一灰度阶段的灰度用户的基础上有所增加。对m个灰度阶段来说,对在先进入的灰度阶段进行灰度验证,在验证通过的情况下,进入下一个灰度阶段,直到进入第m个灰度阶段。具体地,首先进入第一个灰度阶段,对第一个灰度阶段的灰度服务器进行灰度验证,在验证通过的情况下,进入第二个灰度阶段,并对第二个灰度阶段的灰度服务器进行灰度验证,在验证通过的情况下,进入第三个灰度阶段,以此类推,直到进入第m个灰度阶段。一旦某一灰度阶段的灰度验证未通过,则终止灰度爬坡流程,进入应急切换,以保证新版本不对外提供服务,不影响用户的正常使用。
根据本公开的实施例,针对目标对象的全量用户,可以按照一定的灰度爬坡策略先选取部分用户,让先选取出的部分用户先行体验新版本的应用,通过收集这部分用户对新版本应用的反馈以及对新版本功能、性能、稳定性等监测指标进行评论,进而决定继续扩大新版本的灰度用户的用户流量直至全量用户,还是从新版本回滚至旧版本。
可选地,可以先对目标对象的全量用户添加用户标识,该用户标识用来区分用户,同时也可以为后续的数据分析做辅助。具体地,需要先进行必要的用户标识,即分用户,可以从多个方面来区分用户,包括但不限于地理位置、用户终端特性(分辨率、性能)、用户自身特性(性别、年龄、忠诚度)、付费数量、所在地区、活跃程度。在添加用户标识的基础上,进行灰度用户以及灰度用户的用户流量的筛选。
在本公开中,可以根据不同的配置维度来确定灰度爬坡策略。其中配置维度可以包括但不限于地区、白名单、黑名单、手机尾号、逻辑分片。具体地,可以参考用户特征、用户流量、用户范围以及用户体验的一致性,版本迭代针对全量用户还是部分用户,小流量试验通过再放量。体验一致性要求考虑新旧版本的跨度是否过大,用户能否接受,流入灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段中,每个灰度阶段对应的灰度用户可以按照内部用户、种子用户、活跃用户、所有用户的顺序。
例如,配置维度为地区,灰度范围包括北京、上海和江苏,全量用户包括北京用户、上海用户和江苏用户,若灰度爬坡策略包括3个灰度阶段,则可以按照“北京”、“北京、上海”、“北京、上海、江苏”的灰度爬坡策略逐步扩大灰度用户的灰度范围,即在第一个灰度阶段,灰度用户为北京用户,流入灰度服务器的用户流量为北京用户流量,在第二个灰度阶段,灰度用户为北京用户和上海用户,流入灰度服务器的用户流量为北京用户流量和上海用户流量,在第三个灰度阶段,灰度用户为北京用户、上海用户和江苏用户,流入灰度服务器的用户流量为北京用户流量、上海用户流量和江苏用户流量。
又例如,配置维度为手机尾号,灰度范围包括手机尾号0到9,全量用户包括手机尾号0到手机尾号9的用户,若灰度爬坡策略包括5个灰度阶段,则可以按照“手机尾号0、手机尾号1”、“手机尾号0、手机尾号1、手机尾号2、手机尾号3”、“手机尾号0、手机尾号1、手机尾号2、手机尾号3、手机尾号4、手机尾号5”、“手机尾号0、手机尾号1、手机尾号2、手机尾号3、手机尾号4、手机尾号5、手机尾号6、手机尾号7”、“手机尾号0、手机尾号1、手机尾号2、手机尾号3、手机尾号4、手机尾号5、手机尾号6、手机尾号7、手机尾号8、手机尾号9”的灰度爬坡策略逐步扩大灰度用户的灰度范围,即在第一个灰度阶段,灰度用户为手机尾号0、以及手机尾号1的用户,流入灰度服务器的用户流量为手机尾号0、以及手机尾号1的用户流量,在第二个灰度阶段,灰度用户为手机尾号0、手机尾号1、手机尾号2、手机尾号3的用户,流入灰度服务器的用户流量为手机尾号0、手机尾号1、手机尾号2、手机尾号3的用户流量,第三个灰度阶段、第四个灰度阶段、第五个灰度阶段中的灰度用户以及流入灰度服务器的用户流量可以以此类推,不再赘述。
在操作S330,在灰度验证结果表明符合灰度拉齐条件的情况下,由流程控制引擎驱动灰度拉齐流程将目标对象的新版本部署在非灰度服务器上,来完成目标对象的灰度发布。
根据本公开的实施例,在灰度验证结果表明符合灰度拉齐条件的情况下,表明灰度用户的覆盖范围已经达到一定程度,在已经达到灰度发布的系统评估目的后,可进行新版本的整体对外发布,此时需要将非灰度服务器升级至新版本,具体实施时,可以将目标对象的新版本部署在非灰度服务器上。
通过本公开的实施例,由流程控制引擎驱动版本部署流程将目标对象的不同版本部署在服务器集群上,驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,驱动灰度拉齐流程将所述目标对象的新版本部署在所述非灰度服务器上,来完成所述目标对象的灰度发布,通过流程控制引擎的驱动来控制目标对象灰度发布过程所涉及的各个阶段的系统部署或配置,实现整个灰度发布过程的一键式操作,可以至少部分地克服相关技术中各个阶段的系统部署或配置极大地增加运维人员的操作步骤和复杂程度,也增加运维风险的技术问题,不仅可以减少运维人员的操作步骤和复杂程度,还可以降低运维风险。
作为一种可选的实施例,由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果可以包括:由流程控制引擎驱动部署验证流程来获得灰度服务器的部署验证结果;在灰度服务器的部署验证结果表明部署验证通过的情况下,由流程控制引擎驱动灰度验证流程来获得灰度服务器的灰度验证结果;在灰度服务器的灰度验证结果表明灰度验证通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至灰度期;以及由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,部署验证流程可以对部署在灰度服务器上新版本进行部署验证,可以包括但不限于新版本的可用性、新版本的稳定性、新版本的使用次数、新版本的使用频率。
根据本公开的实施例,部署验证流程也可以对灰度服务器进行各项技术指标验证,各项技术指标可以包括但不限于服务器可用性、服务器稳定性、服务器使用次数、服务器使用频率。
通过本公开的实施例,由流程控制引擎驱动部署验证流程进行部署验证,并由流程控制引擎驱动灰度验证流程,在两者验证均通过的情况下,驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,可以提高灰度爬坡的效率。
作为一种可选的实施例,方法还包括:在灰度服务器的部署验证结果表明部署验证未通过的情况下,由流程控制引擎停止目标对象的灰度发布;和/或在灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至异常期。
根据本公开的实施例,在部署验证未通过的情况下,及时停止部署发布。在部署验证通过,但是灰度验证未通过的情况下,可以切换至异常状态,将全量客户固定路由至非灰度服务器,保证新版本不对外服务,不造成对客户的影响。
通过本公开的实施例,由流程控制引擎驱动部署验证流程进行部署验证,并由流程控制引擎驱动灰度验证流程,在任一验证未通过的情况下,及时停止后续流程的进行,可以及时发现灰度发布中出现问题的流程,降低运维风险。
作为一种可选的实施例,由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果包括:针对m个灰度阶段中的每个灰度阶段,获得流入灰度服务器的灰度用户的用户流量;由流程控制引擎驱动灰度爬坡流程来确定灰度服务器的数量是否满足流入灰度服务器的灰度用户的用户流量;在灰度服务器的数量不满足流入灰度服务器的灰度用户的用户流量的情况下,增加服务器集群中灰度服务器的数量来获得扩容后的灰度服务器;由流程控制引擎驱动灰度验证流程来获得扩容后的灰度服务器的灰度验证结果;以及在扩容后的灰度服务器的灰度验证结果表明灰度验证通过的情况下,由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
根据本公开的实施例,可以分析判断当前的灰度服务器的数量是否能够支撑下一个灰度阶段的灰度用户的用户流量,若不能支撑,则需要进行服务器扩容。具体实施时,可以确定当前的灰度服务器本身所能支撑的用户流量与全量用户的占比,下一个灰度阶段的灰度用户的用户流量与全量用户的占比,根据两个占比之间的比例关系,确定是否需要进行服务器扩容,若需要,则根据两个占比之间的比例关系,线性的增加灰度服务器数量,以实现灰度服务器的扩容。例如,当前的灰度服务器的数量为2台,2台灰度服务器本身所能支撑的用户流量与全量用户的占比为10%(即1台灰度服务器本身所能支撑的用户流量与全量用户的占比为5%),下一个灰度阶段的灰度用户的用户流量与全量用户的占比为30%,那么要想支撑下一个灰度阶段的灰度用户的用户流量,就需要6台服务器,因此需要在当前已经有2台灰度服务器的基础上再增加4台灰度服务器以支撑下一个灰度阶段的灰度用户的用户流量。
根据本公开的实施例,灰度服务器扩容后,需要对其重新进行灰度验证,来检验新增加的服务器是否有问题。若灰度验证通过,则进行后续流程。
通过本公开的实施例,在灰度发布过程中,可以灵活实现灰度服务器的扩容,且及时对扩容后的灰度服务器进行灰度验证,利用验证通过的扩容后的灰度服务器来支撑每一个灰度阶段的灰度用户的用户流量,有利于灰度发布的平滑过渡。
作为一种可选的实施例,方法还包括:在扩容后的灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由流程控制引擎终止灰度爬坡流程;以及由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至异常期。
根据本公开的实施例,若灰度验证不通过,则切换至异常,停止灰度爬坡及后续流程,将客户全量引流至非灰度服务器。
通过本公开的实施例,在灰度发布过程中,可以灵活实现灰度服务器的扩容,且及时对扩容后的灰度服务器进行灰度验证,在验证未通过的情况下,及时进行灰度发布状态的切换,避免存在问题的新版本对用户造成的影响,且可以保证给用户提供正常的服务。
作为一种可选的实施例,方法还包括:在将目标对象的新版本部署在非灰度服务器上之后,获得流入扩容后的灰度服务器的灰度用户的用户流量;由流程控制引擎驱动灰度爬坡流程来确定扩容后的灰度服务器的数量是否满足流入扩容后的灰度服务器的灰度用户的用户流量;以及在扩容后的灰度服务器的数量不满足流入扩容后的灰度服务器的灰度用户的用户流量的情况下,减少服务器集群中灰度服务器的数量来获得缩容后的灰度服务器。
根据本公开的实施例,前面阶段由于涉及灰度服务器的扩容,在灰度发布以后,可能已经不需要这么多的灰度服务器,可按需进行灰度服务的缩容操作。具体实施时,可以确定扩容后的灰度服务器本身所能支撑的用户流量与全量用户的占比,确定是否需要进行服务器缩容,若需要,则根据两个占比之间的比例关系,线性的减少灰度服务器数量,以实现灰度服务器的缩容。例如,当前扩容后的灰度服务器的数量为10台,10台灰度服务器本身所能支撑的用户流量与全量用户的占比为200%(即1台灰度服务器本身所能支撑的用户流量与全量用户的占比为20%),那么仅需要5台服务器就足以支撑全量用户的用户流量,因此需要在当前10台服务器的基础上减少5台服务器到5台服务器。
通过本公开的实施例,可以在不需要那么多服务器的情况下,灵活实现灰度服务器的缩容,不仅可以释放对服务器资源的长期占用,避免服务器的资源浪费,还不影响给用户提供正常的服务。
作为一种可选的实施例,方法还包括:由流程控制引擎驱动灰度验证流程来获得非灰度服务器的灰度验证结果;以及在非灰度服务器的灰度验证结果表明灰度验证通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至非灰度期。
根据本公开的实施例,对新升级的非灰度服务器进行系统验证,验证通过进行后续流程,切换至非灰度期,此时灰度、非灰度服务器已均为新系统版本,因此后续不再判断用户灰度身份,用户请求将随机路由至灰度和非灰度服务器。
通过本公开的实施例,在非灰度服务器的灰度验证通过的情况下,将目标对象的灰度发布切换至非灰度期,将非灰度服务器升级至新版本,可以实现新版本的整体对外发布,可以降低运维人员的操作步骤和复杂度,同时可以降低运维风险。
作为一种可选的实施例,方法还包括:在非灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至应急期;以及由流程控制引擎驱动灰度应急流程来将目标对象的新版本回退至目标对象的旧版本。
根据本公开的实施例,若非灰度服务器的灰度验证未通过,由于目前所有服务器已升级至新版本,如果此时发现问题,无法通过路由再切换至老版本,只能进行服务器版本回退操作。
通过本公开的实施例,对非灰度服务器进行灰度验证,在验证未通过的情况下,及时进行版本回退,可以减少对用户所造成的影响,并给用户提供正常的服务。
作为一种可选的实施例,针对m个灰度阶段中的第m个灰度阶段,在灰度服务器的灰度验证通过的情况下,确定灰度验证结果表明符合灰度拉齐条件。
根据本公开的实施例,考虑到m个灰度阶段中任一灰度阶段的灰度验证未通过,都将终止后续灰度阶段的进行,因此在第m个灰度阶段的灰度验证通过的情况下,说明m个灰度阶段中每个灰度阶段的灰度验证均通过,此时灰度期结果,进行灰度拉齐以进入非灰度期。
通过本公开的实施例,利用第m个灰度阶段的灰度验证结果是否验证通过,确定灰度验证结果是否符合灰度拉齐条件,可以实现灰度拉齐的自动识别,可以减少运维人员的操作步骤和复杂度。
在本公开中,灰度发布的过程包括灰度版本部署、灰度验证、灰度期切换、灰度爬坡、灰度拉齐等一系列操作流程。图4示意性示出了根据本公开实施例的灰度发布的阶段图。如图4所示,本公开的灰度发布阶段400可以包括版本导入以及首次部署阶段410、灰度爬坡阶段420以及灰度拉齐阶段430。
具体实施时,在版本导入以及首次部署阶段410,进行版本部署准备工作,进行首次部署,并根据部署验证情况切换灰度期。在灰度爬坡阶段420,基于灰度爬坡机制,逐步扩大灰度客户范围。在灰度拉齐阶段430,将非灰度服务器升级至新版本,来实现新版本的整体对外发布。下面将结合图5所示的各项操作,对图4中的各阶段包括的具体操作进行详细说明。
图5示意性示出了根据本公开另一实施例的灰度发布方法的流程图。
如图5所示,该灰度发布方法500可以包括在版本导入以及首次部署阶段410的操作S5110~操作S5160,在灰度爬坡阶段420的操作S5210~操作S5260,以及在灰度拉齐阶段430的操作S5310~操作S5370。
具体实施时,在版本导入以及首次部署阶段410,版本包导入(操作S5110),灰度阶段1包含的灰度服务器升级部署(操作S5120),调起灰度验证接口,对灰度服务器进行验证(操作S5130),确定灰度验证是否通过(操作S5140),若通过,则更改灰度期开关参数,切换至灰度期,灰度阶段1部署完毕(操作S5150),若不通过,则更改灰度期开关参数,切换至异常状态,流量全部进入非灰度服务器(操作S5160)。
具体实施时,在灰度爬坡阶段420,按需对灰度服务器扩容,扩容时间早于下一个灰度阶段调整时间(操作S5210),调起灰度验证接口,对灰度服务器进行验证(操作S5220),确定灰度验证是否通过(操作S5230),若通过,则继续灰度流量爬坡逻辑(操作S5240),若不通过,则终止灰度流量爬坡,根据情况调整灰度期开关参数,进行应急切换(操作S5250),确定爬坡是否至最后灰度阶段(操作S5260)。若是,则进入灰度拉齐阶段。若否,则返回操作S5210。
具体实施时,在灰度拉齐阶段430,灰度期结束,进行灰度拉齐(操作S5310),非灰度服务器升级部署(操作S5320),调起非灰度验证接口,对非灰度服务器进行验证(操作S5330),确定灰度验证是否通过(操作S5340),若通过,则更改灰度期开关参数,切换至非灰度期,系统全量升级部署完毕(操作S5350),按需对灰度服务器缩容,缩容时间晚于灰度拉齐时间(操作S5370),若不通过,则应急,版本回退等(操作S5360)。
通过本公开的实施例,提供了一种基于流程控制引擎的灰度自动化发布方案及系统。通过流程控制引擎控制灰度升级、灰度爬坡、灰度验证、灰度期切换、灰度拉齐等各个阶段的系统部署或配置,实现整个灰度发布过程的一键式操作,有效降低了运维人员的操作步骤和复杂度,同时降低了运维风险。
图6示意性示出了根据本公开实施例的灰度发布装置的框图。
如图6所示,该灰度发布装置600可以包括版本部署模块610、灰度爬坡模块620以及灰度发布模块630。
版本部署模块610,用于响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将目标对象的不同版本部署在服务器集群上,其中,目标对象的新版本被部署在服务器集群的灰度服务器上,目标对象的旧版本被部署在服务器集群的非灰度服务器上。可选地,版本部署模块610例如可以用于执行图3描述的操作S310,在此不再赘述。
灰度爬坡模块620,用于由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,其中,灰度爬坡策略用于表征流入灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数。可选地,灰度爬坡模块620例如可以用于执行图3描述的操作S320,在此不再赘述。
灰度发布模块630,用于在灰度验证结果表明符合灰度拉齐条件的情况下,由流程控制引擎驱动灰度拉齐流程将目标对象的新版本部署在非灰度服务器上,来完成目标对象的灰度发布。可选地,灰度发布模块630例如可以用于执行图3描述的操作S330,在此不再赘述。
作为一种可选的实施例,灰度爬坡模块可以包括:第一获得子模块,用于由流程控制引擎驱动部署验证流程来获得灰度服务器的部署验证结果;第二获得子模块,用于在灰度服务器的部署验证结果表明部署验证通过的情况下,由流程控制引擎驱动灰度验证流程来获得灰度服务器的灰度验证结果;第一切换子模块,用于在灰度服务器的灰度验证结果表明灰度验证通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至灰度期;以及第三获得子模块,用于由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
作为一种可选的实施例,灰度发布装置还可以包括:停止子模块,用于在灰度服务器的部署验证结果表明部署验证未通过的情况下,由流程控制引擎停止目标对象的灰度发布;和/或第二切换子模块,用于在灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至异常期。
作为一种可选的实施例,灰度爬坡模块可以包括:第四获得子模块,用于针对m个灰度阶段中的每个灰度阶段,获得流入灰度服务器的灰度用户的用户流量;第一确定子模块,用于由流程控制引擎驱动灰度爬坡流程来确定灰度服务器的数量是否满足流入灰度服务器的灰度用户的用户流量;扩容子模块,用于在灰度服务器的数量不满足流入灰度服务器的灰度用户的用户流量的情况下,增加服务器集群中灰度服务器的数量来获得扩容后的灰度服务器;第五获得子模块,用于由流程控制引擎驱动灰度验证流程来获得扩容后的灰度服务器的灰度验证结果;以及第六获得子模块,用于在扩容后的灰度服务器的灰度验证结果表明灰度验证通过的情况下,由流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
作为一种可选的实施例,灰度发布装置还可以包括:终止子模块,用于在扩容后的灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由流程控制引擎终止灰度爬坡流程;以及第三切换子模块,用于由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至异常期。
作为一种可选的实施例,灰度发布装置还可以包括:第七获得子模块,用于在将目标对象的新版本部署在非灰度服务器上之后,获得流入扩容后的灰度服务器的灰度用户的用户流量;第二确定子模块,用于由流程控制引擎驱动灰度爬坡流程来确定扩容后的灰度服务器的数量是否满足流入扩容后的灰度服务器的灰度用户的用户流量;以及缩容子模块,用于在扩容后的灰度服务器的数量不满足流入扩容后的灰度服务器的灰度用户的用户流量的情况下,减少服务器集群中灰度服务器的数量来获得缩容后的灰度服务器。
作为一种可选的实施例,灰度发布装置还可以包括:灰度验证模块,用于由流程控制引擎驱动灰度验证流程来获得非灰度服务器的灰度验证结果;以及第一灰度切换模块,用于在非灰度服务器的灰度验证结果表明灰度验证通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至非灰度期。
作为一种可选的实施例,灰度发布装置还可以包括:第二灰度切换模块,用于在非灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由流程控制引擎驱动灰度期切换流程来将目标对象的灰度发布切换至应急期;以及回退模块,用于由流程控制引擎驱动灰度应急流程来将目标对象的新版本回退至目标对象的旧版本。
作为一种可选的实施例,针对m个灰度阶段中的第m个灰度阶段,在灰度服务器的灰度验证通过的情况下,确定灰度验证结果表明符合灰度拉齐条件。
图7示意性示出了根据本公开另一实施例的灰度发布装置的框图。
如图7所示,该灰度发布装置700可以包括流程控制引擎710、系统验证组件720、灰度渐进式引流组件730、以及服务器集群740。
具体实施时,流程控制引擎710负责驱动整个灰度发布流程,通过定时、结果判断等方式控制发布流程,完成版本部署、灰度期切换、灰度拉齐等。系统验证组件720负责对新版本进行自动化验证,包括健康检查、配置参数、中间件等技术验证,也包括核心业务流水验证,完成灰度验证工作。灰度渐进式引流组件730负责控制灰度客户范围,可根据配置策略逐步扩大客户范围,支持白名单、黑名单、按地区号、按手机尾号、按逻辑分片等策略,完成灰度爬坡工作。服务器集群740指的是版本部署服务器,其中包含灰度服务器、非灰度服务器,并对其做物理隔离,根据客户灰度身份路由至对应服务器集群。
需要说明的是,灰度发布装置部分实施例中各模块的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与灰度发布方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FNGA)、可编程逻辑阵列(NLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,版本部署模块,灰度爬坡模块,灰度发布模块,第一获得子模块,第二获得子模块,第一切换子模块,第三获得子模块,停止子模块,第二切换子模块,第四获得子模块,第一确定子模块,扩容子模块,第六获得子模块,终止子模块,第三切换子模块,第七获得子模块,第二确定子模块,缩容子模块,灰度验证模块,第一灰度切换模块,第二灰度切换模块以及回退模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,版本部署模块,灰度爬坡模块,灰度发布模块,第一获得子模块,第二获得子模块,第一切换子模块,第三获得子模块,停止子模块,第二切换子模块,第四获得子模块,第一确定子模块,扩容子模块,第六获得子模块,终止子模块,第三切换子模块,第七获得子模块,第二确定子模块,缩容子模块,灰度验证模块,第一灰度切换模块,第二灰度切换模块以及回退模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FNGA)、可编程逻辑阵列(NLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,版本部署模块,灰度爬坡模块,灰度发布模块,第一获得子模块,第二获得子模块,第一切换子模块,第三获得子模块,停止子模块,第二切换子模块,第四获得子模块,第一确定子模块,扩容子模块,第六获得子模块,终止子模块,第三切换子模块,第七获得子模块,第二确定子模块,缩容子模块,灰度验证模块,第一灰度切换模块,第二灰度切换模块以及回退模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图8示意性示出了根据本公开实施例的适于实现上文描述的灰度发布方法的计算机可读存储介质产品的示意图。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在设备上运行时,程序代码用于使设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的灰度发布方法中的前述各项操作(或步骤),例如,电子设备可以执行如图3中所示的操作S310~操作S330、如图5中所示的操作S5110~操作S5160、操作S5210~操作S5260、以及操作S5310~操作S5370。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ENROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图8所示,描述了根据本发明的实施方式的灰度发布的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如Java,C++等,还包括常规的过程式程序设计语言-诸如“C”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAA)或广域网(WAA)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
图9示意性示出了根据本公开实施例的适于实现上文描述的灰度发布方法的电子设备的框图。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CNU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例图3中所示的操作S310~操作S330、如图5中所示的操作S5110~操作S5160、操作S5210~操作S5260、以及操作S5310~操作S5370。
根据本公开的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。系统900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAA卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的灰度发布方法,包括图3中所示的操作S310~操作S330、如图5中所示的操作S5110~操作S5160、操作S5210~操作S5260、以及操作S5310~操作S5370。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ENROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目标,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (13)

1.一种灰度发布方法,包括:
响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将所述目标对象的不同版本部署在服务器集群上,其中,所述目标对象的新版本被部署在所述服务器集群的灰度服务器上,所述目标对象的旧版本被部署在所述服务器集群的非灰度服务器上;
由所述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,其中,灰度爬坡策略用于表征流入所述灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数;
在所述灰度验证结果表明符合灰度拉齐条件的情况下,由所述流程控制引擎驱动灰度拉齐流程将所述目标对象的新版本部署在所述非灰度服务器上,来完成所述目标对象的灰度发布。
2.根据权利要求1所述的方法,其中,所述由所述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果包括:
由所述流程控制引擎驱动部署验证流程来获得所述灰度服务器的部署验证结果;
在所述灰度服务器的部署验证结果表明部署验证通过的情况下,由所述流程控制引擎驱动灰度验证流程来获得所述灰度服务器的灰度验证结果;
在所述灰度服务器的灰度验证结果表明灰度验证通过的情况下,由所述流程控制引擎驱动灰度期切换流程来将所述目标对象的灰度发布切换至灰度期;
由所述流程控制引擎驱动所述灰度爬坡流程按照所述灰度爬坡策略来获得灰度验证结果。
3.根据权利要求2所述的方法,其中,所述方法还包括:
在所述灰度服务器的部署验证结果表明部署验证未通过的情况下,由所述流程控制引擎停止所述目标对象的灰度发布;和/或
在所述灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由所述流程控制引擎驱动所述灰度期切换流程来将所述目标对象的灰度发布切换至异常期。
4.根据权利要求1所述的方法,其中,所述由所述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果包括:
针对所述m个灰度阶段中的每个灰度阶段,获得流入所述灰度服务器的灰度用户的用户流量;
由所述流程控制引擎驱动所述灰度爬坡流程来确定所述灰度服务器的数量是否满足流入所述灰度服务器的灰度用户的用户流量;
在所述灰度服务器的数量不满足流入所述灰度服务器的灰度用户的用户流量的情况下,增加所述服务器集群中灰度服务器的数量来获得扩容后的灰度服务器;
由所述流程控制引擎驱动所述灰度验证流程来获得所述扩容后的灰度服务器的灰度验证结果;
在所述扩容后的灰度服务器的灰度验证结果表明灰度验证通过的情况下,由所述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果。
5.根据权利要求4所述的方法,其中,所述方法还包括:
在所述扩容后的灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由所述流程控制引擎终止所述灰度爬坡流程;
由所述流程控制引擎驱动所述灰度期切换流程来将所述目标对象的灰度发布切换至异常期。
6.根据权利要求4所述的方法,其中,所述方法还包括:
在将所述目标对象的新版本部署在所述非灰度服务器上之后,获得流入所述扩容后的灰度服务器的灰度用户的用户流量;
由所述流程控制引擎驱动所述灰度爬坡流程来确定所述扩容后的灰度服务器的数量是否满足流入所述扩容后的灰度服务器的灰度用户的用户流量;
在所述扩容后的灰度服务器的数量不满足流入所述扩容后的灰度服务器的灰度用户的用户流量的情况下,减少所述服务器集群中灰度服务器的数量来获得缩容后的灰度服务器。
7.根据权利要求1所述的方法,其中,所述方法还包括:
由所述流程控制引擎驱动灰度验证流程来获得所述非灰度服务器的灰度验证结果;
在所述非灰度服务器的灰度验证结果表明灰度验证通过的情况下,由所述流程控制引擎驱动灰度期切换流程来将所述目标对象的灰度发布切换至非灰度期。
8.根据权利要求7所述的方法,其中,所述方法还包括:
在所述非灰度服务器的灰度验证结果表明灰度验证未通过的情况下,由所述流程控制引擎驱动灰度期切换流程来将所述目标对象的灰度发布切换至应急期;
由所述流程控制引擎驱动灰度应急流程来将所述目标对象的新版本回退至所述目标对象的旧版本。
9.根据权利要求1所述的方法,其中:
针对所述m个灰度阶段中的第m个灰度阶段,在所述灰度服务器的灰度验证通过的情况下,确定所述灰度验证结果表明符合所述灰度拉齐条件。
10.一种灰度发布装置,包括:
版本部署模块,用于响应于目标对象的灰度发布请求,由流程控制引擎驱动版本部署流程来将所述目标对象的不同版本部署在服务器集群上,其中,所述目标对象的新版本被部署在所述服务器集群的灰度服务器上,所述目标对象的旧版本被部署在所述服务器集群的非灰度服务器上;
灰度爬坡模块,用于由所述流程控制引擎驱动灰度爬坡流程按照灰度爬坡策略来获得灰度验证结果,其中,灰度爬坡策略用于表征流入所述灰度服务器的灰度用户的用户流量依次增大的m个灰度阶段,m为正整数;
灰度发布模块,用于在所述灰度验证结果表明符合灰度拉齐条件的情况下,由所述流程控制引擎驱动灰度拉齐流程将所述目标对象的新版本部署在所述非灰度服务器上,来完成所述目标对象的灰度发布。
11.一种电子设备,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时使处理器执行根据权利要求1至9中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时执行根据权利要求1至9中任一项所述的方法。
CN202110513925.6A 2021-05-11 2021-05-11 灰度发布方法、装置、电子设备和介质 Active CN113138774B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110513925.6A CN113138774B (zh) 2021-05-11 2021-05-11 灰度发布方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110513925.6A CN113138774B (zh) 2021-05-11 2021-05-11 灰度发布方法、装置、电子设备和介质

Publications (2)

Publication Number Publication Date
CN113138774A true CN113138774A (zh) 2021-07-20
CN113138774B CN113138774B (zh) 2024-02-09

Family

ID=76816932

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110513925.6A Active CN113138774B (zh) 2021-05-11 2021-05-11 灰度发布方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN113138774B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113793137A (zh) * 2021-09-29 2021-12-14 中国银行股份有限公司 手机银行版本发布控制方法及装置
CN114760303A (zh) * 2022-03-29 2022-07-15 京东科技信息技术有限公司 服务器集群的流量配置、流量分配以及服务程序升级方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109814910A (zh) * 2018-12-14 2019-05-28 深圳壹账通智能科技有限公司 自动化灰度发布方法、装置、计算机系统及存储介质
WO2019128205A1 (zh) * 2017-12-29 2019-07-04 中兴通讯股份有限公司 实现灰度发布的方法、装置及计算节点和系统
WO2020181684A1 (zh) * 2019-03-12 2020-09-17 平安科技(深圳)有限公司 管理灰度发布的方法、系统、设备及存储介质
CN112506559A (zh) * 2020-12-14 2021-03-16 招商局金融科技有限公司 基于网关的灰度发布方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019128205A1 (zh) * 2017-12-29 2019-07-04 中兴通讯股份有限公司 实现灰度发布的方法、装置及计算节点和系统
CN109814910A (zh) * 2018-12-14 2019-05-28 深圳壹账通智能科技有限公司 自动化灰度发布方法、装置、计算机系统及存储介质
WO2020181684A1 (zh) * 2019-03-12 2020-09-17 平安科技(深圳)有限公司 管理灰度发布的方法、系统、设备及存储介质
CN112506559A (zh) * 2020-12-14 2021-03-16 招商局金融科技有限公司 基于网关的灰度发布方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113793137A (zh) * 2021-09-29 2021-12-14 中国银行股份有限公司 手机银行版本发布控制方法及装置
CN114760303A (zh) * 2022-03-29 2022-07-15 京东科技信息技术有限公司 服务器集群的流量配置、流量分配以及服务程序升级方法

Also Published As

Publication number Publication date
CN113138774B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
US11449774B2 (en) Resource configuration method and apparatus for heterogeneous cloud services
CN113138774A (zh) 灰度发布方法、装置、电子设备、介质和程序产品
CN114358921A (zh) 系统切换方法、装置、设备、介质和程序产品
CN114416512A (zh) 测试方法、装置、电子设备和计算机存储介质
CN105205174A (zh) 用于分布式系统的文件处理方法和装置
CA3059719C (en) Payment processing method, device, medium and electronic device
CN107045475B (zh) 测试方法和装置
CN111340220A (zh) 用于训练预测模型的方法和装置
CN104391686A (zh) 流程控制方法及装置
CN106776784A (zh) 一种web页面快速加载的方法
CN111580882B (zh) 应用程序启动方法、装置、计算机系统和介质
CN115658098A (zh) 一种分布式业务处理系统的升级方法及装置
CN115170321A (zh) 批量交易数据的处理方法和装置
CN114911492A (zh) 推理服务部署方法、装置、设备以及存储介质
CN105354090A (zh) 虚拟设备的管理方法和装置
CN110635961B (zh) 服务器的压测方法、装置和系统
CN112835617B (zh) 一种灰度发布方法、装置、服务器及可读介质
CN118193200A (zh) 内存弹性伸缩方法、装置、设备、介质和产品
CN112965916A (zh) 页面测试方法、页面测试装置、电子设备及可读存储介质
CN111131359B (zh) 用于生成信息的方法和装置
CN114170821B (zh) 信号机的性能检测方法、装置、交通信号灯的控制系统
CN115378809A (zh) 一种软件版本升级方法及装置
CN111385353B (zh) 一种提供应用呈现信息的方法与设备
CN115658305A (zh) 一种车辆服务激活管理方法、系统、电子设备、存储介质
CN115080434A (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