应用灰度发布方法、装置、电子设备及存储介质与流程

文档序号:17357231发布日期:2019-04-09 21:47阅读:226来源:国知局
应用灰度发布方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,具体而言,涉及一种应用灰度发布方法、应用灰度发布装置、电子设备以及计算机可读存储介质。



背景技术:

随着软件技术的迅速发展,产品的迭代速度越来越快,尤其是互联网产品,如果按照传统的发布方式则发布周期比较长,因此,如何快速发布新版本产品成为了关注的焦点。

灰度发布是指在新版本发布时不直接覆盖旧的版本,而是有一段新旧版本的共存时间,通过逐渐增加新版本承担的负载权重,直到完全替代旧的版本。在现有的灰度发布中,如果发布过程中出现问题,回滚耗时长、对业务影响较大。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明实施例的目的在于提供一种应用灰度发布方法、应用灰度发布装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。

根据本发明实施例的第一方面,提供了一种应用灰度发布方法,包括:在接收到第一环境中的用户请求时,从所述用户请求中提取客户端信息;基于所述客户端信息确定将所述用户请求分流到第二环境的分流策略;确定所述第二环境中用户的数量与总用户数量的比例是否达到预定阈值;若未达到所述预定阈值,则基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器;若达到所述预定阈值,则等待预定时间后基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

在本发明的一些示例性实施例中,基于前述方案,确定将所述用户请求分流到第二环境的分流策略之后,所述应用灰度发布方法还包括:若确定的所述分流策略为多级分流策略,则将所述多级分流策略按顺序与所述用户请求进行匹配;将匹配得到的分流策略作为最终确定的分流策略。

在本发明的一些示例性实施例中,基于前述方案,等待预定时间后基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器,包括:等待预定时间后,升高所述预定阈值;基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布方法还包括:在接收到所述第一环境中的用户请求之前,提取所述第一环境下的客户端的本地数据中包含的客户端信息;基于所述客户端信息自定义所述分流策略;将自定义的所述分流策略存储到所述第二环境下的目标数据库中。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布方法还包括:从所述目标数据库获取所述分流策略,将获取的分流策略一键下发至所述第二环境下的nginx服务器。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布方法还包括:在接收到所述第一环境中的用户请求时,拦截所述用户请求;获取所述用户请求与所述第一环境的会话,将所述会话保存到所述目标数据库中。

在本发明的一些示例性实施例中,基于前述方案,所述分流策略包括互联网协议地址清单分流、流量百分比分流、用户名清单分流中的一种或多种。

根据本发明实施例的第二方面,提供一种应用灰度发布装置,包括:提取单元,用于在接收到第一环境中的用户请求时,从所述用户请求中提取客户端信息;分流策略确定单元,用于基于所述客户端信息确定将所述用户请求分流到第二环境的分流策略;阈值确定单元,用于确定所述第二环境中用户的数量与总用户数量的比例是否达到预定阈值;第一分流单元,用于若未达到所述预定阈值,则基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器;第二分流单元,用于若达到所述预定阈值,则等待预定时间后基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

根据本发明实施例的第三方面,提供一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上述第一方面所述的应用灰度发布方法。

根据本发明实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的应用灰度发布方法。

在本发明的一些实施例所提供的技术方案中,一方面,基于用户请求中的客户端信息确定将用户请求分流到第二环境的分流策略,能够通过控制分流策略来动态地调整第二环境承担的负载;另一方面,在第二环境中用户的数量与总用户数量的比例达到预定阈值时,则等待预定时间后基于确定的分流策略将该用户请求分流到第二环境中对应的后台服务器,能够分批将第一环境中的用户分流到第二环境中,在出现问题时能够快速切换到正常环境,并且能够提升发布新版本的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示出了根据本发明的一些实施例的应用灰度发布方法的流程示意图;

图2示出了根据本发明的一些实施例确定分流策略的流程示意图;

图3示出了根据本发明的一示例性实施例的应用灰度发布装置的示意框图;

图4示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

图1示出了根据本发明的一些实施例的应用灰度发布方法的流程示意图,该应用灰度发布方法可以应用于nginx服务器。

参照图1所示,在步骤s110中,在接收到第一环境中的用户请求时,从所述用户请求中提取客户端信息。

在示例实施例中,第一环境为已发布版本的环境,通过nginx服务器接收第一环境中的用户请求,从该用户请求中提取客户端信息,客户端信息可以包括uid(useridentification,用户标识)信息和ip(internetprotocol,因特网协议)信息,uid信息为用户在网站平台注册会员时,网站平台系统自动分配的一个用户id的数值。

在步骤s120中,基于所述客户端信息确定将所述用户请求分流到第二环境的分流策略。

在示例实施例中,第二环境为待发布的版本环境。分流策略可以包括ip段分流(iprange)、uid用户段分流(uidrange)、uid尾数分流(uidsuffix)和指定特殊uid分流(uidappoint)。以uid尾数分流为例:{“尾数”:“1”,“服务器”:127.0.0.1:6060};{“尾数”:“3”,“服务器”:127.0.0.1:7070};{“尾数”:“5”,“服务器”:127.0.0.1:8080}。以ip段分流策略为例,在ip段清单中,iprange1:{“起点”:1000,“终点”:2000,“服务器”:127.0.0.1:6060},iprange2{“起点”:3000,“终点”:4000,“服务器”:127.0.0.1:7070},iprange3{“起点”:5000,“终点”:6000,“服务器”:127.0.0.1:8080}。iprange为ip地址划分的各段,服务器为各段ip地址对应的后端服务器,包括服务器的地址以及端口号;iprange中的起点和终点分别为ip分段的起始和终止,ip以整型表示。

在示例实施例中,当灰度系统启用ip段即iprange方式分流时,会根据用户请求的ip地址进行分流转发。假如用户请求中的ip地址转为整型后是3500,该用户请求将被转发至“服务器”:127.0.0.1:7070。

此外,在示例实施例中,分流策略还包括流量百分比分流以及用户名清单分流。其中,流量百分比分流为确定第二环境中各个服务器的流量百分比,基于确定的各个服务器的流量百分比进行分流,例如确定各个服务器的当前处理的流量占最大处理流量的比例,优先选择流量百分比小的服务器进行分流。

在用户名清单分流的方式中,nginx服务器接收用户请求后,从用户请求中解析出用户名信息,比对用户名白名单,将匹配到用户名白名单的用户请求分配到新版本服务器,其他请求分配到旧版本服务器。

在步骤s130中,确定所述第二环境中用户的数量与总用户数量的比例是否达到预定阈值。

在示例实施例中,可以设置第二环境中的用户数量与总用户数量的比例的预定阈值,根据该预定阈值将第一环境中的预定比例的用户分流到第二环境中。该预定阈值可以根据第二环境中各个服务器的数据处理能力来确定,例如可以将该预定阈值设为30%。

在步骤s140中,若未达到所述预定阈值,则基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

在示例实施例中,若确定第二环境中用户的数量与总用户数量的比例未达到该预定阈值,则基于所确定的分流策略将该用户请求分流到第二环境中对应的后台服务器。

在步骤s150中,若达到所述预定阈值,则等待预定时间后基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

在示例实施例中,若确定达到该预定阈值,则等待预定时间例如10分钟后,升高所述预定阈值,并基于所确定的分流策略将该用户请求分流到第第二环境中对应的后台服务器。

根据图1的示例实施例中的应用灰度发布方法,一方面,基于用户请求中的客户端信息确定将用户请求分流到第二环境的分流策略,能够通过控制分流策略来动态地调整第二环境承担的负载;另一方面,在第二环境中用户的数量与总用户数量的比例达到预定阈值时,则等待预定时间后基于确定的分流策略将该用户请求分流到第二环境中对应的后台服务器,能够分批将第一环境中的用户分流到第二环境中,在出现问题时能够快速切换到正常环境,并且能够提升发布新版本的效率。

进一步地,在示例实施例中,可以通过设定多个阈值分批将第一环境中的用户分流到第二环境中,例如第一阈值为总用户数的10%,逐渐将第一环境中的10%的用户分流到第二环境中,在第二环境中10%的用户稳定运行一段时间后,升高阈值例如将阈值升高到30%。一旦发现版本异常,可立即将全部用户切换到另一套环境,应用异常可快速恢复。

在示例实施例中,可以预设多个环境,每个环境分别对应不同的应用版本例如版本1、版本2、版本3…版本n,分流不同的用户到不同的环境,然后收集不同环境的处理效果,将处理效果最好的版本作为最终版本。

此外,在示例实施例中,在获取到分流策略时,将获取的分流策略一键下发至nginx服务器,nginx服务器无需重启,无需重新加载,将分流策略直接下发至nginx服务器内存,分流策略能够实时生效,实现秒级快速切换。

进一步地,在示例实施例中,为了实现用户无感知的切换环境,将客户端与服务器的会话即session集中保存,在环境切换后,用户会话不中断。例如,对应用系统增加拦截器,拦截器会拦截所有用户请求,并实现创建session和获取session的公有方法,所有session保存在redis数据库中,所有用户请求都会默认从redis库中获取session。当用户请求分流到不同服务器时都能获取到用户的session,从而确保用户会话不中断,用户操作连续、无感知。最终确保session稳定,即使某个节点有故障,会话也不会丢失。

此外,在示例实施例中,白天可以将用户分流到第一环境,对第二环境进行发版,不影响业务,一天24小时皆可发版,应用发版不再受限于运维,从而提升开发版本效率。

在一些实施例中,提取客户端的本地数据例如cookie中包含的客户端信息,基于所述客户端信息自定义所述分流策略;将自定义的所述分流策略存储到目标数据库中。例如,用户上传自定义的用户标识解析定义文件(通过脚本实现),用户可根据自身业务场景,自定义用户标识解析的方式方法。例如,对于流量百分比分流策略,用户自定义计算百分比的方法,以实现特殊业务场景。对于用户名分流策略,用户可自定义以uuid后缀、前缀做hash运算作为用户名,也可自定义手机设备id作为用户名等。分流策略自定义,默认的百分比、ip地址、用户名等策略不满足要求时,可以上传自定义的策略解析文件(lua脚本实现),结合用户标识自定义,能够实现多维度的分流,例如根据城市、地理位置、运营商、手机型号等维度进行分流。

进一步地,在示例实施例中,提取客户端的cookie中包含的客户端信息,基于所述客户端信息自定义分流策略,可扩展自定义策略,cookie中包含的信息都可以作为分流依据,如用户请求的url,请求参数、设备id、地理位置信息等,以此定义分流策略,然后,将上述自定义策略配置存储到redis数据库中。

图2示出了根据本发明的一些实施例确定分流策略的流程示意图。参照图2所示,在步骤s210中,若确定的所述分流策略为多级分流策略,则将所述多级分流策略按顺序与所述用户请求进行匹配。

在示例实施例中,多级分流策略是将多个单级分流策略按固定顺序绑定在一起,各分流策略按顺序匹配、不设优先级,每个请求将按多级分流策略中的并集进行分流。如:多级分流策略p0至p4:{[p0,p1],[p2,p3,p4]},多级分流策略转发的upstream:p0=>upstream1,upstream2;p1=>upstream2;p2=>upstream3,upstream4;p3=>upstream3;p4=>upstream3;default=>upstream1。对于用户请求1:满足p0策略、p1策略则转发upstream2;对于用户请求2:若不满足p0策略或者p1策略其中之一;则继续判断是否满足p2策略、p3策略、p4策略,如果全部满足,则转发至upstream3,否则转发默认即default的upstream1。upstream是指后台服务器环境的集合,upstream1是第1后台服务器环境,upstream2是第2后台服务器环境,依次类推。

在步骤s220中,将匹配得到的分流策略作为最终确定的分流策略。

在示例实施例中,将多级分流策略中与用户请求匹配的分流策略作为最终确定的分流策略。

在示例实施例中,若单级分流还不满足要求,可以将多个单级分流组合在一起,设定优先级,实现组合分流,确定组合分流策略中各策略的优先级。,将优先级最高的分流策略作为匹配到的分流策略。

此外,在本发明的实施例中,还提供了一种应用灰度发布装置。参照图3所示,该应用灰度发布装置300可以包括:提取单元310、分流策略确定单元320、阈值确定单元330以及分流单元340。其中,提取单元310用于在接收到第一环境中的用户请求时,从所述用户请求中提取客户端信息;分流策略确定单元320用于基于所述客户端信息确定将所述用户请求分流到第二环境的分流策略;阈值确定单元330用于确定所述第二环境中用户的数量与总用户数量的比例是否达到预定阈值;第一分流单元340用于若未达到所述预定阈值,则基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器;第二分流单元,用于若达到所述预定阈值,则等待预定时间后基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布装置300还包括:匹配单元,用于在确定将所述用户请求分流到第二环境的分流策略之后,若确定的所述分流策略为多级分流策略,则将所述多级分流策略按顺序与所述用户请求进行匹配;将匹配得到的分流策略作为最终确定的分流策略。

在本发明的一些示例性实施例中,基于前述方案,所述预定阈值包括多个阈值,第二分流单元340被配置为:等待预定时间后,升高所述预定阈值;基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布装置300还包括:提取单元,用于在接收到所述第一环境中的用户请求之前,提取所述第一环境下的客户端的本地数据中包含的客户端信息;分流策略定义单元,用于基于所述客户端信息自定义所述分流策略;存储单元,用于将自定义的所述分流策略存储到所述第二环境下的目标数据库中。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布装置300还包括:下发单元,用于从所述目标数据库获取所述分流策略,将获取的分流策略一键下发至所述第二环境下的nginx服务器。

在本发明的一些示例性实施例中,基于前述方案,所述应用灰度发布装置300还包括:拦截单元,用于在接收到所述第一环境中的用户请求时,拦截所述用户请求;会话保存单元,用于获取所述用户请求与所述第一环境的会话,将所述会话保存到所述目标数据库中。

在本发明的一些示例性实施例中,基于前述方案,所述分流策略包括互联网协议地址清单分流、流量百分比分流、用户名清单分流中的一种或多种。

由于本发明的示例实施例的应用灰度发布装置300的各个功能模块与上述应用灰度发布方法的示例实施例的步骤对应,因此在此不再赘述。

在本发明的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

下面参考图4,其示出了适于用来实现本发明实施例的电子设备的计算机系统400的结构示意图。图4示出的电子设备的计算机系统400仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,计算机系统400包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有系统操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(cpu)401执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的应用灰度发布方法。

例如,所述电子设备可以实现如图1中所示的:步骤s110,在接收到第一环境中的用户请求时,从所述用户请求中提取客户端信息;步骤s120,基于所述客户端信息确定将所述用户请求分流到第二环境的分流策略;步骤s130,确定所述第二环境中用户的数量与总用户数量的比例是否达到预定阈值;步骤s140,若未达到所述预定阈值,则基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器;步骤s150,若达到所述预定阈值,则等待预定时间后基于所确定的分流策略将所述用户请求分流到所述第二环境中对应的后台服务器。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备或装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1