掌桥专利:专业的专利平台
掌桥专利
首页

软件产品灰度发布方法、装置、设备及介质

文献发布时间:2023-06-19 09:54:18


软件产品灰度发布方法、装置、设备及介质

技术领域

本申请涉及到人工智能技术领域,特别是涉及到一种软件产品灰度发布方法、装置、设备及介质。

背景技术

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/Btesting,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。现有技术的灰度发布无法根据用户角色维度进行灰度发布,导致灰度发布操作对单个或少量用户的影响范围无法控制。

发明内容

本申请的主要目的为提供一种软件产品灰度发布方法、装置、设备及介质,旨在解决现有技术的灰度发布无法根据用户角色维度进行灰度发布技术问题。

为了实现上述发明目的,本申请提出一种软件产品灰度发布方法,所述方法应用于Nginx,所述Nginx用于实现七层负载均衡服务,所述Nginx中嵌入功能定制脚本;

所述方法包括:

获取访问软件产品的Http请求,所述Http请求携带有Http请求头;

调用所述功能定制脚本根据所述Http请求头,确定目标用户标记;

调用所述功能定制脚本检查所述目标用户标记在目标缓存中是否存在;

当所述目标用户标记在所述目标缓存中存在时,调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径,将所述Http请求代理到所述第一应用服务路径对应的应用服务器;

当所述目标用户标记在所述目标缓存中不存在时,调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径,将所述Http请求代理到所述第二应用服务路径对应的应用服务器。

进一步的,所述调用所述功能定制脚本根据所述Http请求头,确定目标用户标记的步骤,包括:

调用所述功能定制脚本对所述Http请求头进行解析,得到待解密用户标记;

调用所述功能定制脚本对所述待解密用户标记进行解密,得到所述目标用户标记,其中,将所述目标用户标记存储至区块链系统的区块链上。

进一步的,所述调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径的步骤,包括:

调用所述功能定制脚本根据所述目标用户标记从所述目标缓存中,确定与所述目标用户标记对应的用户规则;

调用所述功能定制脚本根据与所述目标用户标记对应的用户规则,确定所述目标用户分流规则;

调用所述功能定制脚本对所述与所述目标用户分流规则进行应用服务路径解析,得到所述目标软件产品的第一应用服务路径。

进一步的,所述调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径的步骤,包括:

调用所述功能定制脚本从数据库中获取固定业务规则;

调用所述功能定制脚本根据所述目标用户标记从所述固定业务规则中,确定与所述目标用户标记对应的用户转发规则;

调用所述功能定制脚本根据所述与所述目标用户标记对应的用户转发规则进行应用服务路径解析,确定所述目标软件产品的第二应用服务路径。

进一步的,所述获取访问软件产品的Http请求的步骤之前,包括:

获取新规则发布请求,所述新规则发布请求携带有用户标识及待发布用户分流规则;

响应所述新规则发布请求,将所述用户标识及所述待发布用户分流规则更新到所述目标缓存中。

进一步的,所述将所述用户标识及所述用户分流规则更新到所述目标缓存中的步骤,包括:

根据所述用户标识从所述用户分流规则中,确定与所述用户标识对应的应用服务路径;

根据所述用户标识和所述用户标识对应的应用服务路径,生成待存储Hash值;

将所述待存储Hash值更新到所述目标缓存中。

进一步的,所述获取访问软件产品的Http请求的步骤之前,还包括:

获取规则回滚请求,所述规则回滚请求携带有用户标识及待删除用户分流规则;

响应所述规则回滚请求,根据所述用户标识及所述待删除用户分流规则更新所述目标缓存。

本申请还提出了一种软件产品灰度发布装置,所述装置应用于Nginx,所述Nginx用于实现七层负载均衡服务,所述Nginx中嵌入功能定制脚本;

所述装置包括:

请求获取模块,用于获取访问软件产品的Http请求,所述Http请求携带有Http请求头;

用户标记确定模块,用于调用所述功能定制脚本根据所述Http请求头,确定目标用户标记;

用户标记匹配模块,用于调用所述功能定制脚本检查所述目标用户标记在目标缓存中是否存在;

第一代理模块,用于当所述目标用户标记在所述目标缓存中存在时,调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径,将所述Http请求代理到所述第一应用服务路径对应的应用服务器;

第二代理模块,用于当所述目标用户标记在所述目标缓存中不存在时,调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径,将所述Http请求代理到所述第二应用服务路径对应的应用服务器。

本申请还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。

本申请的软件产品灰度发布方法、装置、设备及介质,通过调用功能定制脚本根据Http请求头确定目标用户标记,然后再调用功能定制脚本检查目标用户标记在目标缓存中是否存在,当目标用户标记在目标缓存中存在时将Http请求代理到目标软件产品的第一应用服务路径对应的应用服务器,当目标用户标记在目标缓存中不存在时将Http请求代理到目标软件产品的第二应用服务路径对应的应用服务器,从而实现了根据用户角色维度进行灰度发布;通过优先匹配目标缓存,匹配不上再匹配数据库中的固定业务规则,加快了响应速度;通过解析Http请求头得到目标用户标记,提高了安全性。

附图说明

图1为本申请一实施例的软件产品灰度发布方法的流程示意图;

图2为本申请一实施例的软件产品灰度发布装置的结构示意框图;

图3为本申请一实施例的计算机设备的结构示意框图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请使用到的专业术语如下:

本申请的Nginx,是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

本申请的七层负载均衡服务,又称为7层负载均衡服务,7层负载均衡服务不同于4层负载均衡服务,它在高级应用层上执行,会处理每个消息的实际内容。Http是网络上网站流量的主要7层协议。7层负载均衡以比4层负载均衡更复杂的方式路由网络流量,尤其适用于基于TCP的流量(如Http)。7层负载均衡会终止网络流量并读取器中消息,它可以根据消息内容(如URL或cookie)做出负载均衡决策。随后,7层负载均衡与选定上有服务器建立新的TCP连接并将请求写入服务器。

本申请的Http请求,是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。

本申请的Http请求头,是setDateHeader方法和setIntHeadr方法专门用来设置包含日期和整数值的应答头,前者避免了把Java时间转换为GMT时间字符串的麻烦,后者则避免了把整数转换为字符串的麻烦。Http客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。

本申请的lua,是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(PontificalCatholicUniversityofRiodeJaneiro)里的一个由RobertoIerusalimschy、WaldemarCeles和LuizHenriquedeFigueiredo三人所组成的研究小组于1993年开发的。其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua有一个同时进行的JIT(Just-In-Time,运行时编译器)项目,提供在特定平台上的即时编译功能。

本申请的脚本,是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常是以文本(ASCⅡ)保存,只是在被调用时进行解释或者编译。

本申请的URL,是指统一资源定位器。

本申请的RSA算法,RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

本申请的Hash值,又称为哈希值,是通过对文件内容进行加密运算得到的一组二进制值,主要用途是用于文件校验或签名。正是因为这样的特点,它常常用来判断两个文件是否相同。

为了解决现有技术的灰度发布无法根据用户角色维度进行灰度发布技术问题,提出了一种软件产品灰度发布方法,所述方法可以应用于人工智能技术领域,所述方法还可以应用于区块链技术领域。所述软件产品灰度发布方法通过在七层负载均衡服务中,通过从Http请求头中解析出目标用户标记,再用目标用户标记从目标缓存中确定用户分流规则,从而实现了根据用户角色维度进行灰度发布。

参照图1,所述软件产品灰度发布方法应用于Nginx,所述Nginx用于实现七层负载均衡服务,所述Nginx中嵌入功能定制脚本;

所述方法包括:

S1:获取访问软件产品的Http请求,所述Http请求携带有Http请求头;

S2:调用所述功能定制脚本根据所述Http请求头,确定目标用户标记;

S3:调用所述功能定制脚本检查所述目标用户标记在目标缓存中是否存在;

S4:当所述目标用户标记在所述目标缓存中存在时,调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径,将所述Http请求代理到所述第一应用服务路径对应的应用服务器;

S5:当所述目标用户标记在所述目标缓存中不存在时,调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径,将所述Http请求代理到所述第二应用服务路径对应的应用服务器。

本实施例通过调用功能定制脚本根据Http请求头确定目标用户标记,然后再调用功能定制脚本检查目标用户标记在目标缓存中是否存在,当目标用户标记在目标缓存中存在时将Http请求代理到目标软件产品的第一应用服务路径对应的应用服务器,当目标用户标记在目标缓存中不存在时将Http请求代理到目标软件产品的第二应用服务路径对应的应用服务器,从而实现了根据用户角色维度进行灰度发布;通过优先匹配目标缓存,匹配不上再匹配数据库中的固定业务规则,加快了响应速度;通过解析Http请求头得到目标用户标记,提高了安全性。

因Nginx是个固定的开源产品,通过在Nginx中嵌入功能定制脚本可以实现定制功能。

所述功能定制脚本,可以采用C语言编写,也可以采用lua脚本语言编写。通过将所述功能定制脚本嵌入到所述Nginx中流程,实现对所述Nginx的流程的调用。将所述功能定制脚本嵌入到所述Nginx中流程包括但不限于:变量初始化流程,转发、重定向、缓存流程,IP准入、接口权限等情况集中处理流程,内容生成流程,应答HTTP过滤处理流程,应答BODY过滤处理流程,会话完成后本地异步完成日志记录流程。

对于S1,Nginx获取终端发送的访问软件产品的Http请求。

其中,在Nginx实现七层负载均衡服务时,Http请求头中的用户信息是经过加密的。而且Http请求头中指明了请求类型。

对于S2,调用功能定制脚本对所述Http请求头进行解析,将解析得到的用户标记作为目标用户标记。

目标用户标记,也就是用户标记。

用户标记可以是用户名称、用户ID等唯一标识一个用户的标记。

对于S3,调用功能定制脚本用解析得到的目标用户标记在目标缓存中进行查找,当在目标缓存中查找到与的目标用户标记相同的用户标记时确定所述目标用户标记在目标缓存中存在,否则确定所述目标用户标记在目标缓存中不存在。

优选的,所述目标缓存采用Memcache(分布式的高速缓存系统)的Hash缓存。Memcache的Hash缓存中存储有用户标记和用户分流规则。可以理解的是,所述目标缓存还可以采用其它数据缓存存储方式,在此不做具体限定。

对于S4,当所述目标用户标记在所述目标缓存中存在时,意味着所述目标用户标记对应的用户被分流到了目标软件产品的第一应用服务路径,此时调用所述功能定制脚本根据所述目标用户标记从目标缓存中进行查找,将在目标缓存中查找到的用户标记对应的用户分流规则作为与所述目标用户标记对应的目标用户分流规则,从所述与所述目标用户标记对应的目标用户分流规则中获取应用服务路径,将获取的应用服务路径作为目标软件产品的第一应用服务路径,然后将所述Http请求代理到所述第一应用服务路径对应的应用服务器,从而实现了将目标用户标记对应的用户分流到第一应用服务路径的用服务器中装载的目标软件产品。

目标用户分流规则,也就是用户分流规则。用户分流规则包括但不限于:用户标记、分流规则,每个用户标记对应一个分流规则。分流规则包括但不限于:应用服务路径。

所述目标软件产品的第一应用服务路径是指目标软件产品的URL。

目标软件产品,也就是软件产品。软件产品包括但不限鉴于:应用系统、小程序。

对于S5,当所述目标用户标记在所述目标缓存中不存在时,意味着所述目标用户标记对应的用户还是保留访问的是目标软件产品的第二应用服务路径,此时调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记从所述固定业务规则中确定应用服务路径,将确定的应用服务路径作为所述目标软件产品的第二应用服务路径,然后将所述Http请求代理到所述第二应用服务路径对应的应用服务器,从而实现了将目标用户标记对应的用户保留访问第二应用服务路径的用服务器中装载的目标软件产品。

所述目标软件产品的第二应用服务路径是指目标软件产品的URL。

所述固定业务规则,是根据业务需求自定义的规则。所述固定业务规则包括但不限于用户转发规则。比如,用户转发规则根据用户等级进行转发,不同用户等级转发到不同的应用服务路径。

同一个目标软件产品的第一应用服务路径和第二应用服务路径分别对应不同版本。

优选的,所述目标软件产品的第一应用服务路径对应的服务器装载的是所述目标软件产品的新版本,所述目标软件产品的第二应用服务路径对应的服务器装载的是所述目标软件产品的旧版本。从而实现了对目标软件产品的灰度发布。

在一个实施例中,上述调用所述功能定制脚本根据所述Http请求头,确定目标用户标记的步骤,包括:

S21:调用所述功能定制脚本对所述Http请求头进行解析,得到待解密用户标记;

S22:调用所述功能定制脚本对所述待解密用户标记进行解密,得到所述目标用户标记,其中,将所述目标用户标记存储至区块链系统的区块链上。

本实施例实现了根据Http请求头进行解析和解密,得到目标用户标记,提高了用户信息的安全性。

对于S21,在Nginx实现七层负载均衡服务时,Http请求头中的用户信息是经过加密的,所以从所述Http请求头中直接解析出来的是加密的用户标记。

对于S22,调用功能定制脚本的解密算法对所述待解密用户标记进行解密,将解密得到的用户标记作为目标用户标记。

功能定制脚本中设置的解密算法与终端加密用户标记的加密算法组成密匙对。密匙对包括但不限于:RSA密匙对。

RSA密匙对,是采用RSA算法的密匙对。

需要强调的是,为进一步保证上述目标用户标记的私密和安全性,上述目标用户标记还可以存储至区块链系统的区块链上。

所述区块链,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。

区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。

在一个实施例中,上述调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径的步骤,包括:

S41:调用所述功能定制脚本根据所述目标用户标记从所述目标缓存中,确定与所述目标用户标记对应的用户规则;

S42:调用所述功能定制脚本根据与所述目标用户标记对应的用户规则,确定所述目标用户分流规则;

S43:调用所述功能定制脚本对所述与所述目标用户分流规则进行应用服务路径解析,得到所述目标软件产品的第一应用服务路径。

本实施例从所述目标缓存中确定应用服务路径作为所述目标软件产品的第一应用服务路径,从而实现了根据目标缓存对用户进行分流。

对于S41,调用所述功能定制脚本根据所述目标用户标记从所述目标缓存中进行查找,将在所述目标缓存中查找到的用户标记对应的用户规则作为与所述目标用户标记对应的用户规则。

用户规则包括但不限于:用户等级、用户分流规则、失败重试规则。可以理解的是,可以根据业务实际需求确定规则后,对确定的规则进行封装,封装完成得到用户规则。

对于S42,调用所述功能定制脚本从与所述目标用户标记对应的用户规则中查找用户分流规则,将查找到的用户分流规则作为与所述目标用户标记对应的目标用户分流规则。

对于S43,调用所述功能定制脚本从所述与所述目标用户标记对应的目标用户分流规则中解析出应用服务路径,将解析得到的应用服务路径作为所述目标软件产品的第一应用服务路径。

在一个实施例中,上述调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径的步骤,包括:

S51:调用所述功能定制脚本从数据库中获取固定业务规则;

S52:调用所述功能定制脚本根据所述目标用户标记从所述固定业务规则中,确定与所述目标用户标记对应的用户转发规则;

S53:调用所述功能定制脚本根据所述与所述目标用户标记对应的用户转发规则进行应用服务路径解析,确定所述目标软件产品的第二应用服务路径。

本实施例从固定业务规则中确定应用服务路径作为所述目标软件产品的第二应用服务路径,从而实现将部分用户保留在第二应用服务路径对应的软件产品。

对于S52,调用所述功能定制脚本根据所述目标用户标记从所述固定业务规则中进行查找,将在所述固定业务规则中查找到的用户标记对应的用户转发规则作为与所述目标用户标记对应的用户转发规则。

对于S53,调用所述功能定制脚本从所述与所述目标用户标记对应的用户转发规则中解析出应用服务路径,将解析得到的应用服务路径作为所述目标软件产品的第二应用服务路径。

在一个实施例中,上述获取访问软件产品的Http请求的步骤之前,包括:

S0111:获取新规则发布请求,所述新规则发布请求携带有用户标识及待发布用户分流规则;

S0112:响应所述新规则发布请求,将所述用户标识及所述待发布用户分流规则更新到所述目标缓存中。

本实施例通过响应新规则发布请求,实现了用户手动推送规则到目标缓存,有利于用户根据用户角色维度设置目标缓存中的用户分流规则,从而实现了将用户迁移到所述目标软件产品的第一应用服务路径对应的服务器装载的所述目标软件产品的新版本,也就是实现了根据用户角色维度进行灰度发布。

对于S0111,获取用户发送的新规则发布请求。

新规则发布请求,是指向目标缓存发布新的用户分流规则的请求。

用户标识可以是用户ID、用户名称等唯一标识一个用户的标识。

待发布用户分流规则,是指用于更新到目标缓存的用户分流规则。

对于S0112,响应所述新规则发布请求,将所述用户标识与所述待发布用户分流规则关联,然后将所述用户标识和与所述用户标识对应的所述待发布用户分流规则添加到目标缓存中。

在一个实施例中,上述将所述用户标识及所述用户分流规则更新到所述目标缓存中的步骤,包括:

S01121:根据所述用户标识从所述用户分流规则中,确定与所述用户标识对应的应用服务路径;

S01122:根据所述用户标识和所述用户标识对应的应用服务路径,生成待存储Hash值;

S01123:将所述待存储Hash值更新到所述目标缓存中。

本实施例实现了根据用户标识、用户标识对应的应用服务路径生成待存储Hash值,然后将待存储Hash值更新到所述目标缓存中,通过Hash值实现Hash缓存和查询,提高了查询效率,从而提高了用户体验。

对于01121,将所述用户标识在所述用户分流规则中进行应用服务路径查找,得到与所述用户标识对应的应用服务路径。

对于01122,采用Hash值生成工具根据所述用户标识、所述用户标识对应的应用服务路径生成Hash值,将生成的Hash值作为所述待存储Hash值。

Hash值生成工具可以从现有技术中选择,在此不做赘述。

对于01123,将所述待存储Hash值添加到所述目标缓存中。

在一个实施例中,上述获取访问软件产品的Http请求的步骤之前,还包括:

S0121:获取规则回滚请求,所述规则回滚请求携带有用户标识及待删除用户分流规则;

S0122:响应所述规则回滚请求,根据所述用户标识及所述待删除用户分流规则更新所述目标缓存。

本实施例实现了用户分流后回滚,从而提高了对局部用户的影响的可控性。

对于S0121,获取用户发送的规则回滚请求。

规则回滚请求,是指将用户分流规则从目标缓存中删除的请求。

待删除用户分流规则,是指需要从目标缓存中删除的用户分流规则,从而实现用户回滚。

对于S0122,响应所述规则回滚请求,将所述用户标识对应的所述待删除用户分流规则从所述目标缓存中删除。

在一个实施例中,上述将所述Http请求代理到所述第二应用服务路径对应的应用服务器的步骤之后,包括:

S61:调用所述功能定制脚本获取用户特征信息;

S62:调用所述功能定制脚本将所述用户特征信息存储在数据库中。

本实施例调用所述功能定制脚本将所述用户特征信息存储在数据库中,降低了管理难度,提高了运维数据的有效性,为其他运维平台提供有效的数据支撑。

对于S61,调用所述功能定制脚本获取用户输入的用户特征信息。

所述用户特征信息包括:用户请求特征信息。用户请求特征信息,是指Nginx调用功能定制脚本解析Http请求头得到的信息。

对于S62,调用所述功能定制脚本将所述用户特征信息存储在所述Nginx的数据库中。

参照图2,本申请还提出了一种软件产品灰度发布装置,所述装置应用于Nginx,所述Nginx用于实现七层负载均衡服务,所述Nginx中嵌入功能定制脚本;

所述装置包括:

请求获取模块100,用于获取访问软件产品的Http请求,所述Http请求携带有Http请求头;

用户标记确定模块200,用于调用所述功能定制脚本根据所述Http请求头,确定目标用户标记;

用户标记匹配模块300,用于调用所述功能定制脚本检查所述目标用户标记在目标缓存中是否存在;

第一代理模块400,用于当所述目标用户标记在所述目标缓存中存在时,调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径,将所述Http请求代理到所述第一应用服务路径对应的应用服务器;

第二代理模块500,用于当所述目标用户标记在所述目标缓存中不存在时,调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径,将所述Http请求代理到所述第二应用服务路径对应的应用服务器。

本实施例通过调用功能定制脚本根据Http请求头确定目标用户标记,然后再调用功能定制脚本检查目标用户标记在目标缓存中是否存在,当目标用户标记在目标缓存中存在时将Http请求代理到目标软件产品的第一应用服务路径对应的应用服务器,当目标用户标记在目标缓存中不存在时将Http请求代理到目标软件产品的第二应用服务路径对应的应用服务器,从而实现了根据用户角色维度进行灰度发布;通过优先匹配目标缓存,匹配不上再匹配数据库中的固定业务规则,加快了响应速度;通过解析Http请求头得到目标用户标记,提高了安全性。

参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存软件产品灰度发布方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种软件产品灰度发布方法。所述软件产品灰度发布方法应用于Nginx,所述Nginx用于实现七层负载均衡服务,所述Nginx中嵌入功能定制脚本;所述方法包括:获取访问软件产品的Http请求,所述Http请求携带有Http请求头;调用所述功能定制脚本根据所述Http请求头,确定目标用户标记;调用所述功能定制脚本检查所述目标用户标记在目标缓存中是否存在;当所述目标用户标记在所述目标缓存中存在时,调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径,将所述Http请求代理到所述第一应用服务路径对应的应用服务器;当所述目标用户标记在所述目标缓存中不存在时,调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径,将所述Http请求代理到所述第二应用服务路径对应的应用服务器。

本实施例通过调用功能定制脚本根据Http请求头确定目标用户标记,然后再调用功能定制脚本检查目标用户标记在目标缓存中是否存在,当目标用户标记在目标缓存中存在时将Http请求代理到目标软件产品的第一应用服务路径对应的应用服务器,当目标用户标记在目标缓存中不存在时将Http请求代理到目标软件产品的第二应用服务路径对应的应用服务器,从而实现了根据用户角色维度进行灰度发布;通过优先匹配目标缓存,匹配不上再匹配数据库中的固定业务规则,加快了响应速度;通过解析Http请求头得到目标用户标记,提高了安全性。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种软件产品灰度发布方法,所述软件产品灰度发布方法应用于Nginx,所述Nginx用于实现七层负载均衡服务,所述Nginx中嵌入功能定制脚本;所述方法包括:获取访问软件产品的Http请求,所述Http请求携带有Http请求头;调用所述功能定制脚本根据所述Http请求头,确定目标用户标记;调用所述功能定制脚本检查所述目标用户标记在目标缓存中是否存在;当所述目标用户标记在所述目标缓存中存在时,调用所述功能定制脚本从目标缓存中获取与所述目标用户标记对应的目标用户分流规则,根据所述目标用户分流规则确定目标软件产品的第一应用服务路径,将所述Http请求代理到所述第一应用服务路径对应的应用服务器;当所述目标用户标记在所述目标缓存中不存在时,调用所述功能定制脚本获取固定业务规则,根据所述目标用户标记和所述固定业务规则确定所述目标软件产品的第二应用服务路径,将所述Http请求代理到所述第二应用服务路径对应的应用服务器。

上述执行的软件产品灰度发布方法,通过调用功能定制脚本根据Http请求头确定目标用户标记,然后再调用功能定制脚本检查目标用户标记在目标缓存中是否存在,当目标用户标记在目标缓存中存在时将Http请求代理到目标软件产品的第一应用服务路径对应的应用服务器,当目标用户标记在目标缓存中不存在时将Http请求代理到目标软件产品的第二应用服务路径对应的应用服务器,从而实现了根据用户角色维度进行灰度发布;通过优先匹配目标缓存,匹配不上再匹配数据库中的固定业务规则,加快了响应速度;通过解析Http请求头得到目标用户标记,提高了安全性。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

相关技术
  • 软件产品灰度发布方法、装置、设备及介质
  • 基于灰度数据库的产品灰度发布方法、装置、设备和介质
技术分类

06120112340593