应用的灰度发布控制方法、装置、设备及计算机存储介质
文献发布时间:2023-06-19 11:39:06
技术领域
本发明属于云计算技术领域,尤其涉及一种应用的灰度发布控制方法、装置、电子设备及计算机存储介质。
背景技术
在一般情况下,升级服务器端应用时,需要将应用源码或程序包上传到服务器,然后停止掉老版本应用,再启动新版本应用。但是这种简单的发布方式存在两个问题:一方面,在新版本应用升级过程中,服务是暂时中断的;另一方面,如果新版本应用有漏洞(BUG),升级失败,回滚至老版本应用也非常麻烦,容易造成更长时间的服务不可用。
灰度发布也叫金丝雀发布,起源是矿井工人发现金丝雀对瓦斯气体很敏感,故矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。在应用的灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本应用上,然后再对新版本应用做运行状态观察,收集各种运行状态数据,再对新旧版本做各种数据对比,就是所谓的A/B测试。
当确认新版本应用运行良好后,再逐步将更多的流量导入到新版本应用上,在此期间,还可以不断地调整新旧两个版本应用的运行的服务器副本数量,以使得新版本应用能够承受越来越大的流量压力,直到将100%的流量都切换到新版本应用上,最后关闭剩下的老版本应用,完成灰度发布。如果在灰度发布过程中(灰度期)发现了新版本应用有问题,就应该立即将流量切回老版本应用上,这样就会将负面影响控制在最小范围内。传统的应用的灰度发布控制方法只支持应用的两个版本的灰度发布,难以满足越来越多的个性化的应用需求和快速的版本发布迭代。
因此,如何能够实现应用的至少三个版本的灰度发布,进而满足越来越多的个性化的应用需求和快速的版本发布迭代是本领域技术人员亟需解决的技术问题。
发明内容
本发明实施例提供一种应用的灰度发布控制方法、装置、电子设备及计算机存储介质,能够实现应用的至少三个版本的灰度发布,进而满足越来越多的个性化的应用需求和快速的版本发布迭代。
第一方面,提供了一种应用的灰度发布控制方法,应用具有至少三个第一应用版本,第一应用版本为应用的所有应用版本中参与灰度发布的应用版本,应用于软负载均衡设备,包括:
接收硬负载均衡设备发送的用于访问应用的用户服务请求;
基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求;
接收目标Pod发送的用户服务请求对应的服务请求响应结果;
向硬负载均衡设备发送服务请求响应结果以反馈至用户端。
可选地,接收硬负载均衡设备发送的用于访问应用的用户服务请求之前,还包括:
配置至少三个第一应用版本对应的服务资源。
可选地,基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求,包括:
确定至少三个第一应用版本中各个第一应用版本对应的流量比例、Pod数量;
基于各个第一应用版本对应的流量比例、Pod数量,确定流量权重;
基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重,向目标Pod转发用户服务请求。
可选地,基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重,向目标Pod转发用户服务请求,包括:
根据各个第一应用版本对应的每个Pod的标签,确定目标Pod的互联网协议地址;
基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重及互联网协议地址,向目标Pod转发用户服务请求。
可选地,根据各个第一应用版本对应的每个Pod的标签,确定目标Pod的互联网协议地址,包括:
确定各个第一应用版本对应的任一Pod的键值对,并将键值对作为任一Pod的标签;
根据每个Pod的标签,确定目标Pod的互联网协议地址。
可选地,接收硬负载均衡设备发送的用于访问应用的用户服务请求,包括:
获取软负载均衡设备的会话率;
当确定会话率大于预设会话率阈值时,接收硬负载均衡设备发送的用户服务请求。
第二方面,提供了一种应用的灰度发布控制装置,应用具有至少三个第一应用版本,第一应用版本为应用的所有应用版本中参与灰度发布的应用版本,应用于软负载均衡设备,包括:
第一接收模块,用于接收硬负载均衡设备发送的用于访问应用的用户服务请求;
转发模块,用于基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求;
第二接收模块,用于接收目标Pod发送的用户服务请求对应的服务请求响应结果;
发送模块,用于向硬负载均衡设备发送服务请求响应结果以反馈至用户端。
可选地,该应用的灰度发布控制装置还包括:
配置模块,用于配置至少三个第一应用版本对应的服务service资源。
可选地,转发模块用于确定至少三个第一应用版本中各个第一应用版本对应的流量比例、Pod数量;基于各个第一应用版本对应的流量比例、Pod数量,确定流量权重;基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重,向目标Pod转发用户服务请求。
可选地,转发模块用于根据各个第一应用版本对应的每个Pod的标签,确定目标Pod的互联网协议地址;基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重及互联网协议地址,向目标Pod转发用户服务请求。
可选地,转发模块用于确定各个第一应用版本对应的任一Pod的键值对,并将键值对作为任一Pod的标签;根据每个Pod的标签,确定目标Pod的互联网协议地址。
可选地,第一接收模块用于获取软负载均衡设备的会话率;当确定会话率大于预设会话率阈值时,接收硬负载均衡设备发送的用户服务请求。
第三方面,提供了一种电子设备,电子设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现第一方面或第一方面任一可选的实现方式中的应用的灰度发布控制方法。
第四方面,提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现第一方面或第一方面任一可选的实现方式中的应用的灰度发布控制方法。
本发明实施例的应用的灰度发布控制方法、装置、电子设备及计算机存储介质,能够实现应用的至少三个版本的灰度发布,进而满足越来越多的个性化的应用需求和快速的版本发布迭代。该应用的灰度发布控制方法在接收硬负载均衡设备发送的用于访问应用的用户服务请求后,基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求并接收目标Pod发送的用户服务请求对应的服务请求响应结果,实现了应用的至少三个版本的灰度发布。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用的灰度发布控制方法的流程示意图;
图2是本发明实施例提供的另一种应用的灰度发布控制方法的流程示意图;
图3是本发明实施例提供的一种应用的灰度发布控制装置的结构示意图;
图4是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
传统的应用的灰度发布控制方法只支持应用的两个版本的灰度发布,难以满足越来越多的个性化的应用需求和快速的版本发布迭代。
为了解决现有技术问题,本发明实施例提供了一种应用的灰度发布控制方法、装置、电子设备及计算机存储介质。下面首先对本发明实施例所提供的应用的灰度发布控制方法进行介绍。
图1是本发明实施例提供的一种应用的灰度发布控制方法的流程示意图。应用具有至少三个第一应用版本,第一应用版本为应用的所有应用版本中参与灰度发布的应用版本。该应用的灰度发布控制方法应用于软负载均衡设备,如图1所示,其包括:
S101、接收硬负载均衡设备发送的用于访问应用的用户服务请求。
在实际工程环境中,随着PaaS平台的应用和普及,docker已经成为了最重要的应用部署和运行环境,而Kubernetes作为docker的管控和服务编排平台已经占据了绝对的领导地位。Kubernetes主要服务实体概念如下:
Pod安排在节点上,包含一组容器(container)和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用本地主机(local host)互相通信。实际的应用是通过pod中的容器进行部署的。
服务(Service)资源是定义一系列Pod以及访问这些Pod的策略的一层抽象。Service通过标签(Label)找到Pod组。
Ingress是Service对外暴露服务的方案,实现外部访问路由到真正的业务Pod上,其部署于软负载均衡设备上。通常的灰度发布就是靠Ingress的路由控制,配置不同的服务资源以实现用户对不同版本的访问。
由于服务(Service)资源是定义一系列Pod以及访问这些Pod的策略的一层抽象,故在一个实施例中,接收硬负载均衡设备发送的用于访问应用的用户服务请求之前,通常还可以包括:配置至少三个第一应用版本对应的服务资源。
为了保障应用的灰度发布控制流程顺利进行,在一个实施例中,接收硬负载均衡设备发送的用于访问应用的用户服务请求,通常可以包括:获取软负载均衡设备的会话率;当确定会话率大于预设会话率阈值时,接收硬负载均衡设备发送的用户服务请求。其中,会话率表示软负载均衡设备单位时间内的处理的请求数。
S102、基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求。
为了准确地确定每个第一应用版本的流量权重,在一个实施例中,基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求,通常可以包括:确定至少三个第一应用版本中各个第一应用版本对应的流量比例、Pod数量;基于各个第一应用版本对应的流量比例、Pod数量,确定流量权重;基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重,向目标Pod转发用户服务请求。
在一个实施例中,多个应用版本的流量权重设置具体为:
设定app1的流量比例为p1,pod数量为n1,每个pod的权重为w1;app2的流量比例为p2,pod数量为n2,每个pod的权重为w2;app3的流量比例为p3,pod数量为n3,每个pod的权重为w3。目标函数为:
(w1·n1)/p1=(w2·n2)/p2=(w3·n3)/p3
若w1=p1·n2·n3且w2=p2·n1·n3且w3=p3·n1·n2成立,则可以求出w1、w2、w3的最大公约数gcd。最终赋值为:
w1:=w1/gcd;w2:=w2/gcd;w3:=w3/gcd。
为了准确地向目标Pod转发用户服务请求,在一个实施例中,基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重,向目标Pod转发用户服务请求,通常可以包括:根据各个第一应用版本对应的每个Pod的标签,确定目标Pod的互联网协议地址;基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重及互联网协议(InternetProtocol,IP)地址,向目标Pod转发用户服务请求。
在一个实施例中,若一个应用可存在多个版本,灰度发布的时候,可选择特定的几个版本进行灰度发布(例如已有5个版本,可以选择其中3个进行灰度发布,其余不参与)。在一个实施例中,可以通过使用列表和标签过滤的方式,直接获取这3个版本的pod IP地址,并且把流量按比例直接路由到具体的pod服务上。
为了准确地确定目标Pod的互联网协议地址,在一个实施例中,根据各个第一应用版本对应的每个Pod的标签,确定目标Pod的互联网协议地址,通常可以包括:确定各个第一应用版本对应的任一Pod的键值对,并将键值对作为任一Pod的标签;根据每个Pod的标签,确定目标Pod的互联网协议地址。
在一个实施例中,标签是一个键值对,可以用在kubernetes的各类对象中。故可以在Pod中设置应用版本的标签,对于应用的Pod的各个版本可以在启动时设置关于版本的不同值。通过kubernetes的应用程序接口(Application Programming Interface,API)及标签选择器(Labels Selectors),客户端(在本例中就是Ingress)能够访问到指定的Pod。
S103、接收目标Pod发送的用户服务请求对应的服务请求响应结果。
S104、向硬负载均衡设备发送服务请求响应结果以反馈至用户端。
软负载均衡设备在接收目标Pod发送的用户服务请求对应的服务请求响应结果后,向硬负载均衡设备发送服务请求响应结果以反馈至用户端。
该应用的灰度发布控制方法在接收硬负载均衡设备发送的用于访问应用的用户服务请求后,基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求并接收目标Pod发送的用户服务请求对应的服务请求响应结果,实现了应用的至少三个版本的灰度发布,进而满足越来越多的个性化的应用需求和快速的版本发布迭代。
下面以一个实施例对上述内容进行说明,具体如下:
图2是本发明实施例提供的另一种应用的灰度发布控制方法的流程示意图,如图2所示:外部应用访问,也即外部服务调用访问;硬负载F5,即通过硬负载设备做负载均衡服务转发;软负载Ingress通过服务资源获得Pod的所有实例列表,再通过关于版本(version)的标签直接获得每个版本的Pod实例的IP地址,基于流量比例分摊流量到具体的多个版本的Pod应用实例;最后对应版本的Pod应用实例返回服务请求结果。
本发明实施例还提供一种应用的灰度发布控制装置,该应用的灰度发布控制装置与上文描述的应用的灰度发布控制方法可相互对应参照。图3是本发明实施例提供的一种应用的灰度发布控制装置的结构示意图,如图3所示,该应用的灰度发布控制装置包括:
第一接收模块301,用于接收硬负载均衡设备发送的用于访问应用的用户服务请求;
转发模块302,用于基于用户服务请求和各个第一应用版本预设的流量比例,向至少三个第一应用版本中的目标应用版本对应的目标Pod转发用户服务请求;
第二接收模块303,用于接收目标Pod发送的用户服务请求对应的服务请求响应结果;
发送模块304,用于向硬负载均衡设备发送服务请求响应结果以反馈至用户端。
可选地,在一个实施例中,该应用的灰度发布控制装置还包括:
配置模块,用于配置至少三个第一应用版本对应的服务service资源。
可选地,在一个实施例中,转发模块302用于确定至少三个第一应用版本中各个第一应用版本对应的流量比例、Pod数量;基于各个第一应用版本对应的流量比例、Pod数量,确定流量权重;基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重,向目标Pod转发用户服务请求。
可选地,在一个实施例中,转发模块302用于根据各个第一应用版本对应的每个Pod的标签,确定目标Pod的互联网协议地址;基于用户服务请求、各个第一应用版本对应的每个Pod的流量权重及互联网协议地址,向目标Pod转发用户服务请求。
可选地,在一个实施例中,转发模块302用于确定各个第一应用版本对应的任一Pod的键值对,并将键值对作为任一Pod的标签;根据每个Pod的标签,确定目标Pod的互联网协议地址。
可选地,在一个实施例中,第一接收模块301用于获取软负载均衡设备的会话率;当确定会话率大于预设会话率阈值时,接收硬负载均衡设备发送的用户服务请求。
图3提供的应用的灰度发布控制装置中的各个模块具有实现图1所示实例中各个步骤的功能,并达到与图1所示应用的灰度发布控制方法相同的技术效果,为简洁描述,在此不再赘述。
图4是本发明实施例提供的一种电子设备的结构示意图。
电子设备可以包括处理器401以及存储有计算机程序指令的存储器402。
具体地,上述处理器401可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在综合网关容灾设备的内部或外部。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现图1所示的应用的灰度发布控制方法。
在一个示例中,电子设备还可包括通信接口403和总线410。其中,如图4所示,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。
通信接口403,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线410包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
另外,结合上述实施例中的应用的灰度发布控制方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现图1所示的应用的灰度发布控制方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
- 应用的灰度发布控制方法、装置、设备及计算机存储介质
- 灰度发布方法、装置、计算机设备及计算机存储介质