CN114443125A - 基于灰度发布的切流方法、装置及存储介质 - Google Patents
基于灰度发布的切流方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114443125A CN114443125A CN202210113878.0A CN202210113878A CN114443125A CN 114443125 A CN114443125 A CN 114443125A CN 202210113878 A CN202210113878 A CN 202210113878A CN 114443125 A CN114443125 A CN 114443125A
- Authority
- CN
- China
- Prior art keywords
- server
- user terminal
- version
- access request
- gray scale
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种基于灰度发布的切流方法、装置及存储介质,涉及计算机技术领域,通过将Lua脚本与nginx服务器相结合,可以实现灰度发布过程的精准切流,从而可以提升用户体验。该方法应用于nginx服务器,包括:在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取用户终端的IP地址;将用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果;基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种基于灰度发布的切流方法、装置及存储介质。
背景技术
软件产品在发布新版程序时,一般采用灰度发布的发布方式。具体的,可以让大部分用户继续使用生产版本(即旧版)的软件产品,让小部分用户使用灰度版本(即新版)的软件产品。在小部分用户使用灰度版本的软件产品的过程中,可以根据用户的反馈体验对灰度版本的软件产品的功能进一步进行完善调整,之后再将所有用户都迁移至灰度版本。
现有的,一般可以基于nginx服务器(一种反向代理服务器)默认的加权轮询机制,对需要切流到灰度版本或生产版本的用户的访问请求进行权重的配置。
然而,现有通过权重的配置进行灰度发布的切流的方式,无法精准控制目标用户(比如,预先抢到体验资格的用户)的访问请求切流至灰度版本上,影响了用户体验。
发明内容
本申请提供一种基于灰度发布的切流方法、装置及存储介质,通过将Lua脚本与nginx服务器相结合,可以实现灰度发布过程的精准切流,从而可以提升用户体验。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种基于灰度发布的切流方法,应用于nginx服务器,包括:在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取用户终端的IP地址;将用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果;基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
本申请提供的技术方案中,可以通过第一预设Lua脚本获取发起访问请求的用户终端的IP地址,然后将该IP地址与IP地址的白名单进行匹配,基于得到的第一匹配结果实现灰度版本的服务器与生产版本的服务器的切流。这样,当需要将一些目标终端发起的访问请求精准切流至灰度版本的服务器时,可以将这些目标终端的IP地址添加至IP地址的白名单中。另外,由于需要获取到用户终端的IP地址,所以本申请中可以将Lua脚本与nginx服务器相结合,通过第一预设Lua脚本获取到用户终端的IP地址。因此,本申请通过将Lua脚本与nginx服务器相结合,可以实现灰度发布过程的精准切流,从而可以提升用户体验。
可选的,在一种可能的设计方式中,上述“基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器”可以包括:
在确定第一匹配结果为匹配成功的情况下,将用户终端的访问请求切流至灰度版本的服务器;
在确定第一匹配结果为匹配失败的情况下,将用户终端的访问请求切流至生产版本的服务器。
可选的,在另一种可能的设计方式中,上述“基于第一预设Lua脚本获取用户终端的IP地址”之前,本申请提供的基于灰度发布的切流方法可以包括:
获取灰度发布的应用模式;
确定应用模式为第一模式;第一模式为将目标终端的访问请求切流至灰度版本的服务器。
可选的,在另一种可能的设计方式中,上述“获取灰度发布的应用模式”之后,本申请提供的基于灰度发布的切流方法可以包括:
在确定应用模式为第二模式的情况下,基于第二预设Lua脚本获取用户终端的访问请求的Cookie;第二模式为将预设比重的访问请求切流至灰度版本的服务器;
将Cookie中的预设位字段与预设字符串进行匹配,得到第二匹配结果;
基于第二匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,在另一种可能的设计方式中,上述“基于第二预设Lua脚本获取用户终端的访问请求的Cookie”之前,本申请提供的基于灰度发布的切流方法可以包括:
在确定用户终端的访问请求为首次请求的情况下,基于预设比重为用户终端分配Cookie。
可选的,在另一种可能的设计方式中,上述“基于第一预设Lua脚本获取用户终端的IP地址”之前,本申请提供的基于灰度发布的切流方法可以包括:
配置灰度版本的服务器的负载池和生产版本的服务器的负载池;
基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器,包括:
基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器的负载池或生产版本的服务器的负载池。
可选的,在另一种可能的设计方式中,上述“基于第一预设Lua脚本获取用户终端的IP地址”之前,本申请提供的基于灰度发布的切流方法可以包括:
对nginx服务器进行重新配置,使重新配置后的nginx服务器支持Lua脚本语言。
第二方面,本申请提供一种nginx服务器,包括:获取模块、匹配模块和切流模块;
获取模块,用于在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取用户终端的IP地址;
匹配模块,用于将获取模块获取的用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果;
切流模块,用于基于匹配模块得到的第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,在一种可能的设计方式中,切流模块具体用于:
在确定第一匹配结果为匹配成功的情况下,将用户终端的访问请求切流至灰度版本的服务器;
在确定第一匹配结果为匹配失败的情况下,将用户终端的访问请求切流至生产版本的服务器。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:确定模块;
获取模块,用于在基于第一预设Lua脚本获取用户终端的IP地址之前,获取灰度发布的应用模式;
确定模块,用于确定获取模块获取的应用模式为第一模式;第一模式为将目标终端的访问请求切流至灰度版本的服务器。
可选的,在另一种可能的设计方式中,获取模块还用于,在获取灰度发布的应用模式之后,在确定获取到的应用模式为第二模式的情况下,基于第二预设Lua脚本获取用户终端的访问请求的Cookie;第二模式为将预设比重的访问请求切流至灰度版本的服务器;
匹配模块,还用于将获取模块获取到的Cookie中的预设位字段与预设字符串进行匹配,得到第二匹配结果;
切流模块,用于基于匹配模块得到的第二匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:分配模块;
分配模块,用于在获取模块基于第二预设Lua脚本获取用户终端的访问请求的Cookie之前,在确定用户终端的访问请求为首次请求的情况下,基于预设比重为用户终端分配Cookie。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:配置模块;
配置模块,用于在获取模块基于第一预设Lua脚本获取用户终端的IP地址之前,配置灰度版本的服务器的负载池和生产版本的服务器的负载池;
切流模块,具体用于:基于匹配模块得到的第一匹配结果将用户终端的访问请求切流至灰度版本的服务器的负载池或生产版本的服务器的负载池。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:配置模块;
配置模块,用于在获取模块基于第一预设Lua脚本获取用户终端的IP地址之前,对nginx服务器进行重新配置,使重新配置后的nginx服务器支持Lua脚本语言。
第三方面,本申请提供一种基于灰度发布的切流装置,包括存储器、处理器、总线和通信接口;存储器用于存储计算机执行指令,处理器与存储器通过总线连接;当基于灰度发布的切流装置运行时,处理器执行存储器存储的计算机执行指令,以使基于灰度发布的切流装置执行如上述第一方面提供的基于灰度发布的切流方法。
可选的,该基于灰度发布的切流装置还可以包括收发器,该收发器用于在基于灰度发布的切流装置的处理器的控制下,执行收发数据、信令或者信息的步骤,例如,获取用户终端的IP地址。
进一步可选的,该基于灰度发布的切流装置可以是用于实现基于灰度发布的切流的物理机,也可以是物理机中的一部分装置,例如可以是物理机中的芯片系统。该芯片系统用于支持基于灰度发布的切流装置实现第一方面中所涉及的功能,例如,接收,发送或处理上述基于灰度发布的切流方法中所涉及的数据和/或信息。该芯片系统包括芯片,也可以包括其他分立器件或电路结构。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机执行指令时,使得计算机执行如第一方面提供的基于灰度发布的切流方法。
第五方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机上运行时,使得计算机执行如第一方面提供的基于灰度发布的切流方法。
需要说明的是,上述计算机指令可以全部或者部分存储在计算机可读存储介质上。其中,计算机可读存储介质可以与基于灰度发布的切流装置的处理器封装在一起的,也可以与基于灰度发布的切流装置的处理器单独封装,本申请对此不做限定。
本申请中第二方面、第三方面、第四方面以及第五方面的描述,可以参考第一方面的详细描述;并且,第二方面、第三方面、第四方面以及第五方面的描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
在本申请中,上述基于灰度发布的切流装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
图1为本申请实施例提供的一种基于灰度发布的切流系统的架构示意图;
图2为本申请实施例提供的一种基于灰度发布的切流方法的流程示意图;
图3为本申请实施例提供的另一种基于灰度发布的切流方法的流程示意图;
图4为本申请实施例提供的又一种基于灰度发布的切流方法的流程示意图;
图5为本申请实施例提供的一种nginx服务器的结构示意图;
图6为本申请实施例提供的一种基于灰度发布的切流装置的结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的基于灰度发布的切流方法、装置及存储介质进行详细地描述。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括其他没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
软件产品在发布新版程序时,一般采用灰度发布的发布方式。具体的,可以让大部分用户继续使用生产版本(即旧版)的软件产品,让小部分用户使用灰度版本(即新版)的软件产品。在小部分用户使用灰度版本的软件产品的过程中,可以根据用户的反馈体验对灰度版本的软件产品的功能进一步进行完善调整,之后再将所有用户都迁移至灰度版本。
现有的,一般可以基于nginx服务器(一种反向代理服务器)默认的加权轮询机制,对需要切流到灰度版本或生产版本的用户的访问请求进行权重的配置。
然而,现有通过权重的配置进行灰度发布的切流的方式,无法精准控制目标用户(比如,预先抢到体验资格的用户)的访问请求切流至灰度版本上,影响了用户体验。
针对上述现有技术中存在的问题,本申请实施例提供了一种基于灰度发布的切流方法,可以通过第一预设Lua(一种脚本语言)脚本获取发起访问请求的用户终端的互联网协议(Internet Protocol Address,IP)地址,然后将该IP地址与IP地址的白名单进行匹配,基于得到的第一匹配结果实现灰度版本的服务器与生产版本的服务器的切流。通过将Lua脚本与nginx服务器相结合,可以实现灰度发布过程的精准切流,从而可以提升用户体验。
本申请实施例提供的基于灰度发布的切流方法可以应用于图1所示的基于灰度发布的切流系统。参照图1,该基于灰度发布的切流系统可以包括nginx服务器01、灰度版本的服务器02、生产版本的服务器03以及多个用户终端05。
其中,用户终端05可以通过nginx服务器01访问灰度版本的服务器02或者生产版本的服务器03。用户终端05可以是手机、平板电脑、桌面型计算机、膝上型计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、手持计算机、上网本、个人数字助理(personal digital assistant,PDA)、可穿戴电子设备、虚拟现实设备等不同类型的终端。
灰度版本的服务器02可以为新版本软件产品的后端服务器,生产版本的服务器03可以为旧版本软件产品的后端服务器。
nginx服务器01,用于在检测到用户终端05的访问请求的情况下,基于第一预设Lua脚本获取用户终端05的IP地址;并基于用户终端05的IP地址与IP地址的白名单的第一匹配结果,将用户终端05的访问请求切流至灰度版本的服务器02或生产版本的服务器03。
需要说明的是,图1所示的基于灰度发布的切流系统仅示出了三个用户终端05,在实际应用中,基于灰度发布的切流系统中可以包括任意数量的用户终端05,本申请实施例对此不做限定。
可以理解的是,在实际应用中,基于灰度发布的切流系统还包括有其他硬件或软件设备,此处仅对本申请实施例中可能会用到的设备作以介绍,并不构成对基于灰度发布的切流系统的具体限定。
下面结合上述图1示出的基于灰度发布的切流系统对本申请提供的基于灰度发布的切流方法进行说明。
本申请实施例中nginx服务器对每个用户终端的处理过程均相同。下面以nginx服务器对一个用户终端的处理为例进行说明。
参照图2,本申请实施例提供的基于灰度发布的切流方法包括S201-S203:
S201、在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取用户终端的IP地址。
其中,第一预设Lua脚本可以是事先确定的Lua脚本程序,第一预设Lua脚本中包括用于获取用户终端的IP地址的程序编码。
示例性的,nginx服务器可以基于第一预设Lua脚本从访问请求的http头部的x_forwarded_for字段获取用户终端的IP地址。
可选的,在基于第一预设Lua脚本获取用户终端的IP地址之前,本申请实施例提供的灰度发布的切流方法还可以对nginx服务器进行重新配置,使重新配置后的nginx服务器支持Lua脚本语言。
由于原生的nginx服务器不支持Lua脚本语言,所以本申请实施例中,还需要重新对nginx服务器进行配置,对nginx服务器的源码进行编译,编译过程中加入Lua脚本的插件,使得重新配置后的nginx服务器支持Lua脚本语言。
S202、将用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果。
IP地址的白名单可以是事先根据需求配置的IP地址列表。示例性的,IP地址的白名单中可以包括预先抢到体验资格的用户使用的用户终端的IP地址,该IP地址的白名单可以是网段掩码,存储于nginx服务器中,或者存储于远程字典服务(Remote DictionaryServer,Redis)中。
第一预设Lua脚本中还可以包括用于将用户终端的IP地址与IP地址的白名单进行匹配的程序编码,nginx服务器可以基于第一预设Lua脚本将用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果。
S203、基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,本申请实施例提供的基于灰度发布的切流方法中,nginx服务器在确定第一匹配结果为匹配成功的情况下,可以将用户终端的访问请求切流至灰度版本的服务器;在确定第一匹配结果为匹配失败的情况下,可以将用户终端的访问请求切流至生产版本的服务器。这样,当需要将一些目标终端发起的访问请求精准切流至灰度版本的服务器时,可以将这些目标终端的IP地址添加至IP地址的白名单中,从而实现灰度发布过程的精准切流。
可选的,本申请实施例提供的基于灰度发布的切流方法中,在基于第一预设Lua脚本获取用户终端的IP地址之前,还可以获取灰度发布的应用模式;在确定应用模式为第一模式(也即是将目标终端的访问请求切流至灰度版本的服务器的模式)的情况下,再基于第一预设Lua脚本获取用户终端的IP地址。
随着计算机技术的发展,软件产品的更新迭代需求也向着多样化发展,即使是对同一软件产品的灰度发布,在不同发布时期的发布需求也可能不同。比如,对于一个软件产品而言,可以有两次灰度发布,第一次灰度发布可以使得指定的用户使用新版本的软件产品,第二次灰度发布可以为使得指定数量的用户使用新版本的软件产品。为了满足不同发布时期的发布需求,本申请实施例可以向用户提供多种灰度发布的应用模式。所以,nginx服务器在基于第一预设Lua脚本获取用户终端的IP地址之前,可以先对灰度发布的应用模式进行确定,然后根据当前的灰度发布的应用模式实现切流。因此,本申请实施例提供的基于灰度发布的切流方法的适应性更广,可以满足不同时期的发布需求,从而可以进一步提升用户体验。
其中,灰度发布的应用模式可以由用户根据需求事先在nginx服务器中进行配置或者调整。
可选的,获取到灰度发布的应用模式之后,若确定应用模式为第二模式,则可以基于第二预设Lua脚本获取用户终端的访问请求的Cookie(一种小型文本文件);然后将Cookie中的预设位字段与预设字符串进行匹配,得到第二匹配结果;之后基于第二匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
其中,第二预设Lua脚本可以是事先确定的Lua脚本程序,第二预设Lua脚本中可以包括用于获取用户终端的访问请求的Cookie的程序编码。
第二模式为将预设比重的访问请求切流至灰度版本的服务器。预设比重可以是事先根据发布需求确定的比重,示例性的,若发布需求为将10%的用户终端的访问请求切流至灰度版本的服务器,且将90%的用户终端的访问请求切流至生产版本的服务器,则预设比重可以为10%。
预设位字段可以是人为事先确定的Cookie中的预设位的字段,比如预设位字段可以是Cookie中最后几位字段,预设字符串可以是人为事先确定的字符串,比如,预设字符串可以是1.3.5。示例性的,nginx服务器在确定Cookie中最后几位字段为1.3.5的情况下,可以确定第二匹配结果为匹配成功。
第二预设Lua脚本中可以包括用于将Cookie中的预设位字段与预设字符串进行匹配的程序编码,并且可以包括基于第二匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器的程序编码。nginx服务器可以基于第二预设Lua脚本确定第二匹配结果,且在确定第二匹配结果为匹配成功的情况下,可以将用户终端的访问请求切流至灰度版本的服务器;在确定第二匹配结果为匹配失败的情况下,可以将用户终端的访问请求切流至生产版本的服务器。
可选的的,nginx服务器在确定用户终端的访问请求为首次请求的情况下,可以基于预设比重为用户终端分配Cookie。
用户终端首次向nginx服务器发起用于访问生产版本的服务器或灰度版本的服务器的访问请求时,nginx服务器可以基于预设比重为用户终端分配Cookie,之后,当用户终端再次向nginx服务器发起访问请求时,访问请求中将会携带该Cookie。
示例性的,在预设比重为30%,预设位字段是Cookie中最后几位字段,且预设字符串是1.3.5的情况下,nginx服务器可以基于该预设比重,向将30%的用户终端发起的分配尾数为1.3.5的Cookie,从而实现将30%的用户终端的访问请求切流至灰度版本的服务器。
本申请实施例中,提供了两种基于Lua脚本的灰度发布的应用模式,一种是通过用户终端的IP地址进行切流,另一种是通过Cookie进行切流。其中,通过用户终端的IP地址进行切流的应用模式可以实现灰度发布过程的精准切流,通过Cookie进行切流的应用模式可以实现将预设比重的用户终端的访问请求切流至灰度版本的服务器。可以看出,本申请实施例中,通过提供两种基于Lua脚本的灰度发布的应用模式,可以满足不同时期的发布需求,从而可以进一步提升用户体验。
可选的,本申请实施例提供的基于灰度发布的切流方法中,在基于第一预设Lua脚本获取用户终端的IP地址之前,还可以配置灰度版本的服务器的负载池和生产版本的服务器的负载池;对应的,在得到第一匹配结果之后,可以基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器的负载池或生产版本的服务器的负载池。
本申请实施例提供的技术方案中,可以通过第一预设Lua脚本获取发起访问请求的用户终端的IP地址,然后将该IP地址与IP地址的白名单进行匹配,基于得到的第一匹配结果实现灰度版本的服务器与生产版本的服务器的切流。这样,当需要将一些目标终端发起的访问请求精准切流至灰度版本的服务器时,可以将这些目标终端的IP地址添加至IP地址的白名单中。另外,由于需要获取到用户终端的IP地址,所以本申请实施例中可以将Lua脚本与nginx服务器相结合,通过第一预设Lua脚本获取到用户终端的IP地址。因此,本申请实施例通过将Lua脚本与nginx服务器相结合,可以实现灰度发布过程的精准切流,从而可以提升用户体验。
综合以上描述,如图3所示,本申请实施例还提供了一种基于灰度发布的切流方法,包括S301-S308:
S301、在检测到用户终端的访问请求的情况下,获取灰度发布的应用模式。
S302、判断灰度发布的应用模式是否为第一模式。
在确定灰度发布的应用模式为第一模式的情况下,执行S303;在确定灰度发布的应用模式为第二模式的情况下,执行S306。
S303、基于第一预设Lua脚本获取用户终端的IP地址。
S304、将用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果。
S305、基于第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
S306、基于第二预设Lua脚本获取用户终端的访问请求的Cookie。
S307、将Cookie中的预设位字段与预设字符串进行匹配,得到第二匹配结果。
S308、基于第二匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,如图4所示,图2中的步骤S203可以替换为S2031:
S2031、在确定第一匹配结果为匹配成功的情况下,将用户终端的访问请求切流至灰度版本的服务器;在确定第一匹配结果为匹配失败的情况下,将用户终端的访问请求切流至生产版本的服务器。
如图5所示,本申请实施例还提供了一种nginx服务器,该nginx服务器可以是上述实施例中图1所涉及的基于灰度发布的切流系统中的nginx服务器。该nginx服务器包括:获取模块11、匹配模块12和切流模块13。
其中,获取模块11执行上述方法实施例中的S201,匹配模块12执行上述方法实施例中的S202,切流模块13执行上述方法实施例中的S203。
具体地,获取模块11,用于在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取用户终端的IP地址;
匹配模块12,用于将获取模块11获取的用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果;
切流模块13,用于基于匹配模块12得到的第一匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,在一种可能的设计方式中,切流模块13具体用于:
在确定第一匹配结果为匹配成功的情况下,将用户终端的访问请求切流至灰度版本的服务器;
在确定第一匹配结果为匹配失败的情况下,将用户终端的访问请求切流至生产版本的服务器。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:确定模块;
获取模块11,用于在基于第一预设Lua脚本获取用户终端的IP地址之前,获取灰度发布的应用模式;
确定模块,用于确定获取模块11获取的应用模式为第一模式;第一模式为将目标终端的访问请求切流至灰度版本的服务器。
可选的,在另一种可能的设计方式中,获取模块11还用于,在获取灰度发布的应用模式之后,在确定获取到的应用模式为第二模式的情况下,基于第二预设Lua脚本获取用户终端的访问请求的Cookie;第二模式为将预设比重的访问请求切流至灰度版本的服务器;
匹配模块12,还用于将获取模块11获取到的Cookie中的预设位字段与预设字符串进行匹配,得到第二匹配结果;
切流模块13,用于基于匹配模块12得到的第二匹配结果将用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:分配模块;
分配模块,用于在获取模块11基于第二预设Lua脚本获取用户终端的访问请求的Cookie之前,在确定用户终端的访问请求为首次请求的情况下,基于预设比重为用户终端分配Cookie。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:配置模块;
配置模块,用于在获取模块11基于第一预设Lua脚本获取用户终端的IP地址之前,配置灰度版本的服务器的负载池和生产版本的服务器的负载池;
切流模块13,具体用于:基于匹配模块12得到的第一匹配结果将用户终端的访问请求切流至灰度版本的服务器的负载池或生产版本的服务器的负载池。
可选的,在另一种可能的设计方式中,本申请提供的nginx服务器还可以包括:配置模块;
配置模块,用于在获取模块11基于第一预设Lua脚本获取用户终端的IP地址之前,对nginx服务器进行重新配置,使重新配置后的nginx服务器支持Lua脚本语言。
可选的,nginx服务器还可以包括存储模块,存储模块用于存储该nginx服务器的程序代码等。
如图6所示,本申请实施例还提供一种基于灰度发布的切流装置,包括存储器41、处理器42(42-1和42-2)、总线43和通信接口44;存储器41用于存储计算机执行指令,处理器42与存储器41通过总线43连接;当基于灰度发布的切流装置运行时,处理器42执行存储器41存储的计算机执行指令,以使基于灰度发布的切流装置执行如上述实施例提供的基于灰度发布的切流方法。
在具体的实现中,作为一种实施例,处理器42可以包括一个或多个中央处理器(central processing unit,CPU),例如图6中所示的CPU0和CPU1。且作为一种实施例,基于灰度发布的切流装置可以包括多个处理器42,例如图6中所示的处理器42-1和处理器42-2。这些处理器42中的每一个CPU可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器42可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器41可以是只读存储器41(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器41可以是独立存在,通过总线43与处理器42相连接。存储器41也可以和处理器42集成在一起。
在具体的实现中,存储器41,用于存储本申请中的数据和执行本申请的软件程序对应的计算机执行指令。处理器42可以通过运行或执行存储在存储器41内的软件程序,以及调用存储在存储器41内的数据,基于灰度发布的切流装置的各种功能。
通信接口44,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如控制系统、无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。通信接口44可以包括接收单元实现接收功能,以及发送单元实现发送功能。
总线43,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线43可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
作为一个示例,结合图5,nginx服务器中的获取模块实现的功能与图6中的接收单元实现的功能相同,nginx服务器中的切流模块实现的功能与图6中的处理器实现的功能相同,nginx服务器中的存储模块实现的功能与图6中的存储器实现的功能相同。
本实施例中相关内容的解释可参考上述方法实施例,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机执行该指令时,使得计算机执行上述实施例提供的基于灰度发布的切流方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、ROM、可擦式可编程只读存储器(erasable programmable read only memory,EPROM)、寄存器、硬盘、光纤、CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合、或者本领域熟知的任何其它形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(application specificintegrated circuit,ASIC)中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种基于灰度发布的切流方法,应用于nginx服务器,其特征在于,包括:
在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取所述用户终端的IP地址;
将所述用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果;
基于所述第一匹配结果将所述用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
2.根据权利要求1所述的基于灰度发布的切流方法,其特征在于,所述基于所述第一匹配结果将所述用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器,包括:
在确定所述第一匹配结果为匹配成功的情况下,将所述用户终端的访问请求切流至所述灰度版本的服务器;
在确定所述第一匹配结果为匹配失败的情况下,将所述用户终端的访问请求切流至所述生产版本的服务器。
3.根据权利要求1所述的基于灰度发布的切流方法,其特征在于,所述基于第一预设Lua脚本获取所述用户终端的IP地址之前,所述方法还包括:
获取灰度发布的应用模式;
确定所述应用模式为第一模式;所述第一模式为将目标终端的访问请求切流至所述灰度版本的服务器。
4.根据权利要求3所述的基于灰度发布的切流方法,其特征在于,所述获取灰度发布的应用模式之后,所述方法还包括:
在确定所述应用模式为第二模式的情况下,基于第二预设Lua脚本获取所述用户终端的访问请求的Cookie;所述第二模式为将预设比重的访问请求切流至所述灰度版本的服务器;
将所述Cookie中的预设位字段与预设字符串进行匹配,得到第二匹配结果;
基于所述第二匹配结果将所述用户终端的访问请求切流至所述灰度版本的服务器或所述生产版本的服务器。
5.根据权利要求4所述的基于灰度发布的切流方法,其特征在于,所述基于第二预设Lua脚本获取所述用户终端的访问请求的Cookie之前,所述方法还包括:
在确定所述用户终端的访问请求为首次请求的情况下,基于所述预设比重为所述用户终端分配所述Cookie。
6.根据权利要求1所述的基于灰度发布的切流方法,其特征在于,所述基于第一预设Lua脚本获取所述用户终端的IP地址之前,所述方法还包括:
配置所述灰度版本的服务器的负载池和所述生产版本的服务器的负载池;
所述基于所述第一匹配结果将所述用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器,包括:
基于所述第一匹配结果将所述用户终端的访问请求切流至所述灰度版本的服务器的负载池或所述生产版本的服务器的负载池。
7.根据权利要求1-6任意一项所述的基于灰度发布的切流方法,其特征在于,所述基于第一预设Lua脚本获取所述用户终端的IP地址之前,所述方法还包括:
对nginx服务器进行重新配置,使重新配置后的nginx服务器支持Lua脚本语言。
8.一种nginx服务器,其特征在于,包括:
获取模块,用于在检测到用户终端的访问请求的情况下,基于第一预设Lua脚本获取所述用户终端的IP地址;
匹配模块,用于将所述获取模块获取的所述用户终端的IP地址与IP地址的白名单进行匹配,得到第一匹配结果;
切流模块,用于基于所述匹配模块得到的所述第一匹配结果将所述用户终端的访问请求切流至灰度版本的服务器或生产版本的服务器。
9.一种基于灰度发布的切流装置,其特征在于,包括存储器、处理器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接;
当所述基于灰度发布的切流装置运行时,处理器执行所述存储器存储的所述计算机执行指令,以使所述基于灰度发布的切流装置执行如权利要求1-7任意一项所述的基于灰度发布的切流方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当计算机执行所述指令时,使得所述计算机执行如权利要求1-7任意一项所述的基于灰度发布的切流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210113878.0A CN114443125A (zh) | 2022-01-30 | 2022-01-30 | 基于灰度发布的切流方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210113878.0A CN114443125A (zh) | 2022-01-30 | 2022-01-30 | 基于灰度发布的切流方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443125A true CN114443125A (zh) | 2022-05-06 |
Family
ID=81371054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210113878.0A Pending CN114443125A (zh) | 2022-01-30 | 2022-01-30 | 基于灰度发布的切流方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443125A (zh) |
-
2022
- 2022-01-30 CN CN202210113878.0A patent/CN114443125A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303491B2 (en) | Method and device of running application program across systems | |
US9002970B2 (en) | Remote direct memory access socket aggregation | |
CN109787959B (zh) | 一种账户信息处理方法及相关装置 | |
CN110007936B (zh) | 数据处理方法和装置 | |
CN114625481A (zh) | 数据处理方法、装置、可读介质及电子设备 | |
CN103430165A (zh) | 使用虚拟机与客户端计算设备共享移动计算设备的互联网能力 | |
CN111767089A (zh) | 加载文件的方法、装置、设备以及存储介质 | |
CN112287256A (zh) | 页面显示方法、终端设备、云服务器、系统及存储介质 | |
CN111580883B (zh) | 应用程序启动方法、装置、计算机系统和介质 | |
CN107045452B (zh) | 虚拟机调度方法和装置 | |
CN114443125A (zh) | 基于灰度发布的切流方法、装置及存储介质 | |
CN112882826A (zh) | 一种资源协同调度方法以及装置 | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN111612450B (zh) | 应用程序支付渠道的检测方法、装置、终端设备及介质 | |
WO2015010574A1 (en) | Method, apparatus and terminal for webpage content browsing | |
CN114302207A (zh) | 一种弹幕显示方法、装置、系统、设备及存储介质 | |
US20150074105A1 (en) | Mobile application data storage allocation | |
CN113157375A (zh) | 一种内容显示方法、装置、设备、系统及存储介质 | |
KR20100122431A (ko) | 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 | |
CN113760274A (zh) | 一种前端组件逻辑注入方法和装置 | |
CN110489469B (zh) | 数据传输方法、装置、计算机设备以及存储介质 | |
CN113225399B (zh) | 数据通信方法、装置及电子设备 | |
CN115640012A (zh) | 数据转码方法、装置、设备及存储介质 | |
CN104156368A (zh) | 一种用于实现提供应用访问结果的方法与设备 | |
CN110738982B (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 |