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

请求路由方法和请求路由系统

文献发布时间:2024-07-23 01:35:21


请求路由方法和请求路由系统

技术领域

本申请涉及计算机技术领域,尤其涉及一种请求路由方法和请求路由系统。

背景技术

灰度发布是指黑与白之间,能够平滑过度的一种发布方式,作为软件发布策略,能够帮助开发团队在保证稳定性的前提下快速发布新版本,即让一部分用户体验升级后的灰度版本(即最新版本),一部分用户继续使用原本的线上版本,再逐步扩大新版本的覆盖范围。

实际中,通过将客户端发送的请求路由至不同版本的服务,以实现客户端对不同版本静态资源的访问以及不同版本接口的调用,以此完成灰度发布。

随着网页和小程序结合的应用场景越来越多,如何同时对小程序和网页进行灰度发布,成为亟待解决的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种请求路由方法和请求路由系统,以此实现同时对小程序和网页的灰度发布。

一种请求路由方法,应用于客户端,所述方法包括:

在调用后端接口之前,发送染色接口调用请求至代理服务器,使所述代理服务器将所述染色接口调用请求转发至后端线上服务;

接收所述代理服务器转发的染色标记,所述染色标记为所述后端线上服务根据所述染色接口调用请求所确定的;

将所述染色标记添加至待发送的目标请求中,所述目标请求包括后端接口请求;

将添加了所述染色标记的目标请求发送至所述代理服务器,使所述代理服务器根据所述染色标记和所述目标请求的类型,将所述目标请求转发至对应的目标服务;

接收所述代理服务器转发的目标数据,所述目标数据为所述目标服务响应于所述目标请求获取的数据。

在本申请实施例中,所述发送染色接口调用请求至代理服务器之前,还包括:

判断触发染色接口调用请求的前端服务是否为网页,若为网页,则生成包含用户信息和前端服务标识的染色接口调用请求;

所述染色标记为所述后端线上服务根据所述用户信息和所述前端服务标识所确定的。

在本申请实施例中,所述发送染色接口调用请求至代理服务器之前,还包括:

判断触发染色接口调用请求的前端服务是否为小程序,若为小程序,则生成包含用户信息、前端服务标识和用户对应的前端资源版本的染色接口调用请求;

所述染色标记为所述后端线上服务根据所述用户信息、所述前端服务标识和所述前端资源版本所确定的。

一种请求路由方法,应用于代理服务器,所述方法包括:

接收客户端在调用后端接口之前发送的染色接口调用请求;

发送所述染色接口调用请求至后端线上服务;

接收所述后端线上服务根据所述染色接口调用请求确定的染色标记;

发送所述染色标记至所述客户端,使所述客户端将所述染色标记添加至待发送的目标请求,所述目标请求包括后端接口请求;

接收所述客户端发送的添加了所述染色标记的目标请求;

根据所述染色标记和所述目标请求的类型,将所述目标请求发送至对应的目标服务,使所述目标服务响应于所述目标请求发送目标数据至所述代理服务器;

将所述目标服务发送的目标数据转发至所述客户端。

在本申请实施例中,所述根据所述染色标记和所述目标请求的类型,将所述目标请求发送至对应的目标服务,使所述目标服务响应于所述目标请求发送目标数据至所述代理服务器,包括:

确定所述目标请求的类型;

若所述目标请求为用于请求前端资源的第一类请求,则将所述染色标记对应的前端服务作为所述目标请求对应的目标服务,将所述目标请求发送至所述染色标记对应的前端服务,使所述染色标记对应的前端服务响应于所述目标请求发送目标数据至所述代理服务器;

若所述目标请求为用于调用后端接口的第二类请求,则将所述染色标记对应的后端服务作为所述目标请求对应的目标服务,将所述目标请求发送至所述染色标记对应的后端服务,使所述染色标记对应的后端服务响应于所述目标请求发送目标数据至所述代理服务器。

一种请求路由方法,应用于部署有后端线上服务的服务器,所述方法包括:

接收代理服务器转发的染色接口调用请求;

根据所述染色接口调用请求,确定染色标记;

发送所述染色标记至所述代理服务器,使所述代理服务器将所述染色标记转发至客户端,并使所述客户端将所述染色标记添加至待发送的目标请求中,并使所述代理服务器根据所述染色标记和所述目标请求的类型,将所述目标请求发送至对应的目标服务。

在本申请实施例中,所述根据所述染色接口调用请求,确定染色标记,包括:

判断所述染色接口调用请求中前端服务标识对应的前端服务是否为小程序;

若所述前端服务标识对应的前端服务为小程序,则判断所述染色接口调用请求中用户对应的前端资源版本是否为灰度版本;

若所述前端资源版本为灰度版本,则将所述染色标记确定为灰度标记;

若所述前端资源版本为线上版本,则获取小程序灰度开关的状态,以根据所述小程序灰度开关的状态和所述染色接口调用请求中的用户信息确定所述染色标记;

若所述前端服务标识对应的前端服务不为小程序,则基于预设分流策略和所述染色接口请求中的用户信息,确定所述染色标记。

在本申请实施例中,所述根据所述小程序灰度开关的状态和所述染色接口调用请求中的用户信息确定所述染色标记,包括:

若所述小程序灰度开关的状态为关闭状态,则将所述染色标记确定为线上标记;

若所述小程序灰度开关的状态为开启状态,则基于预设分流策略和所述用户信息,确定所述染色标记。

在本申请实施例中,所述判断所述染色接口调用请求中的前端服务标识对应的前端服务是否为小程序之前,包括:

获取业务灰度发布开关的状态;

若所述业务灰度发布开关的状态为开启状态,则执行所述判断所述染色接口调用请求中的前端服务标识对应的前端服务是否为小程序的步骤;

若所述业务灰度发布开关为关闭状态,则将所述染色标记确定为线上标记。

一种请求路由系统,包括客户端、代理服务器和部署有目标服务的服务器,所述目标服务中包括后端线上服务;

所述客户端在调用后端接口之前,发送染色接口调用请求至所述代理服务器;

所述代理服务器将所述染色接口调用请求转发至所述后端线上服务;

所述后端线上服务根据所述染色接口调用请求确定染色标记,并发送所述染色标记至所述代理服务器;

所述代理服务器将所述染色标记转发至所述客户端;

所述客户端接收所述染色标记并将所述染色标记添加至待发送的目标请求,所述目标请求包括后端接口请求;

所述客户端将添加了所述染色标记的目标请求发送至所述代理服务器;

所述代理服务器根据所述染色标记和所述目标请求的类型,将所述目标请求转发至对应的目标服务;

所述目标请求对应的目标服务响应于所述目标请求获取目标数据,并将所述目标数据发送至所述代理服务器;

所述代理服务器转发所述目标数据至所述客户端。

综上,本申请提出了一种请求路由方法和请求路由系统,该方法中客户端在网页或小程序调用后端接口之前,发送染色接口调用请求至代理服务器,由代理服务器将染色接口调用请求转发至后端线上服务,以在未灰度的线上环境根据染色接口调用请求确定染色标记,代理服务器将该染色标记转发至客户端,客户端在发送任意目标请求之前,将该染色标记添加至目标请求中,如添加至后端接口请求或前端资源请求中,以便代理服务器根据目标请求中的染色标记和目标请求的类型,将该目标请求路由至对应的目标服务上,由目标服务响应该目标请求获取请求的目标数据,并将目标数据发送至代理服务器,再由代理服务器转发至客户端。本申请在小程序或网页调用后端接口之前,客户端均通过发送染色接口调用请求刷新染色标记,在小程序或网页触发的目标请求中添加最新一次刷新的染色标记,利用该染色标记标示请求访问的资源版本或接口版本,以便代理服务器根据染色标记将目标请求路由至不同版本的服务,基于该方法可同时实现对客户端小程序的灰度发布和网页的灰度发布。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是根据本申请一示例性实施例示出的一种请求路由方法的流程图;

图2是根据本申请一示例性实施例示出的一种请求路由方法的整体流程示意图;

图3是根据本申请另一示例性实施例示出的一种请求路由方法的流程图;

图4是根据本申请另一示例性实施例示出的一种请求路由方法的流程图;

图5是根据本申请另一示例性实施例示出的一种请求路由方法的流程图;

图6是根据本申请另一示例性实施例示出的一种请求路由方法的流程图;

图7是根据本申请另一示例性实施例示出的一种请求路由方法的流程图;

图8是根据本申请一示例性实施例示出的一种请求路由系统的框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例,通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1是根据本申请一示例性实施例示出的一种请求路由方法的流程图,如图1所示,该请求路由方法包括以下步骤:

S101,在调用后端接口之前,发送染色接口调用请求至代理服务器,使所述代理服务器将所述染色接口调用请求转发至后端线上服务。

客户端(如移动终端、PC端等)上针对同一类型的业务可以通过小程序和网页两种途径面向用户开展。客户端响应于用户在小程序或网页中的操作发送请求来获取静态资源数据,或者通过请求接口调用来获取相关参数等数据,以根据获取到的数据更新小程序页面或网页页面等。

客户端在小程序或网页请求后端接口调用时,在向代理服务器发送后端接口请求之前即调用后端接口请求之前,先发送染色接口调用请求至代理服务器,来刷新用户当前的染色标记。

代理服务器接收到客户端发送的染色接口调用请求后,将该染色接口调用请求转发至后端线上服务。

该后端线上服务可以部署在后端服务器。

后端线上服务根据染色接口调用请求,确定该染色接口调用请求对应的用户的染色标记;并将该染色标记返回代理服务器。由代理服务器将该染色标记转发至客户端。

客户端接收到新的染色标记后,将该染色标记进行存储。例如将染色标记和用户信息以键值对的关系进行存储。

客户端在向代理服务器发送任意目标请求之前,均将该染色标记添加至目标请求中,然后将添加了染色标记的目标请求发送至代理服务器。

其中染色标记用于标示请求所访问的服务版本,即某一个请求访问的是未灰度的线上版本服务还是灰度版本服务。

同样的,目标服务可分为前端服务和后端服务,前端服务用于提供静态资源服务,后端服务用于提供接口调用服务;前端服务和后端服务可以部署在不同的服务器中,如部署有前端服务的前端服务器和部署有后端服务的后端服务器。

进一步的,可根据对应代码版本的不同,将前端服务分为前端线上服务和前端灰度服务;将后端服务分为后端线上服务和后端灰度服务。

为指引请求发送至不同版本的服务,染色标记分为灰度标记和线上标记,灰度标记对应的前端服务为前端灰度服务,线上标记对应的前端服务为前端线上服务,灰度标记对应的后端服务为后端灰度服务,线上标记对应的后端服务为后端线上服务。

需要说明的是,本申请所提及的线上环境、线上服务等名词中的“线上”可理解为与灰度对立的非灰度或未灰度。例如当前运行的代码版本为1.0版本,而升级后的代码版本为2.0版本,在对该代码进行灰度发布时,灰度版本或提供灰度服务的是2.0最新版本,而1.0版本即为线上服务的版本。

其中,前端线上服务和前端灰度服务可通过容器化部署在同一个前端服务器中,或者分别部署在两个前端服务器中。

后端线上服务和后端灰度服务也可通过容器化部署在同一个后端服务器中,或者分别部署在两个后端服务器中,或者同时部署在一个后端服务器中但为灰度版本的服务设置逻辑分流标识以实现线上版本和灰度版本服务之间的逻辑分离。

S102,接收所述代理服务器转发的染色标记,所述染色标记为所述后端线上服务根据所述染色接口调用请求所确定的。

在后端线上服务根据染色接口调用请求确定染色标记并返回染色标记至代理服务器后,代理服务器转发该染色标记至客户端。

客户端接收代理服务器转发的染色标记,并将该染色标记进行存储。在下一次染色标记刷新之前,均利用该染色标记来标识目标请求。

S103,将所述染色标记添加至待发送的目标请求中,所述目标请求包括后端接口请求。

在发送任意目标请求之前,将最近一次刷新的染色标记添加至目标请求中。

客户端发送的目标请求可以为后端接口请求,还可以为前端资源请求。

结合上述步骤,可以做以下理解:客户端在调用任意后端接口之前先进行染色接口的调用,通过调用染色接口来刷新当前用户的染色标记;

在调用该后端接口以及请求前端资源时,将该染色标记添加至后端接口请求和前端资源请求中,以利用该染色标记来标示该请求要访问那个版本的后端服务或前端服务。

S104,将添加了所述染色标记的目标请求发送至所述代理服务器,使所述代理服务器根据所述染色标记和所述目标请求的类型,将所述目标请求转发至对应的目标服务。

客户端将添加了染色标记的目标请求发送至代理服务器;

代理服务器接收到目标请求,根据目标请求的类型和目标请求中的染色标记确定需要将该目标请求发送至前端服务或后端服务,以及确定发送至线上服务或灰度服务。

即根据目标请求的类型以及目标请求中的染色标记,确定要将该目标请求发送至前端灰度服务或者前端线上服务或者后端灰度服务或者后端线上服务。其中,目标请求的类型可通过解析目标请求所请求的内容确定,例如根据目标请求中写入的后端接口API可确定该目标请求的类型为后端接口请求,根据目标请求中写入的前端资源存储地址可确定该目标请求的类型为前端资源请求。或者在请求前端资源的目标请求中添加标识1,在请求后端接口的目标请求中添加标识2,以通过目标请求中的类型标识确定该目标请求的类型,等等。

目标服务响应于目标请求获取目标请求想要获取或访问的目标数据。

例如,若目标请求为前端资源请求,且该目标请求的染色标记为灰度标记,则代理服务器将该目标请求转发至前端灰度服务,前端灰度服务响应于该目标请求获取对应的灰度版本的静态资源或静态文件,作为目标数据,并将目标数据返回至代理服务器,由代理服务器转发至客户端。

若目标请求为前端资源请求,且该目标请求的染色标记为非灰度标记,如线上标记,则代理服务器将该目标请求转发至前端线上服务,前端线上服务响应于该目标请求获取对应非灰度的线上版本的静态资源或静态文件,作为目标数据,并将目标数据返回至代理服务器,由代理服务器转发至客户端。

若目标请求为后端接口请求,且该目标请求的染色标记为灰度标记,则可有代理服务器将该目标请求转发至后端灰度服务。

或者面对以逻辑隔离形式部署的后端灰度服务和后端线上服务时,可由代理服务器根据后端接口请求中的染色标记,将在带有灰度标记的后端接口请求的请求头中添加逻辑分流标记,并将后端接口请求甚至染色接口调用请求同一经由API网关转发至请求对应的目标服务。其中,API网关通过识别请求中的逻辑分流标记,将带有逻辑分流标记的请求发送至后端灰度服务,不带有逻辑分流标记的请求发送至后端线上服务。

S105,接收所述代理服务器转发的目标数据,所述目标数据为所述目标服务响应于所述目标请求获取的数据。

代理服务器接收到目标服务返回的目标数据后,将该目标数据转发至客户端。例如,客户端可根据该目标数据向用户展示灰度版本的页面或者为灰度的线上版本的页面。

综上,本申请提出了一种请求路由方法中客户端在网页或小程序调用后端接口之前,发送染色接口调用请求至代理服务器,由代理服务器将染色接口调用请求转发至后端线上服务,以在未灰度的线上环境根据染色接口调用请求确定染色标记,代理服务器将该染色标记转发至客户端,客户端在发送任意目标请求之前,将该染色标记添加至目标请求中,如添加至后端接口请求或前端资源请求中,以便代理服务器根据目标请求中的染色标记和目标请求的类型,将该目标请求路由至对应的目标服务上,由目标服务响应该目标请求获取请求的目标数据,并将目标数据发送至代理服务器,再由代理服务器转发至客户端。本申请在小程序或网页调用后端接口之前,客户端均通过发送染色接口调用请求刷新染色标记,在小程序或网页触发的目标请求中添加最新一次刷新的染色标记,利用该染色标记标示请求访问的资源版本或接口版本,以便代理服务器根据染色标记将目标请求路由至不同版本的服务,基于该方法可同时实现对客户端小程序的灰度发布和网页的灰度发布。

在上述实施例的基础上,染色接口调用请求中可以包括用户信息和前端服务标识,该前端服务标识用于表示触发该染色接口调用请求的前端服务是小程序还是网页。

可选的,客户端可根据前端发出接口调用指令,判断触发染色接口调用的前端服务为网页或小程序。若为小程序,客户端在生成染色接口调用请求时,设置表示前端服务为小程序的前端服务标识,获取用户信息和前端资源版本,将用户信息、前端服务标识和用户对应的前端资源版本添加至染色接口调用请求中。

后端线上服务根据用户信息、前端服务标识和前端资源版本确定染色标记。

在一些实施例中,若前端服务为网页,则客户端在生成染色接口调用请求时,设置表示前端服务为网页的前端服务表示,然后将用户信息和前端服务标识添加至染色接口调用请求中即可。

后端线上服务根据染色接口调用请求中的用户信息和前端服务标识确定小程序用户的染色标记。

现结合下述实施例描述后端线上服务进行染色标记确定的过程:

首先,需要说明的是,小程序自身具有灰度能力,也就是说小程序可对进入小程序的用户进行划分,若某个用户被划分为灰度用户,便在该用户对应的资源配置信息中将该用户对应的前端资源版本设置为灰度版本,若某个用户被划分为线上用户,便在该用户对应的资源配置信息中将该用户对应的前端资源版本设置为线上版本。

后端线上服务接收到代理服务器转发的染色接口调用请求之后,先判断染色接口调用请求中前端服务标识对应的前端服务是否为小程序;

其一、若前端服务标识对应的前端服务为小程序,则进一步判断染色接口调用请求中用户对应的前端资源版本是否为灰度版本;若前端资源版本为灰度版本,则可认为该用户为小程序划分的灰度用户,则将该用户对应的染色标记确定为灰度标记,以便客户端在访问后端接口时将该灰度标记添加至后端接口请求中,使得代理服务器将该后端接口请求路由至后端灰度服务,以此实现小程序前后端灰度的统一;避免在运行前端线上版本的静态文件时调用后端灰度接口来获取参数,或者在运行灰度版本的静态文件时调用线上接口来获取参数的情况。

若前端资源版本为非灰度的线上版本,则可认为该用户为小程序划分的非灰度用户或者说线上用户,针对这种情况,需要进一步确定当前灰度发布策略中是否开启了对小程序的灰度,具体可通过设置小程序灰度开关来标示是否开启对小程序的灰度。若小程序灰度开关为开启状态,则认为当前开启了对小程序的灰度,那么针对该线上用户可基于其用户信息和预设的分流策略为该线上用户设置染色标记。

其二、若前端服务标识对应的前端服务不为小程序,如前端服务标识对应的前端服务为网页,则基于预设分流策略和染色接口请求中的用户信息确定染色标记。

在上述实施例的基础上,上述预设分流策略可基于AB实验平台实现。进一步的,可在AB实验平台上配置需要的分流规则。

则上述基于预设分流策略和染色接口调用请求中的用户信息确定染色标记可通过以下过程实现:后端线上服务调用AB实验平台的分流接口,将用户信息传入分流接口,AB实验平台将返回分组信息,如用户信息对应于线上组或灰度组,后端线上服务根据分组信息确定用户信息对应的染色标记。

在一些实施例中,代理服务器和部署有后端服务的服务器之间可设置API网关,由API网关负责代理服务器和部署后端服务的服务器之间的请求的转发和目标数据的转发。

对应的,在API网关接收到代理服务器发送的染色接口调用请求时,可解析染色接口调用请求中的cookie信息,以进行用户登录态的校验,若用户已登录,则从cookie信息中提取用户身份标识,并将用户身份标识添加至染色接口调用请求的用户信息中。

在一些实施例中,可以先判断用户信息中是否存在用户身份标识;若存在用户身份标识,则将用户身份标识传入分流接口,以根据用户身份标识和预设的分流策略确定染色标记;若不存存在用户身份标识,则将所述设备标识传入分流接口,以根据设备标识和预设的分流策略确定染色标记。

此外,可在后端线上服务的染色逻辑中设置一个参数来标示总的灰度发布是否开启,例如设置业务灰度发布开关,若业务灰度发布开关的状态为开启状态,则表示开启了对整个业务的灰度发布,若业务灰度发布开关的状态为关闭则表示未开启对整个业务的灰度发布。

后端线上服务在判断染色接口调用请求中前端服务标识对应的前端服务是否为小程序之前,可先判断业务灰度发布开关的状态,若业务灰度发布开关的状态为开启状态,则执行判断染色接口调用请求中前端服务标识对应的前端服务是否为小程序的步骤,即基于染色逻辑确定用户的染色标记;

若业务灰度发布开关的状态为关闭状态,则直接将染色标记确定为线上标记,即所有用户均访问线上版本的资源或接口。

此外,若业务灰度发布开关开启,还可以在执行“判断染色接口调用请求中前端服务标识对应的前端服务是否为小程序”之前设置“根据用户信息判断用户是否为预设灰度用户”的步骤。

例如,基于企业内部人员的用户身份标识或者企业设备的设备标识,将企业内部用户确定为小程序或网页访问的灰度用户,如设置灰度白名单,在灰度白名单中写入用户身份标识或设备标识。代理服务器可根据用户信息中的用户身份标识或设备标识确定该染色接口调用请求对应的用户是否为灰度白名单限定的灰度用户,若是,则直接为该用户的染色标记确定为灰度标记,若否则进一步执行判断前端服务标识对应的前端服务是否为小程序的步骤。

本申请可应用于同时对H5(即网页)和本身具有灰度功能的小程序进行灰度发布的场景中,基于图2进行客户端、代理服务器、API网关与部署有目标服务的服务器之间通过路由请求进行灰度发布的过程。

如图2所示,客户端(小程序和H5)在调用任何一个后端接口时触发染色接口的调用,即发送染色接口调用请求,在染色接口调用请求中写入前端服务标识(表示前端服务为小程序或H5),用户信息(此时用户信息只包括设备标识)以及当前端服务标识对应的前端服务为小程序时,将前端资源版本也写入染色接口调用请求中。将染色接口调用请求经由代理服务器(如NGINX)转发至API网关,API网关进行用户登录态校验,若用户已登录从请求头的cookie信息中获取用户身份标识UID,并将用户身份标识写入用户信息中。

API网关将染色接口调用请求转发至后端线上服务,后端线上服务中染色接口对应的逻辑执行以下过程:

首先,判断业务灰度发布开关的状态是否为开启状态,若为关闭状态则将染色标记确定为线上标记,并经由API网关和代理服务器将染色标记返回至客户端;

若为开启状态,则进一步根据用户信息判断用户是否为灰度白名单用户,若是,则将该用户的染色标记确定为灰度标记,并经由API网关和代理服务器将染色标记返回至客户端;

若该用户不是灰度白名单用户,则进一步判断前端服务标识对应的前端服务是否为小程序,若前端服务标识对应的前端服务不为小程序,则进入根据用户信息和预设分流策略确定染色标记的步骤,即将用户信息中的用户身份标识或设备标识传入AB实验平台,AB实验平台返回分组信息,后端线上服务根据分组信息确定用户信息对应的染色标记,后端线上服务将染色标记经由API网关和代理服务器发送返回至客户端;

若前端服务标识对应的前端服务为小程序,则进一步判断前端资源版本是否为灰度版本,若前端资源版本为灰度版本,则将染色标记确定为灰度标记,并经由API网关和代理服务器将染色标记返回至客户端;

若前端资源版本不为灰度版本,则进一步判断小程序灰度开关是否开启,若小程序灰度开关处于关闭状态,则将染色标记确定为线上标记,并经由API网关和代理服务器将染色标记返回至客户端;

若小程序灰度开关处于开启状态,则进入根据用户信息和预设分流策略确定染色标记的步骤,即将用户信息中的用户身份标识或设备标识传入AB实验平台,AB实验平台返回分组信息,后端线上服务根据分组信息确定用户信息对应的染色标记,后端线上服务将染色标记经由API网关和代理服务器发送返回至客户端;。

客户端在接收到染色标记之后,将染色标记进行缓存。

在发送目标请求(目标请求为前端资源请求或后端接口请求)时,将染色标记添加至待发送的请求中,所述代理服务器接收到的目标请求是否为前端资源请求,若为前端资源请求,根据该前端资源请求中是否带有灰度标记,将前端资源请求发送至前端灰度服务或前端线上服务;

若接收到的目标请求为后端接口请求,则将染色标记为灰度标记的目标请求的请求头中添加逻辑分流标记(dubbo_tag),并将目标请求转发至API网关,API网关判断目标请求的请求投中是否有逻辑分流标记,若有,则将目标请求发送至后端灰度服务,若没有则将目标请求发送至后端线上服务。

本申请引入AB实验平台,通过AB实验复杂的分组及分流算法,对用户进行精准的分组确定用户对应的染色标记,让用户能够完全按照预期进行分流,从而更能达成灰度目标。

同时,在获取到用户染色标记之后,用户访问的前端资源和后端接口都是根据该染色标记进行分流,从而实现用户前后端同时灰度或者同时不灰度,从而解决前后端兼容问题,此外,由于小程序具有自己的灰度功能,游离在正常的染色逻辑之外,即H5是先有染色标记,再访问对应版本的资源,而小程序是先有配置灰度版本的前端资源,再处理染色标记。所以针对小程序,增加了前端资源版本号的参数,以及增加判断小程序灰度是否需开启的逻辑判断来保障小程序前后端灰度的一致性。此外,本申请将染色接口调用从灰度分流中移除,即使得染色接口调用请求只能请求到线上环境,以此避免频繁多次的染色接口调用影响后端灰度环境。

本申请提出了一种请求路由方法,应用于代理服务器。

图3是根据本申请另一示例性实施例示出的一种请求路由方法的流程图,如图3所示,该请求路由方法包括以下步骤:

S301,接收客户端在调用后端接口之前发送的染色接口调用请求;

S302,发送所述染色接口调用请求至后端线上服务;

S303,接收所述后端线上服务根据所述染色接口调用请求确定的染色标记;

S304,发送所述染色标记至所述客户端,使所述客户端将所述染色标记添加至待发送的目标请求,所述目标请求包括后端接口请求;

S305,接收所述客户端发送的添加了所述染色标记的目标请求;

S306,根据所述染色标记和所述目标请求的类型,将所述目标请求发送至对应的目标服务,使所述目标服务响应于所述目标请求发送目标数据至所述代理服务器;

S307,将所述目标服务发送的目标数据转发至所述客户端。

在上述实施例的基础上,如图4所示,上述步骤S306中“所述根据所述染色标记和所述目标请求的类型,将所述目标请求发送至对应的目标服务,使所述目标服务响应于所述目标请求发送目标数据至所述代理服务器”,包括以下步骤:

S401,确定所述目标请求的类型;

目标请求的类型可以根据目标请求的作用来区分,例如将请求前端资源的目标请求作为第一类请求,将调用后端接口的目标请求作为第二类请求。

S402,若所述目标请求为用于请求前端资源的第一类请求,则将所述染色标记对应的前端服务作为所述目标请求对应的目标服务,将所述目标请求发送至所述染色标记对应的前端服务,使所述染色标记对应的前端服务响应于所述目标请求发送目标数据至所述代理服务器;

染色标记可以分为线上标记和灰度标记。

则当目标请求为用于前端资源请求的第一类请求时,该线上标记对应的前端服务为前端线上服务,灰度标记对应的前端服务为前端灰度服务。

S403,若所述目标请求为用于调用后端接口的第二类请求,则将所述染色标记对应的后端服务作为所述目标请求对应的目标服务,将所述目标请求发送至所述染色标记对应的后端服务,使所述染色标记对应的后端服务响应于所述目标请求发送目标数据至所述代理服务器。

当目标请求为用于调用后端接口第二类请求时,灰度标记对应的后端服务为后端灰度服务,线上标记对应的后端服务为后端线上服务。

需要说明的是,本申请实施例的实现方式与上述实施例的实现方式相同,此处不再赘述。

本申请提出了一种请求路由方法,该方法中客户端在网页或小程序调用后端接口之前,发送染色接口调用请求至代理服务器,由代理服务器将染色接口调用请求转发至后端线上服务,以在未灰度的线上环境根据染色接口调用请求确定染色标记,代理服务器将该染色标记转发至客户端,客户端在发送任意目标请求之前,将该染色标记添加至目标请求中,如添加至后端接口请求或前端资源请求中,以便代理服务器根据目标请求中的染色标记和目标请求的类型,将该目标请求路由至对应的目标服务上,由目标服务响应该目标请求获取请求的目标数据,并将目标数据发送至代理服务器,再由代理服务器转发至客户端。本申请在小程序或网页调用后端接口之前,客户端均通过发送染色接口调用请求刷新染色标记,在小程序或网页触发的目标请求中添加最新一次刷新的染色标记,利用该染色标记标示请求访问的资源版本或接口版本,以便代理服务器根据染色标记将目标请求路由至不同版本的服务,基于该方法可同时实现对客户端小程序的灰度发布和网页的灰度发布。

本申请提出一种请求路由方法,应用于部署有后端线上服务的服务器。

图5是根据本申请另一示例性实施例示出的一种请求路由方法的流程图,如图5所示,该请求路由方法包括以下步骤:

S501,接收代理服务器转发的染色接口调用请求;

S502,根据所述染色接口调用请求,确定染色标记;

S503,发送所述染色标记至所述代理服务器,使所述代理服务器将所述染色标记转发至客户端,并使所述客户端将所述染色标记添加至待发送的目标请求中,并使所述代理服务器根据所述染色标记和所述目标请求的类型,将所述目标请求发送至对应的目标服务。

在本申请实施例中,如图6所示,所述根据所述染色接口调用请求,确定染色标记,包括:

S601,判断所述染色接口调用请求中前端服务标识对应的前端服务是否为小程序;

S602,若所述前端服务标识对应的前端服务为小程序,则判断所述染色接口调用请求中用户对应的前端资源版本是否为灰度版本;

S603,若所述前端资源版本为灰度版本,则将所述染色标记确定为灰度标记;

S604,若所述前端资源版本为线上版本,则获取小程序灰度开关的状态,以根据所述小程序灰度开关的状态和所述染色接口调用请求中的用户信息确定所述染色标记;

S605,若所述前端服务标识对应的前端服务不为小程序,则基于预设分流策略和所述染色接口请求中的用户信息,确定所述染色标记。

在本申请实施例中,上述步骤S604中“所述根据所述小程序灰度开关的状态和所述染色接口调用请求中的用户信息确定所述染色标记”,包括:

若所述小程序灰度开关的状态为关闭状态,则将所述染色标记确定为线上标记;

若所述小程序灰度开关的状态为开启状态,则基于预设分流策略和所述用户信息,确定所述染色标记。

在本申请实施例中,如图7所示,上述步骤S601中“所述判断所述染色接口调用请求中前端服务标识对应的前端服务是否为小程序”之前,包括:

S701,获取业务灰度发布开关的状态;

S702,若所述业务灰度发布开关的状态为开启状态,则执行所述判断所述染色接口调用请求中前端服务标识对应的前端服务是否为小程序的步骤;

S703,若所述业务灰度发布开关为关闭状态,则将所述染色标记确定为线上标记。

需要说明的是,本申请实施例的实施方式与上述实施例相同,此处不再赘述。

本申请提出了一种请求路由方法,该方法中客户端在网页或小程序调用后端接口之前,发送染色接口调用请求至代理服务器,由代理服务器将染色接口调用请求转发至后端线上服务,以在未灰度的线上环境根据染色接口调用请求确定染色标记;在确定染色标记的过程中针对小程序用户,结合用户信息、对前端资源版本和灰度版本的比对、对小程序灰度是否需开启的判断以及预设的分流策略确定小程序用户的染色标记,以适应小程序自身的灰度功能,保障小程序前后端灰度统一;同时针对网页用户,结合用户信息和预设的分流策略确定网页用户的染色标记。代理服务器将该染色标记转发至客户端,客户端在发送任意目标请求之前,将该染色标记添加至目标请求中,如添加至后端接口请求或前端资源请求中,以便代理服务器根据目标请求中的染色标记和目标请求的类型,将该目标请求路由至对应的目标服务上,由目标服务响应该目标请求获取请求的目标数据,并将目标数据发送至代理服务器,再由代理服务器转发至客户端。本申请在小程序或网页调用后端接口之前,客户端均通过发送染色接口调用请求刷新染色标记,在小程序或网页触发的目标请求中添加最新一次刷新的染色标记,利用该染色标记标示请求访问的资源版本或接口版本,以便代理服务器根据染色标记将目标请求路由至不同版本的服务,本申请为小程序和网页的灰度发布构建了一套统一的染色逻辑框架以及包含该染色逻辑的请求路由方法,实现对小程序和网页的同时灰度。

本申请提出一种请求路由系统,如图8所示,系统800包括客户端801、代理服务器802和部署有目标服务的服务器803,所述目标服务中包括后端线上服务;

目标服务可以结合服务类型(分为前端服务和后端服务)和服务版本(分为灰度版本和线上版本)划分为前端灰度服务、前端线上服务、后端灰度服务和后端线上服务。

前端灰度服务和前端线上服务可容器化部署在一个前端服务器中,或者分别部署在两个前端服务器中,而后端灰度服务和后端线上服务可容器化部署在一个后端服务器中,或者以逻辑隔离的方式部署在同一个后端服务器中,或者分别部署在两个前端服务器中等多种部署方式,因此本申请部署有目标服务的服务器可根据需要设置多个。

所述客户端在调用后端接口之前,发送染色接口调用请求至所述代理服务器;

所述代理服务器将所述染色接口调用请求转发至所述后端线上服务;

所述后端线上服务根据所述染色接口调用请求确定染色标记,并发送所述染色标记至所述代理服务器;

所述代理服务器将所述染色标记转发至所述客户端;

所述客户端接收所述染色标记并将所述染色标记添加至待发送的目标请求,所述目标请求包括后端接口请求;

所述客户端将添加了所述染色标记的目标请求发送至所述代理服务器;

所述代理服务器根据所述染色标记和所述目标请求的类型,将所述目标请求转发至对应的目标服务;

所述目标请求对应的目标服务响应于所述目标请求获取目标数据,并将所述目标数据发送至所述代理服务器;

所述代理服务器转发所述目标数据至所述客户端。

本申请实施例的实施方式与上述实施例的实施方式相同,此处不再赘述。

本申请提出了一种请求路由系统,该系统中客户端在网页或小程序调用后端接口之前,发送染色接口调用请求至代理服务器,由代理服务器将染色接口调用请求转发至后端线上服务,以在未灰度的线上环境根据染色接口调用请求确定染色标记,代理服务器将该染色标记转发至客户端,客户端在发送任意目标请求之前,将该染色标记添加至目标请求中,如添加至后端接口请求或前端资源请求中,以便代理服务器根据目标请求中的染色标记和目标请求的类型,将该目标请求路由至对应的目标服务上,由目标服务响应该目标请求获取请求的目标数据,并将目标数据发送至代理服务器,再由代理服务器转发至客户端。本申请在小程序或网页调用后端接口之前,客户端均通过发送染色接口调用请求刷新染色标记,在小程序或网页触发的目标请求中添加最新一次刷新的染色标记,利用该染色标记标示请求访问的资源版本或接口版本,以便代理服务器根据染色标记将目标请求路由至不同版本的服务,基于该系统可同时实现对客户端小程序的灰度发布和网页的灰度发布。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

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

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

相关技术
  • 用于为路由发现过程生成扩展的路由请求消息和扩展的路由应答消息的方法
  • 用于为路由发现过程生成扩展的路由请求消息和扩展的路由应答消息的方法
技术分类

06120116679617